From 66ef9b874a45e6942ec7aa58e17a2b4b9fa5327a Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 17 Aug 2014 00:56:49 +0000 Subject: [PATCH] Fix so removing auto-yields works --- .../java/forge/screens/match/VAutoYields.java | 31 ++++++++++++++++--- .../src/main/java/forge/toolbox/FList.java | 5 --- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java b/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java index 21e36fd3aa9..238d8d9262c 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/VAutoYields.java @@ -4,6 +4,7 @@ import java.awt.Dimension; import java.util.ArrayList; import java.util.List; +import javax.swing.AbstractListModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -21,7 +22,7 @@ import forge.view.FDialog; @SuppressWarnings("serial") public class VAutoYields extends FDialog { private static final int PADDING = 10; - private static final int BUTTON_WIDTH = 140; + private static final int BUTTON_WIDTH = 150; private static final int BUTTON_HEIGHT = 26; private final FButton btnOk; @@ -29,16 +30,17 @@ public class VAutoYields extends FDialog { private final FList lstAutoYields; private final FScrollPane listScroller; private final FCheckBox chkDisableAll; + private final List autoYields; public VAutoYields(final Game game, final Player player) { super(true); setTitle("Auto-Yields"); - List autoYields = new ArrayList(); + autoYields = new ArrayList(); for (String autoYield : player.getController().getAutoYields()) { autoYields.add(autoYield); } - lstAutoYields = new FList(autoYields.toArray(new String[]{})); + lstAutoYields = new FList(new AutoYieldsListModel()); int x = PADDING; int y = PADDING; @@ -68,13 +70,20 @@ public class VAutoYields extends FDialog { public void run() { String selected = lstAutoYields.getSelectedValue(); if (selected != null) { - lstAutoYields.removeItem(selected); + autoYields.remove(selected); + btnRemove.setEnabled(autoYields.size() > 0); player.getController().setShouldAutoYield(selected, false); VAutoYields.this.revalidate(); + lstAutoYields.repaint(); } } }); - btnRemove.setEnabled(autoYields.size() > 0); + if (autoYields.size() > 0) { + lstAutoYields.setSelectedIndex(0); + } + else { + btnRemove.setEnabled(false); + } Dimension checkBoxSize = chkDisableAll.getPreferredSize(); int listHeight = lstAutoYields.getMinimumSize().height + 2 * PADDING; @@ -91,6 +100,18 @@ public class VAutoYields extends FDialog { this.setSize(width, getHeight()); } + private class AutoYieldsListModel extends AbstractListModel { + @Override + public int getSize() { + return autoYields.size(); + } + + @Override + public String getElementAt(final int index) { + return autoYields.get(index); + } + } + public void showAutoYields() { if (lstAutoYields.getCount() > 0) { setVisible(true); diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FList.java b/forge-gui-desktop/src/main/java/forge/toolbox/FList.java index c73c8a8709a..1ff2044f21a 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FList.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FList.java @@ -97,11 +97,6 @@ public class FList extends SkinnedList { return getModel().getSize(); } - @SuppressWarnings("rawtypes") - public void removeItem(E item) { - ((DefaultListModel)getModel()).removeElement(item); - } - private class ComplexCellRenderer implements ListCellRenderer { private DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();