From d0a0006b48de7a1935b2c495b4f04d109cb5aca2 Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 12 Jun 2014 15:58:56 +0000 Subject: [PATCH] Fix issue with saving draft decks and saving after renaming deck Version bump to 1.5.20.004 --- forge-gui-android/pom.xml | 2 +- forge-gui-mobile/src/forge/Forge.java | 2 +- .../src/forge/deck/FDeckEditor.java | 91 +++++++------------ 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index f91aeded4e8..7f3adf627cb 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -7,7 +7,7 @@ jar -Xms128m -Xmx2048m - 1.5.20.003 + 1.5.20.004 diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index cef836ffaaf..07998eb6a2b 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -47,7 +47,7 @@ import forge.util.FileUtil; import forge.util.Utils; public class Forge implements ApplicationListener { - public static final String CURRENT_VERSION = "1.5.20.003"; + public static final String CURRENT_VERSION = "1.5.20.004"; private static final ApplicationListener app = new Forge(); private static Clipboard clipboard; diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 8e22d6881e4..acbebe599db 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -175,7 +175,7 @@ public class FDeckEditor extends TabPageScreen { editorType.getController().editor = this; if (StringUtils.isEmpty(editDeckName)) { - deck = new Deck(); + setDeck(new Deck()); if (editorType == EditorType.Draft) { //hide deck header on while drafting deckHeader.setVisible(false); @@ -186,7 +186,6 @@ public class FDeckEditor extends TabPageScreen { tabPages[0].hideTab(); //hide Draft Pack page if editing existing draft deck } editorType.getController().load(editDeckPath, editDeckName); - deck = editorType.getController().getDeck(); } btnSave.setCommand(new FEventHandler() { @@ -259,9 +258,8 @@ public class FDeckEditor extends TabPageScreen { } }); - //cache specific pages and initialize all pages after fields set - for (int i = 0; i < tabPages.length; i++) { - DeckEditorPage tabPage = (DeckEditorPage) tabPages[i]; + //cache specific pages + for (TabPage tabPage : tabPages) { if (tabPage instanceof CatalogPage) { catalogPage = (CatalogPage) tabPage; } @@ -274,7 +272,6 @@ public class FDeckEditor extends TabPageScreen { sideboardPage = deckSectionPage; } } - tabPage.initialize(); } //if opening brand new sealed deck, show sideboard (card pool) by default @@ -299,6 +296,15 @@ public class FDeckEditor extends TabPageScreen { public Deck getDeck() { return deck; } + public void setDeck(Deck deck0) { + if (deck == deck0) { return; } + deck = deck0; + + //reinitialize tab pages when deck changes + for (TabPage tabPage : tabPages) { + ((DeckEditorPage)tabPage).initialize(); + } + } protected CatalogPage getCatalogPage() { return catalogPage; @@ -317,56 +323,23 @@ public class FDeckEditor extends TabPageScreen { } protected void save(final Callback callback) { - final DeckController controller = editorType.getController(); - final String name = deck.getName(); - - // Warn if no name - if (StringUtils.isEmpty(name)) { - FOptionPane.showErrorDialog("Please name your deck using the 'Name' box.", "Save Error!"); - if (callback != null) { - callback.run(false); - } - return; - } - - // Confirm if overwrite - if (controller.fileExists(name)) { - //prompt only if name was changed - if (!StringUtils.equals(name, controller.getModelName())) { - FOptionPane.showConfirmDialog("There is already a deck named '" + name + "'. Overwrite?", - "Overwrite Deck?", new Callback() { - @Override - public void run(Boolean result) { - if (result) { - controller.save(); - } - if (callback != null) { - callback.run(result); - } - } - }); - return; - } - controller.save(); - if (callback != null) { - callback.run(true); - } - return; - } - - // Confirm if a new deck will be created - FOptionPane.showConfirmDialog("This will create a new deck named '" + - name + "'. Continue?", "Create Deck?", new Callback() { - @Override - public void run(Boolean result) { - if (result) { - controller.saveAs(name); - } - if (callback != null) { - callback.run(result); - } + if (StringUtils.isEmpty(deck.getName())) { + FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback() { + @Override + public void run(String result) { + editorType.getController().saveAs(result); + if (callback != null) { + callback.run(true); } - }); + } + }); + return; + } + + editorType.getController().save(); + if (callback != null) { + callback.run(true); + } } @Override @@ -472,6 +445,8 @@ public class FDeckEditor extends TabPageScreen { } protected static class CatalogPage extends CardManagerPage { + private boolean initialized; + protected CatalogPage() { this(ItemManagerConfig.CARD_CATALOG, "Catalog", FSkinImage.FOLDER); } @@ -481,6 +456,9 @@ public class FDeckEditor extends TabPageScreen { @Override protected void initialize() { + if (initialized) { return; } //prevent initializing more than once if deck changes + initialized = true; + cardManager.setCaption(getItemManagerCaption()); refresh(); } @@ -680,6 +658,7 @@ public class FDeckEditor extends TabPageScreen { modelPath = ""; setSaved(true); } + editor.setDeck(getDeck()); } private boolean isModelInSyncWithFolder() { @@ -776,7 +755,7 @@ public class FDeckEditor extends TabPageScreen { default: break; } - editor.deck = getDeck(); + editor.setDeck(getDeck()); } @SuppressWarnings("unchecked")