diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java index 091369d82ef..c0f0576dc8c 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryClash.java @@ -767,7 +767,7 @@ public final class AbilityFactoryClash { // first, separate the cards into piles if (separator.isHuman()) { - final List firstPile = GuiChoose.getOrderChoices("Place into two piles", "Pile 1", -1, pool.toArray(), null, card); + final List firstPile = GuiChoose.getOrderChoices("Place into two piles", "Pile 1", -1, pool, null, card); for (final Object o : firstPile) { pile1.add((Card)o); } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java index 9e09e903205..45977013d5e 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java @@ -2050,7 +2050,7 @@ public final class AbilityFactoryReveal { topCards.add(lib.get(j)); } - List orderedCards = GuiChoose.getOrderChoices("Select order to Rearrange", "Top of Library", 0, topCards.toArray(), null, src); + List orderedCards = GuiChoose.getOrderChoices("Select order to Rearrange", "Top of Library", 0, topCards, null, src); for (int i = maxCards - 1; i >= 0; i--) { Card next = (Card) orderedCards.get(i); Singletons.getModel().getGameAction().moveToLibrary(next, 0); @@ -2414,7 +2414,7 @@ public final class AbilityFactoryReveal { final int validamount = Math.min(valid.size(), max); if (anyNumber && player.isHuman() && validamount > 0) { - final List selection = GuiChoose.getOrderChoices("Choose Which Cards to Reveal", "Revealed", -1, valid.toArray(), null, null); + final List selection = GuiChoose.getOrderChoices("Choose Which Cards to Reveal", "Revealed", -1, valid, null, null); for (final Object o : selection) { if (o != null && o instanceof Card) { chosen.add((Card) o); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 8dd13735b63..4defe709afb 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -4847,7 +4847,7 @@ public class CardFactoryUtil { card.clearDevoured(); if (card.getController().isHuman()) { if (creats.size() > 0) { - final List selection = GuiChoose.getOrderChoices("Devour", "Devouring", -1, creats.toArray(), null, card); + final List selection = GuiChoose.getOrderChoices("Devour", "Devouring", -1, creats, null, card); numCreatures[0] = selection.size(); for (Object o : selection) { diff --git a/src/main/java/forge/game/phase/CombatUtil.java b/src/main/java/forge/game/phase/CombatUtil.java index be5ca3f1184..e1f10c16b66 100644 --- a/src/main/java/forge/game/phase/CombatUtil.java +++ b/src/main/java/forge/game/phase/CombatUtil.java @@ -440,7 +440,7 @@ public class CombatUtil { List orderedBlockers = null; if (player.isHuman()) { - List ordered = GuiChoose.getOrderChoices("Choose Blocking Order", "Damaged First", 0, blockers.toArray(), null, attacker); + List ordered = GuiChoose.getOrderChoices("Choose Blocking Order", "Damaged First", 0, blockers, null, attacker); orderedBlockers = new ArrayList(); for(Object o : ordered) { @@ -468,7 +468,7 @@ public class CombatUtil { List orderedAttacker = null; if (player.isHuman()) { - List ordered = GuiChoose.getOrderChoices("Choose Blocking Order", "Damaged First", 0, attackers.toArray(), null, blocker); + List ordered = GuiChoose.getOrderChoices("Choose Blocking Order", "Damaged First", 0, attackers, null, blocker); orderedAttacker = new ArrayList(); for(Object o : ordered) { diff --git a/src/main/java/forge/game/zone/MagicStack.java b/src/main/java/forge/game/zone/MagicStack.java index 6af95a78a5f..390b97938c0 100644 --- a/src/main/java/forge/game/zone/MagicStack.java +++ b/src/main/java/forge/game/zone/MagicStack.java @@ -1355,7 +1355,7 @@ public class MagicStack extends MyObservable { } else{ // Otherwise, gave a dual list form to create instead of needing to do it one at a time - List orderedSAs = GuiChoose.getOrderChoices("Select order for Simultaneous Spell Abilities", "Resolve first", 0, activePlayerSAs.toArray(), null, null); + List orderedSAs = GuiChoose.getOrderChoices("Select order for Simultaneous Spell Abilities", "Resolve first", 0, activePlayerSAs, null, null); int size = orderedSAs.size(); for(int i = size-1; i >= 0; i--){ SpellAbility next = (SpellAbility)orderedSAs.get(i); diff --git a/src/main/java/forge/gui/DualListBox.java b/src/main/java/forge/gui/DualListBox.java index c6d329bc6c3..150e6586108 100644 --- a/src/main/java/forge/gui/DualListBox.java +++ b/src/main/java/forge/gui/DualListBox.java @@ -6,8 +6,7 @@ import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.ArrayList; -import java.util.Iterator; +import java.util.Arrays; import java.util.List; import javax.swing.JButton; @@ -35,14 +34,14 @@ import forge.gui.match.CMatchUI; // Single ok button, disabled until left box is empty @SuppressWarnings("serial") -public class DualListBox extends JPanel { +public class DualListBox extends JPanel { private JList sourceList; - private UnsortedListModel sourceListModel; + private UnsortedListModel sourceListModel; private JList destList; - private UnsortedListModel destListModel; + private UnsortedListModel destListModel; private JButton addButton; private JButton addAllButton; @@ -59,7 +58,7 @@ public class DualListBox extends JPanel { private Card refCard = null; - public DualListBox(int remainingObjects, String label, Object[] sourceElements, Object[] destElements, + public DualListBox(int remainingObjects, String label, List sourceElements, List destElements, Card referenceCard) { this.remainingObjects = remainingObjects; this.refCard = referenceCard; @@ -91,31 +90,32 @@ public class DualListBox extends JPanel { addSourceElements(newValue); } + public void addDestinationElements(List newValue) { + fillListModel(destListModel, newValue); + } + public void addDestinationElements(ListModel newValue) { fillListModel(destListModel, newValue); } - private void fillListModel(UnsortedListModel model, ListModel newValues) { + @SuppressWarnings("unchecked") // Java 7 has type parameterized ListModel + private void fillListModel(UnsortedListModel model, ListModel newValues) { int size = newValues.getSize(); for (int i = 0; i < size; i++) { - model.add(newValues.getElementAt(i)); + model.add((T)newValues.getElementAt(i)); } } - public void addSourceElements(Object[] newValue) { + public void addSourceElements(List newValue) { fillListModel(sourceListModel, newValue); } - public void setSourceElements(Object[] newValue) { + public void setSourceElements(List newValue) { clearSourceListModel(); addSourceElements(newValue); } - public void addDestinationElements(Object[] newValue) { - fillListModel(destListModel, newValue); - } - - private void fillListModel(UnsortedListModel model, Object[] newValues) { + private void fillListModel(UnsortedListModel model, List newValues) { model.addAll(newValues); } @@ -135,7 +135,7 @@ public class DualListBox extends JPanel { destList.getSelectionModel().clearSelection(); } - public List getOrderedList() { + public List getOrderedList() { this.setVisible(false); return destListModel.model; } @@ -162,7 +162,7 @@ public class DualListBox extends JPanel { private void initScreen() { setPreferredSize(new Dimension(650, 300)); setLayout(new GridLayout(0, 3)); - sourceListModel = new UnsortedListModel(); + sourceListModel = new UnsortedListModel(); sourceList = new JList(sourceListModel); // Dual List control buttons @@ -182,7 +182,7 @@ public class DualListBox extends JPanel { autoButton = new JButton("Auto"); autoButton.addActionListener(new AutoListener()); - destListModel = new UnsortedListModel(); + destListModel = new UnsortedListModel(); destList = new JList(destListModel); JPanel leftPanel = new JPanel(new BorderLayout()); @@ -217,7 +217,8 @@ public class DualListBox extends JPanel { private class AddListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - Object[] selected = sourceList.getSelectedValues(); + @SuppressWarnings("unchecked") + List selected = (List) Arrays.asList(sourceList.getSelectedValues()); addDestinationElements(selected); clearSourceSelected(); sourceList.validate(); @@ -226,16 +227,7 @@ public class DualListBox extends JPanel { } private void addAll() { - Iterator itr = sourceListModel.iterator(); - - ArrayList objects = new ArrayList(); - - while (itr.hasNext()) { - Object obj = itr.next(); - objects.add(obj); - } - - addDestinationElements(objects.toArray()); + addDestinationElements(sourceListModel); clearSourceListModel(); setButtonState(); } @@ -251,7 +243,8 @@ public class DualListBox extends JPanel { private class RemoveListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - Object[] selected = destList.getSelectedValues(); + @SuppressWarnings("unchecked") + List selected = (List) Arrays.asList(destList.getSelectedValues()); addSourceElements(selected); clearDestinationSelected(); setButtonState(); @@ -261,16 +254,7 @@ public class DualListBox extends JPanel { private class RemoveAllListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - Iterator itr = destListModel.iterator(); - - ArrayList objects = new ArrayList(); - - while (itr.hasNext()) { - Object obj = itr.next(); - objects.add(obj); - } - - addSourceElements(objects.toArray()); + addSourceElements(destListModel); clearDestinationListModel(); setButtonState(); } diff --git a/src/main/java/forge/gui/GuiAssignDamageFrame.java b/src/main/java/forge/gui/GuiAssignDamageFrame.java index c1c11e54a26..2b7df75bff6 100644 --- a/src/main/java/forge/gui/GuiAssignDamageFrame.java +++ b/src/main/java/forge/gui/GuiAssignDamageFrame.java @@ -76,7 +76,7 @@ public class GuiAssignDamageFrame extends JFrame { private final JPanel buttonPanel = new JPanel(); private final BoxLayout buttonLayout = new BoxLayout(buttonPanel, BoxLayout.X_AXIS); - private UnsortedListModel recipientsListModel = new UnsortedListModel(); + private UnsortedListModel recipientsListModel = new UnsortedListModel(); private final JList recipientsList = new JList(recipientsListModel); private final JButton oneDamageButton = new JButton("Assign 1"); diff --git a/src/main/java/forge/gui/GuiChoose.java b/src/main/java/forge/gui/GuiChoose.java index 7e4584ba8bf..40235878255 100644 --- a/src/main/java/forge/gui/GuiChoose.java +++ b/src/main/java/forge/gui/GuiChoose.java @@ -194,11 +194,11 @@ public class GuiChoose { return c.getSelectedValues(); } // getChoice() - public static List getOrderChoices(final String title, final String top, int remainingObjects, - final Object[] sourceChoices, Object[] destChoices, Card referenceCard) { + public static List getOrderChoices(final String title, final String top, int remainingObjects, + final List sourceChoices, List destChoices, Card referenceCard) { // An input box for handling the order of choices. final JFrame frame = new JFrame(); - DualListBox dual = new DualListBox(remainingObjects, top, sourceChoices, destChoices, referenceCard); + DualListBox dual = new DualListBox(remainingObjects, top, sourceChoices, destChoices, referenceCard); frame.setLayout(new BorderLayout()); frame.setSize(dual.getPreferredSize()); @@ -218,7 +218,7 @@ public class GuiChoose { } dialog.setVisible(true); - List objects = dual.getOrderedList(); + List objects = dual.getOrderedList(); dialog.dispose(); return objects; } diff --git a/src/main/java/forge/gui/UnsortedListModel.java b/src/main/java/forge/gui/UnsortedListModel.java index 1072c9f6f9e..f821ee6871b 100644 --- a/src/main/java/forge/gui/UnsortedListModel.java +++ b/src/main/java/forge/gui/UnsortedListModel.java @@ -1,6 +1,5 @@ package forge.gui; -import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; @@ -8,12 +7,13 @@ import java.util.List; import javax.swing.AbstractListModel; + @SuppressWarnings("serial") -class UnsortedListModel extends AbstractListModel { - List model; +class UnsortedListModel extends AbstractListModel { // Java 7 has a generic version. In 6 we have to cast types + List model; public UnsortedListModel() { - model = new LinkedList(); + model = new LinkedList(); } @Override @@ -26,18 +26,24 @@ class UnsortedListModel extends AbstractListModel { return model.get(index); } - public void add(Object element) { + public void add(T element) { if (model.add(element)) { fireContentsChanged(this, 0, getSize()); } } - public void addAll(Object elements[]) { - Collection c = Arrays.asList(elements); - model.addAll(c); + public void addAll(T[] elements) { + for(T e : elements) + model.add(e); fireContentsChanged(this, 0, getSize()); } + public void addAll(Collection elements) { + model.addAll(elements); + fireContentsChanged(this, 0, getSize()); + } + + public void clear() { model.clear(); fireContentsChanged(this, 0, getSize()); @@ -47,7 +53,7 @@ class UnsortedListModel extends AbstractListModel { return model.contains(element); } - public Iterator iterator() { + public Iterator iterator() { return model.iterator(); } diff --git a/src/main/java/forge/gui/match/controllers/CPicture.java b/src/main/java/forge/gui/match/controllers/CPicture.java index c3c43ad9e99..4516c868f65 100644 --- a/src/main/java/forge/gui/match/controllers/CPicture.java +++ b/src/main/java/forge/gui/match/controllers/CPicture.java @@ -35,7 +35,6 @@ public enum CPicture implements ICDoc { /** */ SINGLETON_INSTANCE; - private InventoryItem item = null; private Card currentCard = null; private boolean flipped = false; @@ -46,14 +45,12 @@ public enum CPicture implements ICDoc { *   Card object */ public void showCard(final Card c) { - this.item = null; this.currentCard = c; VPicture.SINGLETON_INSTANCE.getLblFlipcard().setVisible(c != null && c.isDoubleFaced() ? true : false); VPicture.SINGLETON_INSTANCE.getPnlPicture().setCard(c); } public void showCard(final InventoryItem item) { - this.item = item; this.currentCard = null; VPicture.SINGLETON_INSTANCE.getLblFlipcard().setVisible(false); VPicture.SINGLETON_INSTANCE.getPnlPicture().setCard(item);