1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-12 09:11:05 -09:00

Fixed 1,5 years old bug with battlefield scroll missing. Also removed unnecessary gap.

This commit is contained in:
magenoxx 2012-05-21 21:55:04 +04:00
parent ab4823a4c2
commit d15499748d
7 changed files with 102 additions and 79 deletions
Mage.Client/src/main/java
Mage.Common/src/mage/interfaces/plugin

View file

@ -42,6 +42,8 @@ import mage.client.util.Config;
import mage.view.PermanentView;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
@ -62,16 +64,23 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
protected Map<UUID, PermanentView> battlefield;
private Dimension cardDimension;
private JPanel jPanel;
private JScrollPane jScrollPane;
private int width;
/** Creates new form BattlefieldPanel */
public BattlefieldPanel(JScrollPane jScrollPane) {
ui.put("jScrollPane", jScrollPane);
public BattlefieldPanel() {
ui.put("battlefieldPanel", this);
initComponents();
addComponentListener(new ComponentAdapter(){
@Override
public void componentResized(ComponentEvent e) {
int width = e.getComponent().getWidth();
int height = e.getComponent().getHeight();
BattlefieldPanel.this.jScrollPane.setSize(width, height);
BattlefieldPanel.this.width = width;
sortLayout();
}
});
@ -124,7 +133,11 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
//TODO: review sorting stuff
public void sortLayout() {
Plugins.getInstance().sortPermanents(ui, permanents.values());
int height = Plugins.getInstance().sortPermanents(ui, permanents.values());
BattlefieldPanel.this.jPanel.setPreferredSize(new Dimension(width - 30, height));
this.jScrollPane.repaint();
this.jScrollPane.revalidate();
if (battlefield == null) {return;}
for (PermanentView permanent: battlefield.values()) {
@ -149,7 +162,8 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
}
permanents.put(permanent.getId(), perm);
BattlefieldPanel.this.add(perm, 10);
//BattlefieldPanel.this.jPanel.add(perm, 10);
this.jPanel.add(perm);
if (!Plugins.getInstance().isCardPluginLoaded()) {
moveToFront(perm);
perm.update(permanent);
@ -200,12 +214,12 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
}
private void removePermanent(UUID permanentId, final int count) {
for (Component c: this.getComponents()) {
for (Component c: this.jPanel.getComponents()) {
final Component comp = c;
if (comp instanceof Permanent) {
if (((Permanent)comp).getPermanentId().equals(permanentId)) {
comp.setVisible(false);
this.remove(comp);
this.jPanel.remove(comp);
}
} else if (comp instanceof MagePermanent) {
if (((MagePermanent)comp).getOriginal().getId().equals(permanentId)) {
@ -214,7 +228,7 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
public void run() {
Plugins.getInstance().onRemoveCard((MagePermanent)comp, count);
comp.setVisible(false);
BattlefieldPanel.this.remove(comp);
BattlefieldPanel.this.jPanel.remove(comp);
}
});
t.start();
@ -257,6 +271,16 @@ public class BattlefieldPanel extends javax.swing.JLayeredPane {
private void initComponents() {
setOpaque(true);
jPanel = new JPanel();
jPanel.setLayout(null);
jScrollPane = new JScrollPane(jPanel);
Border empty = new EmptyBorder(0,0,0,0);
jScrollPane.setBorder(empty);
jScrollPane.setViewportBorder(empty);
this.add(jScrollPane);
}
}

View file

@ -34,19 +34,6 @@
package mage.client.game;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.*;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.*;
import javax.swing.border.LineBorder;
import mage.Constants;
import mage.client.MageFrame;
import mage.client.chat.ChatPanel;
@ -61,6 +48,20 @@ import mage.remote.Session;
import mage.view.*;
import org.apache.log4j.Logger;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.*;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
/**
*
@ -848,7 +849,7 @@ public class GamePanel extends javax.swing.JPanel {
.addComponent(jPhases, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(gl_jPanel3.createSequentialGroup()
.addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
.addGap(49))))
)))
);
gl_jPanel3.setVerticalGroup(
gl_jPanel3.createParallelGroup(Alignment.TRAILING)

View file

@ -27,20 +27,17 @@
*/
package mage.client.game;
import java.awt.Color;
import java.awt.Dimension;
import java.util.UUID;
import javax.swing.BorderFactory;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import mage.cards.decks.importer.DeckImporterUtil;
import mage.client.MageFrame;
import mage.client.cards.BigCard;
import mage.cards.decks.importer.DeckImporterUtil;
import mage.view.PlayerView;
import javax.swing.*;
import javax.swing.GroupLayout.Alignment;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.*;
import java.util.UUID;
/**
*
* @author BetaSteward_at_googlemail.com
@ -54,8 +51,8 @@ public class PlayAreaPanel extends javax.swing.JPanel {
public PlayAreaPanel() {
initComponents();
setOpaque(false);
jScrollPane1.setOpaque(false);
jScrollPane1.getViewport().setOpaque(false);
//jScrollPane1.setOpaque(false);
//jScrollPane1.getViewport().setOpaque(false);
battlefieldPanel.setOpaque(false);
}
@ -91,8 +88,9 @@ public class PlayAreaPanel extends javax.swing.JPanel {
setBorder(BorderFactory.createLineBorder(new Color(0,0,0,0)));
playerPanel = new PlayerPanelExt();
btnCheat = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
battlefieldPanel = new mage.client.game.BattlefieldPanel(jScrollPane1);
//jScrollPane1 = new javax.swing.JScrollPane();
//battlefieldPanel = new mage.client.game.BattlefieldPanel(jScrollPane1);
battlefieldPanel = new mage.client.game.BattlefieldPanel();
btnCheat.setText("Cheat");
btnCheat.addActionListener(new java.awt.event.ActionListener() {
@ -102,22 +100,22 @@ public class PlayAreaPanel extends javax.swing.JPanel {
}
});
jScrollPane1.setViewportView(battlefieldPanel);
Border empty = new EmptyBorder(0,0,0,0);
jScrollPane1.setBorder(empty);
jScrollPane1.setViewportBorder(empty);
//jScrollPane1.setViewportView(battlefieldPanel);
//Border empty = new EmptyBorder(0,0,0,0);
//jScrollPane1.setBorder(empty);
//jScrollPane1.setViewportBorder(empty);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addComponent(playerPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(jScrollPane1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(battlefieldPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(Alignment.LEADING)
.addComponent(playerPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 160, Short.MAX_VALUE)
.addComponent(battlefieldPanel, GroupLayout.DEFAULT_SIZE, 160, Short.MAX_VALUE)
);
this.setLayout(layout);
}
@ -126,11 +124,13 @@ public class PlayAreaPanel extends javax.swing.JPanel {
this.playerPanel.sizePlayerPanel(smallMode);
if (smallMode) {
this.playerPanel.setPreferredSize(new Dimension(92, 160));
this.jScrollPane1.setPreferredSize(new Dimension(160, 160));
//this.jScrollPane1.setPreferredSize(new Dimension(160, 160));
this.battlefieldPanel.setPreferredSize(new Dimension(160, 160));
}
else {
this.playerPanel.setPreferredSize(new Dimension(92, 212));
this.jScrollPane1.setPreferredSize(new Dimension(160, 212));
//this.jScrollPane1.setPreferredSize(new Dimension(160, 212));
this.battlefieldPanel.setPreferredSize(new Dimension(160, 212));
}
}
@ -141,7 +141,7 @@ public class PlayAreaPanel extends javax.swing.JPanel {
private mage.client.game.BattlefieldPanel battlefieldPanel;
private javax.swing.JButton btnCheat;
private javax.swing.JScrollPane jScrollPane1;
//private javax.swing.JScrollPane jScrollPane1;
private PlayerPanelExt playerPanel;
}

View file

@ -1,16 +1,6 @@
package mage.client.plugins;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.swing.JComponent;
import mage.cards.Card;
import mage.cards.CardDimensions;
import mage.cards.MageCard;
import mage.cards.MagePermanent;
import mage.cards.action.ActionCallback;
@ -18,6 +8,14 @@ import mage.client.cards.BigCard;
import mage.view.CardView;
import mage.view.PermanentView;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public interface MagePlugins {
void loadPlugins();
void shutdown();
@ -28,7 +26,7 @@ public interface MagePlugins {
boolean isThemePluginLoaded();
boolean isCardPluginLoaded();
boolean isCounterPluginLoaded();
void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents);
int sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents);
boolean newImage(Set<Card> allCards);
void downloadImage(Set<Card> allCards);
void downloadSymbols();

View file

@ -11,7 +11,6 @@ import mage.client.dialog.PreferencesDialog;
import mage.client.plugins.MagePlugins;
import mage.client.plugins.adapters.MageActionCallback;
import mage.client.util.Config;
import mage.client.util.SettingsManager;
import mage.constants.Constants;
import mage.interfaces.PluginException;
import mage.interfaces.plugin.CardPlugin;
@ -105,9 +104,10 @@ public class Plugins implements MagePlugins {
}
@Override
public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents) {
public int sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents) {
sortingOptions.put("nonLandPermanentsInOnePile", PreferencesDialog.getCachedValue("nonLandPermanentsInOnePile", "false"));
if (this.cardPlugin != null) this.cardPlugin.sortPermanents(ui, permanents, sortingOptions);
if (this.cardPlugin != null) return this.cardPlugin.sortPermanents(ui, permanents, sortingOptions);
return -1;
}
@Override

View file

@ -101,25 +101,25 @@ public class CardPluginImpl implements CardPlugin {
}
@Override
public void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents, Map<String, String> options) {
public int sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> permanents, Map<String, String> options) {
//TODO: add caching
//requires to find out is position have been changed that includes:
//adding/removing permanents, type change
if (ui == null)
throw new RuntimeException("Error: no components");
JComponent component = ui.get("jScrollPane");
//JComponent component = ui.get("jScrollPane");
JComponent component2 = ui.get("battlefieldPanel");
if (component == null)
throw new RuntimeException("Error: jScrollPane is missing");
//if (component == null)
//throw new RuntimeException("Error: jScrollPane is missing");
if (component2 == null)
throw new RuntimeException("Error: battlefieldPanel is missing");
if (!(component instanceof JScrollPane))
throw new RuntimeException("Error: jScrollPane has wrong type.");
if (!(component instanceof JScrollPane))
throw new RuntimeException("Error: battlefieldPanel is missing");
//if (!(component instanceof JScrollPane))
//throw new RuntimeException("Error: jScrollPane has wrong type.");
//if (!(component instanceof JScrollPane))
//throw new RuntimeException("Error: battlefieldPanel is missing");
JScrollPane jScrollPane = (JScrollPane) component;
//JScrollPane jScrollPane = (JScrollPane) component;
JLayeredPane battlefieldPanel = (JLayeredPane) component2;
Row allLands = new Row();
@ -174,7 +174,7 @@ public class CardPluginImpl implements CardPlugin {
}
cardWidth = cardWidthMax;
Rectangle rect = jScrollPane.getVisibleRect();
Rectangle rect = battlefieldPanel.getVisibleRect();
playAreaWidth = rect.width;
playAreaHeight = rect.height;
while (true) {
@ -270,6 +270,8 @@ public class CardPluginImpl implements CardPlugin {
}
y = rowBottom;
}
return y;
}
private boolean empty(List<?> list) {

View file

@ -1,5 +1,13 @@
package mage.interfaces.plugin;
import mage.cards.Card;
import mage.cards.MagePermanent;
import mage.cards.action.ActionCallback;
import mage.view.CardView;
import mage.view.PermanentView;
import net.xeoh.plugins.base.Plugin;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collection;
@ -7,16 +15,6 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.swing.JComponent;
import mage.cards.Card;
import mage.cards.CardDimensions;
import mage.cards.MagePermanent;
import mage.cards.action.ActionCallback;
import mage.view.CardView;
import mage.view.PermanentView;
import net.xeoh.plugins.base.Plugin;
/**
* Interface for card plugins
*
@ -29,7 +27,7 @@ import net.xeoh.plugins.base.Plugin;
public interface CardPlugin extends Plugin {
MagePermanent getMagePermanent(PermanentView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage);
MagePermanent getMageCard(CardView permanent, Dimension dimension, UUID gameId, ActionCallback callback, boolean canBeFoil, boolean loadImage);
void sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> cards, Map<String, String> options);
int sortPermanents(Map<String, JComponent> ui, Collection<MagePermanent> cards, Map<String, String> options);
/**
* Check for new images.