From be8acb83332b3590144b11180ea314e9fce13f19 Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 11 Apr 2014 15:22:09 +0000 Subject: [PATCH] Support loading and displaying previous deck in Constructed screen --- .../src/forge/deck/FDeckChooser.java | 2 +- .../src/forge/itemmanager/DeckManager.java | 8 +- .../src/forge/itemmanager/ItemManager.java | 11 ++- .../forge/itemmanager/views/ImageView.java | 2 - .../src/forge/itemmanager/views/ItemView.java | 13 ++- .../constructed/ConstructedScreen.java | 90 +++---------------- 6 files changed, 31 insertions(+), 95 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index dcea7c1d112..a574903f33e 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -48,7 +48,7 @@ public class FDeckChooser extends FScreen { } } }; - lstDecks.setItemActivateCommand(cmdViewDeck); + lstDecks.setItemActivateHandler(cmdViewDeck); btnViewDeck.setCommand(cmdViewDeck); } diff --git a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java index dbff8262987..6c3fa6834ea 100644 --- a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java @@ -30,7 +30,7 @@ import java.util.Set; */ public final class DeckManager extends ItemManager { private final GameType gametype; - private FEventHandler cmdDelete, cmdSelect; + private FEventHandler cmdDelete; /** * Creates deck list for selected decks for quick deleting, editing, and @@ -42,7 +42,7 @@ public final class DeckManager extends ItemManager { super(DeckProxy.class, true); this.gametype = gt; - this.setItemActivateCommand(new FEventHandler() { + this.setItemActivateHandler(new FEventHandler() { @Override public void handleEvent(FEvent e) { editDeck(getSelectedItem()); @@ -66,10 +66,6 @@ public final class DeckManager extends ItemManager { this.cmdDelete = c0; } - public void setSelectCommand(final FEventHandler c0) { - this.cmdSelect = c0; - } - @Override protected void addDefaultFilters() { if (this.getConfig() == ItemManagerConfig.STRING_ONLY) { return; } diff --git a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java index 0b45d134840..f84fc38751a 100644 --- a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java @@ -58,7 +58,7 @@ public abstract class ItemManager extends FContainer im private boolean alwaysNonUnique = false; private boolean allowMultipleSelections = false; private boolean hideFilters = false; - private FEventHandler itemActivateHandler; + private FEventHandler selectionChangedHandler, itemActivateHandler; private final Class genericType; private ItemManagerConfig config; @@ -1053,7 +1053,14 @@ public abstract class ItemManager extends FContainer im setHideFilters(false); //ensure filters shown } - public void setItemActivateCommand(FEventHandler itemActivateHandler0) { + public FEventHandler getSelectionChangedHandler() { + return selectionChangedHandler; + } + public void setSelectionChangedHandler(FEventHandler selectionChangedHandler0) { + selectionChangedHandler = selectionChangedHandler0; + } + + public void setItemActivateHandler(FEventHandler itemActivateHandler0) { itemActivateHandler = itemActivateHandler0; } diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 02d0d42a572..fc13b819c36 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -391,7 +391,6 @@ public class ImageView extends ItemView { if (itemsToSelect == null) { clearSelection(); //just clear selection if no items to select setScrollValue(scrollValueToRestore); //ensure scroll value restored - onSelectionChange(); } else { if (!setSelectedItems(itemsToSelect)) { @@ -810,7 +809,6 @@ public class ImageView extends ItemView { for (Integer i : selectedIndices) { orderedItems.get(i).selected = true; } - onSelectionChange(); } @Override diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java b/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java index f07b43d3ded..ce28984dc16 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ItemView.java @@ -13,6 +13,7 @@ import forge.itemmanager.ItemManagerModel; import forge.toolbox.FDisplayObject; import forge.toolbox.FEvent; import forge.toolbox.FEvent.FEventHandler; +import forge.toolbox.FEvent.FEventType; import forge.toolbox.FLabel; import forge.toolbox.FScrollPane; @@ -171,6 +172,7 @@ public abstract class ItemView { if (scrollIntoView) { scrollSelectionIntoView(); } + onSelectionChange(); return true; } return false; @@ -194,6 +196,8 @@ public abstract class ItemView { if (scrollIntoView) { scrollSelectionIntoView(); } + + onSelectionChange(); } public void setSelectedIndices(Iterable indices) { @@ -222,15 +226,16 @@ public abstract class ItemView { if (scrollIntoView) { scrollSelectionIntoView(); } + + onSelectionChange(); } protected void onSelectionChange() { final int index = getSelectedIndex(); if (index != -1) { - /*ListSelectionEvent event = new ListSelectionEvent(itemManager, index, index, false); - for (ListSelectionListener listener : itemManager.getSelectionListeners()) { - listener.valueChanged(event); - }*/ + if (itemManager.getSelectionChangedHandler() != null) { + itemManager.getSelectionChangedHandler().handleEvent(new FEvent(itemManager, FEventType.CHANGE)); + } } } diff --git a/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java b/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java index 133b8a2d72b..425d1120009 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java +++ b/forge-gui-mobile/src/forge/screens/constructed/ConstructedScreen.java @@ -62,7 +62,6 @@ public class ConstructedScreen extends LaunchScreen { // General variables private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build(); private final FComboBox cmbPlayerCount; - private GameType currentGameMode = GameType.Constructed; private List teams = new ArrayList(MAX_PLAYERS); private List archenemyTeams = new ArrayList(MAX_PLAYERS); @@ -91,9 +90,6 @@ public class ConstructedScreen extends LaunchScreen { } }; - private final FCheckBox cbSingletons = new FCheckBox("Singleton Mode"); - private final FCheckBox cbArtifacts = new FCheckBox("Remove Artifacts"); - // Variants private final List vgdAllAvatars = new ArrayList(); private final List vgdAllAiAvatars = new ArrayList(); @@ -152,36 +148,6 @@ public class ConstructedScreen extends LaunchScreen { } }); - /*lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2)); - - //////////////////////////////////////////////////////// - //////////////////// Variants Panel //////////////////// - - // Populate and add variants panel - vntVanguard.addItemListener(iListenerVariants); - vntCommander.addItemListener(iListenerVariants); - vntPlanechase.addItemListener(iListenerVariants); - vntArchenemy.addItemListener(iListenerVariants); - comboArchenemy.setSelectedIndex(0); - comboArchenemy.setEnabled(vntArchenemy.isSelected()); - comboArchenemy.addActionListener(aeComboListener); - - variantsPanel.setOpaque(false); - variantsPanel.add(newLabel("Variants:")); - variantsPanel.add(vntVanguard); - variantsPanel.add(vntCommander); - variantsPanel.add(vntPlanechase); - variantsPanel.add(vntArchenemy); - comboArchenemy.addTo(variantsPanel); - - constructedFrame.add(new FScrollPane(variantsPanel, false, true, - ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, - ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED), - "w 100%, h 45px!, gapbottom 10px, spanx 2, wrap");*/ - - //////////////////////////////////////////////////////// - ///////////////////// Player Panel ///////////////////// - // Construct individual player panels for (int i = 0; i < MAX_PLAYERS; i++) { teams.add(i + 1); @@ -207,26 +173,6 @@ public class ConstructedScreen extends LaunchScreen { getDeckChooser(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK); getDeckChooser(7).initialize(FPref.CONSTRUCTED_P8_DECK_STATE, DeckType.COLOR_DECK); - // Checkbox event handling - cbSingletons.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - prefs.setPref(FPref.DECKGEN_SINGLETONS, String.valueOf(cbSingletons.isSelected())); - prefs.save(); - } - }); - cbArtifacts.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - prefs.setPref(FPref.DECKGEN_ARTIFACTS, String.valueOf(cbArtifacts.isSelected())); - prefs.save(); - } - }); - - // Pre-select checkboxes - cbSingletons.setSelected(prefs.getPrefBoolean(FPref.DECKGEN_SINGLETONS)); - cbArtifacts.setSelected(prefs.getPrefBoolean(FPref.DECKGEN_ARTIFACTS)); - updatePlayersFromPrefs(); } @@ -483,14 +429,14 @@ public class ConstructedScreen extends LaunchScreen { index = index0; playerIsArchenemy = index == 0; deckChooser = new FDeckChooser(isPlayerAI()); - deckChooser.initialize(); - deckChooser.getLstDecks().setSelectCommand(new FEventHandler() { + deckChooser.getLstDecks().setSelectionChangedHandler(new FEventHandler() { @Override public void handleEvent(FEvent e) { - String text = deckChooser.getSelectedDeckType().toString() + ": " + Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME); - setDeckSelectorButtonText(text); + deckBtn.setText(deckChooser.getSelectedDeckType().toString() + ": " + + Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME)); } }); + deckChooser.initialize(); schemeDeckList = new DeckList(); commanderDeckList = new DeckList(); planarDeckList = new DeckList(); @@ -519,8 +465,11 @@ public class ConstructedScreen extends LaunchScreen { add(deckLabel); add(deckBtn); - - addHandlersDeckSelector(); + deckBtn.setCommand(new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + } + }); add(cmdLabel); add(cmdDeckSelectorBtn); @@ -595,6 +544,7 @@ public class ConstructedScreen extends LaunchScreen { w = x - avatarSize - 3 * PADDING; x = avatarSize + 2 * PADDING; teamComboBox.setBounds(x, y, w, fieldHeight); + aeTeamComboBox.setBounds(x, y, width, fieldHeight); y += fieldHeight + PADDING; x = PADDING; @@ -717,10 +667,6 @@ public class ConstructedScreen extends LaunchScreen { vgdSelectorBtn.setText(text); } - public void setDeckSelectorButtonText(String text) { - deckBtn.setText(text); - } - private void populateTeamsComboBoxes() { aeTeamComboBox.addItem("Archenemy"); aeTeamComboBox.addItem("Heroes"); @@ -775,14 +721,12 @@ public class ConstructedScreen extends LaunchScreen { scmDeckSelectorBtn.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble; } }); scmDeckEditor.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble; Predicate predSchemes = new Predicate() { @Override public boolean apply(PaperCard arg0) { @@ -800,14 +744,12 @@ public class ConstructedScreen extends LaunchScreen { cmdDeckSelectorBtn.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = GameType.Commander; } }); cmdDeckEditor.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = GameType.Commander; //Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER); } }); @@ -816,14 +758,12 @@ public class ConstructedScreen extends LaunchScreen { pchDeckSelectorBtn.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = GameType.Planechase; } }); pchDeckEditor.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = GameType.Planechase; /*Predicate predPlanes = new Predicate() { @Override public boolean apply(PaperCard arg0) { @@ -841,16 +781,6 @@ public class ConstructedScreen extends LaunchScreen { vgdSelectorBtn.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - currentGameMode = GameType.Vanguard; - } - }); - } - - private void addHandlersDeckSelector() { - deckBtn.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - currentGameMode = GameType.Constructed; } }); }