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);
}

View File

@@ -30,7 +30,7 @@ import java.util.Set;
*/
public final class DeckManager extends ItemManager<DeckProxy> {
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<DeckProxy> {
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<DeckProxy> {
this.cmdDelete = c0;
}
public void setSelectCommand(final FEventHandler c0) {
this.cmdSelect = c0;
}
@Override
protected void addDefaultFilters() {
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 allowMultipleSelections = false;
private boolean hideFilters = false;
private FEventHandler itemActivateHandler;
private FEventHandler selectionChangedHandler, itemActivateHandler;
private final Class<T> genericType;
private ItemManagerConfig config;
@@ -1053,7 +1053,14 @@ public abstract class ItemManager<T extends InventoryItem> 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;
}

View File

@@ -391,7 +391,6 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
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<T extends InventoryItem> extends ItemView<T> {
for (Integer i : selectedIndices) {
orderedItems.get(i).selected = true;
}
onSelectionChange();
}
@Override

View File

@@ -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<T extends InventoryItem> {
if (scrollIntoView) {
scrollSelectionIntoView();
}
onSelectionChange();
return true;
}
return false;
@@ -194,6 +196,8 @@ public abstract class ItemView<T extends InventoryItem> {
if (scrollIntoView) {
scrollSelectionIntoView();
}
onSelectionChange();
}
public void setSelectedIndices(Iterable<Integer> indices) {
@@ -222,15 +226,16 @@ public abstract class ItemView<T extends InventoryItem> {
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));
}
}
}

View File

@@ -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<Integer> cmbPlayerCount;
private GameType currentGameMode = GameType.Constructed;
private List<Integer> teams = 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
private final List<PaperCard> vgdAllAvatars = 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
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<PaperCard> predSchemes = new Predicate<PaperCard>() {
@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<PaperCard> predPlanes = new Predicate<PaperCard>() {
@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;
}
});
}