Support loading and displaying previous deck in Constructed screen

This commit is contained in:
drdev
2014-04-11 15:22:09 +00:00
parent 679cd77899
commit be8acb8333
6 changed files with 31 additions and 95 deletions

View File

@@ -48,7 +48,7 @@ public class FDeckChooser extends FScreen {
} }
} }
}; };
lstDecks.setItemActivateCommand(cmdViewDeck); lstDecks.setItemActivateHandler(cmdViewDeck);
btnViewDeck.setCommand(cmdViewDeck); btnViewDeck.setCommand(cmdViewDeck);
} }

View File

@@ -30,7 +30,7 @@ import java.util.Set;
*/ */
public final class DeckManager extends ItemManager<DeckProxy> { public final class DeckManager extends ItemManager<DeckProxy> {
private final GameType gametype; private final GameType gametype;
private FEventHandler cmdDelete, cmdSelect; private FEventHandler cmdDelete;
/** /**
* Creates deck list for selected decks for quick deleting, editing, and * Creates deck list for selected decks for quick deleting, editing, and
@@ -42,7 +42,7 @@ public final class DeckManager extends ItemManager<DeckProxy> {
super(DeckProxy.class, true); super(DeckProxy.class, true);
this.gametype = gt; this.gametype = gt;
this.setItemActivateCommand(new FEventHandler() { this.setItemActivateHandler(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
editDeck(getSelectedItem()); editDeck(getSelectedItem());
@@ -66,10 +66,6 @@ public final class DeckManager extends ItemManager<DeckProxy> {
this.cmdDelete = c0; this.cmdDelete = c0;
} }
public void setSelectCommand(final FEventHandler c0) {
this.cmdSelect = c0;
}
@Override @Override
protected void addDefaultFilters() { protected void addDefaultFilters() {
if (this.getConfig() == ItemManagerConfig.STRING_ONLY) { return; } if (this.getConfig() == ItemManagerConfig.STRING_ONLY) { return; }

View File

@@ -58,7 +58,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
private boolean alwaysNonUnique = false; private boolean alwaysNonUnique = false;
private boolean allowMultipleSelections = false; private boolean allowMultipleSelections = false;
private boolean hideFilters = false; private boolean hideFilters = false;
private FEventHandler itemActivateHandler; private FEventHandler selectionChangedHandler, itemActivateHandler;
private final Class<T> genericType; private final Class<T> genericType;
private ItemManagerConfig config; private ItemManagerConfig config;
@@ -1053,7 +1053,14 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
setHideFilters(false); //ensure filters shown 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; itemActivateHandler = itemActivateHandler0;
} }

View File

@@ -391,7 +391,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
if (itemsToSelect == null) { if (itemsToSelect == null) {
clearSelection(); //just clear selection if no items to select clearSelection(); //just clear selection if no items to select
setScrollValue(scrollValueToRestore); //ensure scroll value restored setScrollValue(scrollValueToRestore); //ensure scroll value restored
onSelectionChange();
} }
else { else {
if (!setSelectedItems(itemsToSelect)) { if (!setSelectedItems(itemsToSelect)) {
@@ -810,7 +809,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
for (Integer i : selectedIndices) { for (Integer i : selectedIndices) {
orderedItems.get(i).selected = true; orderedItems.get(i).selected = true;
} }
onSelectionChange();
} }
@Override @Override

View File

@@ -13,6 +13,7 @@ import forge.itemmanager.ItemManagerModel;
import forge.toolbox.FDisplayObject; import forge.toolbox.FDisplayObject;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FEvent.FEventType;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane; import forge.toolbox.FScrollPane;
@@ -171,6 +172,7 @@ public abstract class ItemView<T extends InventoryItem> {
if (scrollIntoView) { if (scrollIntoView) {
scrollSelectionIntoView(); scrollSelectionIntoView();
} }
onSelectionChange();
return true; return true;
} }
return false; return false;
@@ -194,6 +196,8 @@ public abstract class ItemView<T extends InventoryItem> {
if (scrollIntoView) { if (scrollIntoView) {
scrollSelectionIntoView(); scrollSelectionIntoView();
} }
onSelectionChange();
} }
public void setSelectedIndices(Iterable<Integer> indices) { public void setSelectedIndices(Iterable<Integer> indices) {
@@ -222,15 +226,16 @@ public abstract class ItemView<T extends InventoryItem> {
if (scrollIntoView) { if (scrollIntoView) {
scrollSelectionIntoView(); scrollSelectionIntoView();
} }
onSelectionChange();
} }
protected void onSelectionChange() { protected void onSelectionChange() {
final int index = getSelectedIndex(); final int index = getSelectedIndex();
if (index != -1) { if (index != -1) {
/*ListSelectionEvent event = new ListSelectionEvent(itemManager, index, index, false); if (itemManager.getSelectionChangedHandler() != null) {
for (ListSelectionListener listener : itemManager.getSelectionListeners()) { itemManager.getSelectionChangedHandler().handleEvent(new FEvent(itemManager, FEventType.CHANGE));
listener.valueChanged(event); }
}*/
} }
} }

View File

@@ -62,7 +62,6 @@ public class ConstructedScreen extends LaunchScreen {
// General variables // General variables
private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build(); private final FLabel lblPlayers = new FLabel.Builder().text("Players:").fontSize(VARIANTS_FONT_SIZE).build();
private final FComboBox<Integer> cmbPlayerCount; private final FComboBox<Integer> cmbPlayerCount;
private GameType currentGameMode = GameType.Constructed;
private List<Integer> teams = new ArrayList<Integer>(MAX_PLAYERS); private List<Integer> teams = new ArrayList<Integer>(MAX_PLAYERS);
private List<Integer> archenemyTeams = new ArrayList<Integer>(MAX_PLAYERS); private List<Integer> archenemyTeams = new ArrayList<Integer>(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 // Variants
private final List<PaperCard> vgdAllAvatars = new ArrayList<PaperCard>(); private final List<PaperCard> vgdAllAvatars = new ArrayList<PaperCard>();
private final List<PaperCard> vgdAllAiAvatars = new ArrayList<PaperCard>(); private final List<PaperCard> vgdAllAiAvatars = new ArrayList<PaperCard>();
@@ -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 // Construct individual player panels
for (int i = 0; i < MAX_PLAYERS; i++) { for (int i = 0; i < MAX_PLAYERS; i++) {
teams.add(i + 1); 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(6).initialize(FPref.CONSTRUCTED_P7_DECK_STATE, DeckType.COLOR_DECK);
getDeckChooser(7).initialize(FPref.CONSTRUCTED_P8_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(); updatePlayersFromPrefs();
} }
@@ -483,14 +429,14 @@ public class ConstructedScreen extends LaunchScreen {
index = index0; index = index0;
playerIsArchenemy = index == 0; playerIsArchenemy = index == 0;
deckChooser = new FDeckChooser(isPlayerAI()); deckChooser = new FDeckChooser(isPlayerAI());
deckChooser.initialize(); deckChooser.getLstDecks().setSelectionChangedHandler(new FEventHandler() {
deckChooser.getLstDecks().setSelectCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
String text = deckChooser.getSelectedDeckType().toString() + ": " + Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME); deckBtn.setText(deckChooser.getSelectedDeckType().toString() + ": " +
setDeckSelectorButtonText(text); Lang.joinHomogenous(deckChooser.getLstDecks().getSelectedItems(), DeckProxy.FN_GET_NAME));
} }
}); });
deckChooser.initialize();
schemeDeckList = new DeckList(); schemeDeckList = new DeckList();
commanderDeckList = new DeckList(); commanderDeckList = new DeckList();
planarDeckList = new DeckList(); planarDeckList = new DeckList();
@@ -519,8 +465,11 @@ public class ConstructedScreen extends LaunchScreen {
add(deckLabel); add(deckLabel);
add(deckBtn); add(deckBtn);
deckBtn.setCommand(new FEventHandler() {
addHandlersDeckSelector(); @Override
public void handleEvent(FEvent e) {
}
});
add(cmdLabel); add(cmdLabel);
add(cmdDeckSelectorBtn); add(cmdDeckSelectorBtn);
@@ -595,6 +544,7 @@ public class ConstructedScreen extends LaunchScreen {
w = x - avatarSize - 3 * PADDING; w = x - avatarSize - 3 * PADDING;
x = avatarSize + 2 * PADDING; x = avatarSize + 2 * PADDING;
teamComboBox.setBounds(x, y, w, fieldHeight); teamComboBox.setBounds(x, y, w, fieldHeight);
aeTeamComboBox.setBounds(x, y, width, fieldHeight);
y += fieldHeight + PADDING; y += fieldHeight + PADDING;
x = PADDING; x = PADDING;
@@ -717,10 +667,6 @@ public class ConstructedScreen extends LaunchScreen {
vgdSelectorBtn.setText(text); vgdSelectorBtn.setText(text);
} }
public void setDeckSelectorButtonText(String text) {
deckBtn.setText(text);
}
private void populateTeamsComboBoxes() { private void populateTeamsComboBoxes() {
aeTeamComboBox.addItem("Archenemy"); aeTeamComboBox.addItem("Archenemy");
aeTeamComboBox.addItem("Heroes"); aeTeamComboBox.addItem("Heroes");
@@ -775,14 +721,12 @@ public class ConstructedScreen extends LaunchScreen {
scmDeckSelectorBtn.setCommand(new FEventHandler() { scmDeckSelectorBtn.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
} }
}); });
scmDeckEditor.setCommand(new FEventHandler() { scmDeckEditor.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = appliedVariants.contains(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble;
Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() { Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() {
@Override @Override
public boolean apply(PaperCard arg0) { public boolean apply(PaperCard arg0) {
@@ -800,14 +744,12 @@ public class ConstructedScreen extends LaunchScreen {
cmdDeckSelectorBtn.setCommand(new FEventHandler() { cmdDeckSelectorBtn.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = GameType.Commander;
} }
}); });
cmdDeckEditor.setCommand(new FEventHandler() { cmdDeckEditor.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = GameType.Commander;
//Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER); //Forge.setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
} }
}); });
@@ -816,14 +758,12 @@ public class ConstructedScreen extends LaunchScreen {
pchDeckSelectorBtn.setCommand(new FEventHandler() { pchDeckSelectorBtn.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = GameType.Planechase;
} }
}); });
pchDeckEditor.setCommand(new FEventHandler() { pchDeckEditor.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = GameType.Planechase;
/*Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() { /*Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
@Override @Override
public boolean apply(PaperCard arg0) { public boolean apply(PaperCard arg0) {
@@ -841,16 +781,6 @@ public class ConstructedScreen extends LaunchScreen {
vgdSelectorBtn.setCommand(new FEventHandler() { vgdSelectorBtn.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
currentGameMode = GameType.Vanguard;
}
});
}
private void addHandlersDeckSelector() {
deckBtn.setCommand(new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
currentGameMode = GameType.Constructed;
} }
}); });
} }