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(); + } } /**