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")