diff --git a/src/main/java/forge/control/input/InputPassPriority.java b/src/main/java/forge/control/input/InputPassPriority.java
index 9459d6306c9..67ace04c706 100644
--- a/src/main/java/forge/control/input/InputPassPriority.java
+++ b/src/main/java/forge/control/input/InputPassPriority.java
@@ -22,7 +22,7 @@ import forge.card.spellability.SpellAbility;
import forge.game.phase.PhaseHandler;
import forge.game.player.HumanPlay;
import forge.game.player.Player;
-import forge.gui.GuiDisplayUtil;
+import forge.game.zone.ZoneType;
import forge.view.ButtonUtil;
/**
@@ -36,7 +36,8 @@ import forge.view.ButtonUtil;
public class InputPassPriority extends InputNonSyncBase {
/** Constant serialVersionUID=-581477682214137181L. */
private static final long serialVersionUID = -581477682214137181L;
-
+ private boolean canUse = false;
+
/**
* TODO: Write javadoc for Constructor.
* @param player
@@ -48,8 +49,11 @@ public class InputPassPriority extends InputNonSyncBase {
/** {@inheritDoc} */
@Override
public final void showMessage() {
- GuiDisplayUtil.updateGUI();
+ for (Player p : player.getGame().getRegisteredPlayers()) {
+ p.getZone(ZoneType.Battlefield).updateObservers();
+ }
ButtonUtil.enableOnlyOk();
+ canUse = true;
final PhaseHandler ph = player.getGame().getPhaseHandler();
final StringBuilder sb = new StringBuilder();
@@ -73,7 +77,11 @@ public class InputPassPriority extends InputNonSyncBase {
/** {@inheritDoc} */
@Override
public final void selectButtonOK() {
- passPriority();
+ if( canUse ) {
+ canUse = false;
+ passPriority();
+ }
+
}
/** {@inheritDoc} */
diff --git a/src/main/java/forge/gui/CardDetailPanel.java b/src/main/java/forge/gui/CardDetailPanel.java
index d9c5219900e..0a0e0b71cae 100644
--- a/src/main/java/forge/gui/CardDetailPanel.java
+++ b/src/main/java/forge/gui/CardDetailPanel.java
@@ -22,6 +22,7 @@ import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
+import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.BorderFactory;
@@ -30,6 +31,7 @@ import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
+import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
@@ -37,10 +39,13 @@ import org.apache.commons.lang3.StringUtils;
import forge.Card;
import forge.CardCharacteristicName;
+import forge.CardUtil;
import forge.CounterType;
import forge.GameEntity;
import forge.Singletons;
import forge.card.CardEdition;
+import forge.card.CardType;
+import forge.card.ColorSet;
import forge.control.FControl;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -49,6 +54,7 @@ import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FScrollPane;
import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FTextArea;
+import forge.item.IPaperCard;
import forge.item.InventoryItemFromSet;
import forge.item.OpenablePack;
import forge.item.PreconDeck;
@@ -165,7 +171,7 @@ public class CardDetailPanel extends FPanel {
powerToughnessLabel.setVisible(false);
idLabel.setText(null);
cdArea.setText(getItemDescription(item));
- setBorder(GuiDisplayUtil.getBorder(null));
+ setBorder(getBorder(item instanceof IPaperCard ? ((IPaperCard)item).getRules().getColor() : null, false));
String set = item.getEdition();
setInfoLabel.setText(set);
@@ -206,11 +212,12 @@ public class CardDetailPanel extends FPanel {
this.setInfoLabel.setOpaque(false);
this.setInfoLabel.setBorder(null);
this.cdArea.setText("");
- this.setBorder(GuiDisplayUtil.getBorder(card));
-
- if (null == card) {
+ if( card == null ) {
+ this.setBorder(getBorder(null, false));
return;
}
+
+ this.setBorder(getBorder(CardUtil.getColors(card), card.isFaceDown()));
final boolean canShowThis = FControl.SINGLETON_INSTANCE.mayShowCard(card);
if (canShowThis) {
@@ -223,7 +230,7 @@ public class CardDetailPanel extends FPanel {
}
this.nameCostLabel.setText(card.getName() + " - " + manaCost);
}
- this.typeLabel.setText(GuiDisplayUtil.formatCardType(card));
+ this.typeLabel.setText(formatCardType(card));
String set = card.getCurSetCode();
this.setInfoLabel.setText(set);
@@ -596,4 +603,101 @@ public class CardDetailPanel extends FPanel {
public JTextArea getCDArea() {
return this.cdArea;
}
+
+ public static String formatCardType(final Card card) {
+ final ArrayList list = card.getType();
+ final StringBuilder sb = new StringBuilder();
+
+ final ArrayList superTypes = new ArrayList();
+ final ArrayList cardTypes = new ArrayList();
+ final ArrayList subTypes = new ArrayList();
+ final boolean allCreatureTypes = list.contains("AllCreatureTypes");
+
+ for (final String t : list) {
+ if (allCreatureTypes && t.equals("AllCreatureTypes")) {
+ continue;
+ }
+ if (CardType.isASuperType(t) && !superTypes.contains(t)) {
+ superTypes.add(t);
+ }
+ if (CardType.isACardType(t) && !cardTypes.contains(t)) {
+ cardTypes.add(t);
+ }
+ if (CardType.isASubType(t) && !subTypes.contains(t) && (!allCreatureTypes || !CardType.isACreatureType(t))) {
+ subTypes.add(t);
+ }
+ }
+
+ for (final String type : superTypes) {
+ sb.append(type).append(" ");
+ }
+ for (final String type : cardTypes) {
+ sb.append(type).append(" ");
+ }
+ if (!subTypes.isEmpty() || allCreatureTypes) {
+ sb.append("- ");
+ }
+ if (allCreatureTypes) {
+ sb.append("All creature types ");
+ }
+ for (final String type : subTypes) {
+ sb.append(type).append(" ");
+ }
+
+ return sb.toString();
+ }
+
+
+ public static Border getBorder(ColorSet list, boolean faceDown) {
+ // color info
+ if (list == null) {
+ return BorderFactory.createEmptyBorder(2, 2, 2, 2);
+ }
+ java.awt.Color color;
+
+ if (faceDown) {
+ color = Color.gray;
+ } else if (list.isMulticolor()) {
+ color = Color.orange;
+ } else if (list.hasBlack()) {
+ color = Color.black;
+ } else if (list.hasGreen()) {
+ color = new Color(0, 220, 39);
+ } else if (list.hasWhite()) {
+ color = Color.white;
+ } else if (list.hasRed()) {
+ color = Color.red;
+ } else if (list.hasBlue()) {
+ color = Color.blue;
+ } else if (list.isColorless()) {
+ color = Color.gray;
+ } else {
+ color = new Color(200, 0, 230); // If your card has a violet border,
+ // something is wrong
+ }
+
+ if (color != Color.gray) {
+
+ int r = color.getRed();
+ int g = color.getGreen();
+ int b = color.getBlue();
+
+ final int shade = 10;
+
+ r -= shade;
+ g -= shade;
+ b -= shade;
+
+ r = Math.max(0, r);
+ g = Math.max(0, g);
+ b = Math.max(0, b);
+
+ color = new Color(r, g, b);
+
+ return BorderFactory.createLineBorder(color, 2);
+ } else {
+ return BorderFactory.createLineBorder(Color.gray, 2);
+ }
+ }
+
}
diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java
index 73999c964af..d473ad0ad64 100644
--- a/src/main/java/forge/gui/GuiDisplayUtil.java
+++ b/src/main/java/forge/gui/GuiDisplayUtil.java
@@ -17,7 +17,6 @@
*/
package forge.gui;
-import java.awt.Color;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
@@ -29,11 +28,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.swing.BorderFactory;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
-import javax.swing.border.Border;
-
import com.google.common.base.Predicates;
import com.google.common.collect.Lists;
@@ -41,12 +37,9 @@ import forge.Card;
import forge.CardCharacteristicName;
import forge.CardLists;
import forge.CardPredicates;
-import forge.CardUtil;
import forge.CounterType;
import forge.FThreads;
import forge.Singletons;
-import forge.card.CardType;
-import forge.card.ColorSet;
import forge.card.spellability.AbilityManaPart;
import forge.card.spellability.SpellAbility;
import forge.card.trigger.TriggerType;
@@ -65,59 +58,6 @@ public final class GuiDisplayUtil {
throw new AssertionError();
}
- public static Border getBorder(final Card card) {
- // color info
- if (card == null) {
- return BorderFactory.createEmptyBorder(2, 2, 2, 2);
- }
- java.awt.Color color;
- final ColorSet list = CardUtil.getColors(card);
-
- if (card.isFaceDown()) {
- color = Color.gray;
- } else if (list.isMulticolor()) {
- color = Color.orange;
- } else if (list.hasBlack()) {
- color = Color.black;
- } else if (list.hasGreen()) {
- color = new Color(0, 220, 39);
- } else if (list.hasWhite()) {
- color = Color.white;
- } else if (list.hasRed()) {
- color = Color.red;
- } else if (list.hasBlue()) {
- color = Color.blue;
- } else if (list.isColorless()) {
- color = Color.gray;
- } else {
- color = new Color(200, 0, 230); // If your card has a violet border,
- // something is wrong
- }
-
- if (color != Color.gray) {
-
- int r = color.getRed();
- int g = color.getGreen();
- int b = color.getBlue();
-
- final int shade = 10;
-
- r -= shade;
- g -= shade;
- b -= shade;
-
- r = Math.max(0, r);
- g = Math.max(0, g);
- b = Math.max(0, b);
-
- color = new Color(r, g, b);
-
- return BorderFactory.createLineBorder(color, 2);
- } else {
- return BorderFactory.createLineBorder(Color.gray, 2);
- }
- }
-
public static void devModeGenerateMana() {
final Card dummy = new Card();
dummy.setOwner(getGame().getPhaseHandler().getPriorityPlayer());
@@ -127,57 +67,6 @@ public final class GuiDisplayUtil {
abMana.produceMana(null);
}
- public static String formatCardType(final Card card) {
- final ArrayList list = card.getType();
- final StringBuilder sb = new StringBuilder();
-
- final ArrayList superTypes = new ArrayList();
- final ArrayList cardTypes = new ArrayList();
- final ArrayList subTypes = new ArrayList();
- final boolean allCreatureTypes = list.contains("AllCreatureTypes");
-
- for (final String t : list) {
- if (allCreatureTypes && t.equals("AllCreatureTypes")) {
- continue;
- }
- if (CardType.isASuperType(t) && !superTypes.contains(t)) {
- superTypes.add(t);
- }
- if (CardType.isACardType(t) && !cardTypes.contains(t)) {
- cardTypes.add(t);
- }
- if (CardType.isASubType(t) && !subTypes.contains(t) && (!allCreatureTypes || !CardType.isACreatureType(t))) {
- subTypes.add(t);
- }
- }
-
- for (final String type : superTypes) {
- sb.append(type).append(" ");
- }
- for (final String type : cardTypes) {
- sb.append(type).append(" ");
- }
- if (!subTypes.isEmpty() || allCreatureTypes) {
- sb.append("- ");
- }
- if (allCreatureTypes) {
- sb.append("All creature types ");
- }
- for (final String type : subTypes) {
- sb.append(type).append(" ");
- }
-
- return sb.toString();
- }
-
- public static void updateGUI() {
- for (Player p : getGame().getRegisteredPlayers()) {
-
- // why was it written twice?
- p.getZone(ZoneType.Battlefield).updateObservers();
- }
- }
-
public static void devSetupGameState() {
String tHumanLife = "-1";
String tComputerLife = "-1";
@@ -397,7 +286,9 @@ public final class GuiDisplayUtil {
game.getAction().checkStateEffects();
game.getPhaseHandler().updateObservers();
- updateGUI();
+ for (Player p : game.getRegisteredPlayers()) {
+ p.getZone(ZoneType.Battlefield).updateObservers();
+ }
}
/**