From b26cf2495893193f93a226aa49e886499e2ea57c Mon Sep 17 00:00:00 2001 From: drdev Date: Fri, 20 Jun 2014 02:35:58 +0000 Subject: [PATCH] Prevent switching to custom deck until new deck saved --- .../src/forge/deck/FDeckChooser.java | 27 ++++++++++++------- .../src/forge/deck/FDeckEditor.java | 9 +++++++ .../src/forge/toolbox/FEvent.java | 1 + 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 158090c10b1..dca9d2609b6 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -64,29 +64,38 @@ public class FDeckChooser extends FScreen { btnNewDeck.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { + FDeckEditor editor; 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)); - } + if (generatedDeck == null) { return; } + + generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default + editor = new FDeckEditor(EditorType.Constructed, generatedDeck); } else { FOptionPane.showErrorDialog("You must select something before you can generate a new deck."); + return; } break; default: - needRefreshOnActivate = true; - setSelectedDeckType(DeckType.CUSTOM_DECK); - Forge.openScreen(new FDeckEditor(EditorType.Constructed, "")); + editor = new FDeckEditor(EditorType.Constructed, ""); break; } + editor.setSaveHandler(new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + //ensure user returns to custom user deck and that list is refreshed if new deck is saved + if (!needRefreshOnActivate) { + needRefreshOnActivate = true; + setSelectedDeckType(DeckType.CUSTOM_DECK); + } + } + }); + Forge.openScreen(editor); } }); btnEditDeck.setCommand(new FEventHandler() { diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 34cf23f38ce..b0b19570363 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -29,6 +29,7 @@ import forge.screens.TabPageScreen; import forge.toolbox.FContainer; import forge.toolbox.FEvent; import forge.toolbox.FEvent.FEventHandler; +import forge.toolbox.FEvent.FEventType; import forge.toolbox.FLabel; import forge.toolbox.FOptionPane; import forge.util.Callback; @@ -156,6 +157,7 @@ public class FDeckEditor extends TabPageScreen { private CatalogPage catalogPage; private DeckSectionPage mainDeckPage; private DeckSectionPage sideboardPage; + private FEventHandler saveHandler; protected final DeckHeader deckHeader = add(new DeckHeader()); protected final FLabel lblName = deckHeader.add(new FLabel.Builder().font(FSkinFont.get(16)).insets(new Vector2(Utils.scaleX(5), 0)).build()); @@ -346,6 +348,10 @@ public class FDeckEditor extends TabPageScreen { return null; } + public void setSaveHandler(FEventHandler saveHandler0) { + saveHandler = saveHandler0; + } + protected void save(final Callback callback) { if (StringUtils.isEmpty(deck.getName())) { FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback() { @@ -797,6 +803,9 @@ public class FDeckEditor extends TabPageScreen { break; } editor.setDeck(getDeck()); + if (editor.saveHandler != null) { + editor.saveHandler.handleEvent(new FEvent(editor, FEventType.SAVE)); + } } @SuppressWarnings("unchecked") diff --git a/forge-gui-mobile/src/forge/toolbox/FEvent.java b/forge-gui-mobile/src/forge/toolbox/FEvent.java index 69c867d6e5f..9ca32890fe4 100644 --- a/forge-gui-mobile/src/forge/toolbox/FEvent.java +++ b/forge-gui-mobile/src/forge/toolbox/FEvent.java @@ -6,6 +6,7 @@ public class FEvent { LONG_PRESS, CHANGE, ACTIVATE, + SAVE, DELETE }