From 83fcd63fe77241df190b390254f340b79ffb2e12 Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 20 Jun 2014 01:30:14 +0000 Subject: [PATCH] Support generating decks --- .../src/forge/deck/FDeckChooser.java | 29 +++++++++++++++---- .../src/forge/deck/FDeckEditor.java | 26 ++++++++++++++--- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 33d338d0a99..158090c10b1 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -64,9 +64,29 @@ public class FDeckChooser extends FScreen { btnNewDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - needRefreshOnActivate = true; - setSelectedDeckType(DeckType.CUSTOM_DECK); //ensure user returns to custom user deck - Forge.openScreen(new FDeckEditor(EditorType.Constructed, "")); + switch (selectedDeckType) { + case COLOR_DECK: + case THEME_DECK: + final DeckProxy deck = lstDecks.getSelectedItem(); + if (deck != null) { + Deck generatedDeck = deck.getDeck(); + if (generatedDeck != null) { + generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default + needRefreshOnActivate = true; + setSelectedDeckType(DeckType.CUSTOM_DECK); //ensure user returns to custom user deck + Forge.openScreen(new FDeckEditor(EditorType.Constructed, generatedDeck)); + } + } + else { + FOptionPane.showErrorDialog("You must select something before you can generate a new deck."); + } + break; + default: + needRefreshOnActivate = true; + setSelectedDeckType(DeckType.CUSTOM_DECK); + Forge.openScreen(new FDeckEditor(EditorType.Constructed, "")); + break; + } } }); btnEditDeck.setCommand(new FEventHandler() { @@ -250,7 +270,6 @@ public class FDeckChooser extends FScreen { return name; } - @Override public int compareTo(final ColorDeckGenerator d) { return d instanceof ColorDeckGenerator ? Integer.compare(this.index, ((ColorDeckGenerator)d).index) : 1; @@ -267,7 +286,7 @@ public class FDeckChooser extends FScreen { } return null; } - + @Override public boolean isGeneratedDeck() { return true; diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 316e5454c48..34cf23f38ce 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -163,12 +163,15 @@ public class FDeckEditor extends TabPageScreen { private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(HAlignment.CENTER).pressedColor(Header.BTN_PRESSED_COLOR).build()); public FDeckEditor(EditorType editorType0, DeckProxy editDeck) { - this(editorType0, editDeck.getName(), editDeck.getPath()); + this(editorType0, editDeck.getName(), editDeck.getPath(), null); } public FDeckEditor(EditorType editorType0, String editDeckName) { - this(editorType0, editDeckName, ""); + this(editorType0, editDeckName, "", null); } - private FDeckEditor(EditorType editorType0, String editDeckName, String editDeckPath) { + public FDeckEditor(EditorType editorType0, Deck newDeck) { + this(editorType0, "", "", newDeck); + } + private FDeckEditor(EditorType editorType0, String editDeckName, String editDeckPath, Deck newDeck) { super(getPages(editorType0)); editorType = editorType0; @@ -181,7 +184,12 @@ public class FDeckEditor extends TabPageScreen { deckHeader.setVisible(false); } else { - editorType.getController().newModel(); + if (newDeck == null) { + editorType.getController().newModel(); + } + else { + editorType.getController().setDeck(newDeck); + } } } else { @@ -658,6 +666,16 @@ public class FDeckEditor extends TabPageScreen { return modelPath; } + @SuppressWarnings("unchecked") + public void setDeck(final Deck deck) { + modelInStorage = false; + model = (T)deck; + currentFolder = rootFolder; + modelPath = ""; + setSaved(false); + editor.setDeck(deck); + } + public void setModel(final T document) { setModel(document, false); }