From 5050b25daab8ba4bac4b3790422018d3cced161c Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 19 Jun 2014 02:35:11 +0000 Subject: [PATCH] Support creating new deck --- .../src/forge/deck/FDeckChooser.java | 12 +++++++ .../src/forge/deck/FDeckEditor.java | 33 +++++++++++++++---- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index e47026d20c9..66b95639470 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -35,6 +35,7 @@ public class FDeckChooser extends FScreen { private FComboBox cmbDeckTypes; private DeckType selectedDeckType; + private boolean needRefreshOnActivate; private final DeckManager lstDecks = new DeckManager(GameType.Constructed); private final FButton btnNewDeck = new FButton("New Deck"); @@ -60,6 +61,7 @@ public class FDeckChooser extends FScreen { btnNewDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { + needRefreshOnActivate = true; Forge.openScreen(new FDeckEditor(EditorType.Constructed, "")); } }); @@ -87,10 +89,20 @@ public class FDeckChooser extends FScreen { }); } + @Override + public void onActivate() { + if (needRefreshOnActivate) { + needRefreshOnActivate = false; + updateCustom(); + lstDecks.setSelectedString(DeckPreferences.getCurrentDeck()); + } + } + private void editSelectedDeck() { final DeckProxy deck = lstDecks.getSelectedItem(); if (deck == null) { return; } + needRefreshOnActivate = true; DeckPreferences.setCurrentDeck(deck.getName()); Forge.openScreen(new FDeckEditor(EditorType.Constructed, deck)); } diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 1662f52ec5b..14f437a4a2a 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -175,11 +175,14 @@ public class FDeckEditor extends TabPageScreen { editorType.getController().editor = this; if (StringUtils.isEmpty(editDeckName)) { - setDeck(new Deck()); if (editorType == EditorType.Draft) { //hide deck header on while drafting + setDeck(new Deck()); deckHeader.setVisible(false); } + else { + editorType.getController().newModel(); + } } else { if (editorType == EditorType.Draft) { @@ -274,9 +277,21 @@ public class FDeckEditor extends TabPageScreen { } } - //if opening brand new sealed deck, show sideboard (card pool) by default - if (editorType == EditorType.Sealed && deck.getMain().isEmpty()) { - setSelectedPage(sideboardPage); + switch (editorType) { + case Sealed: + //if opening brand new sealed deck, show sideboard (card pool) by default + if (deck.getMain().isEmpty()) { + setSelectedPage(sideboardPage); + } + break; + case Draft: + break; + default: + //if editing existing non-limited deck, show main deck by default + if (!deck.getMain().isEmpty()) { + setSelectedPage(mainDeckPage); + } + break; } } @@ -327,6 +342,8 @@ public class FDeckEditor extends TabPageScreen { FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback() { @Override public void run(String result) { + if (StringUtils.isEmpty(result)) { return; } + editorType.getController().saveAs(result); if (callback != null) { callback.run(true); @@ -468,7 +485,7 @@ public class FDeckEditor extends TabPageScreen { } public void refresh() { - ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class); + cardManager.setPool(ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class)); } @Override @@ -689,6 +706,9 @@ public class FDeckEditor extends TabPageScreen { if (editor != null) { String name = this.getModelName(); + if (name.isEmpty()) { + name = "[New Deck]"; + } if (!saved) { name = "*" + name; } @@ -797,8 +817,7 @@ public class FDeckEditor extends TabPageScreen { } public void newModel() { - model = newModelCreator.get(); - setSaved(true); + setModel(newModelCreator.get()); } public String getModelName() {