Prevent switching to custom deck until new deck saved

This commit is contained in:
drdev
2014-06-20 02:35:58 +00:00
parent 83fcd63fe7
commit b26cf24958
3 changed files with 28 additions and 9 deletions

View File

@@ -64,29 +64,38 @@ public class FDeckChooser extends FScreen {
btnNewDeck.setCommand(new FEventHandler() { btnNewDeck.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
FDeckEditor editor;
switch (selectedDeckType) { switch (selectedDeckType) {
case COLOR_DECK: case COLOR_DECK:
case THEME_DECK: case THEME_DECK:
final DeckProxy deck = lstDecks.getSelectedItem(); final DeckProxy deck = lstDecks.getSelectedItem();
if (deck != null) { if (deck != null) {
Deck generatedDeck = deck.getDeck(); Deck generatedDeck = deck.getDeck();
if (generatedDeck != null) { if (generatedDeck == null) { return; }
generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default generatedDeck = (Deck)generatedDeck.copyTo(""); //prevent deck having a name by default
needRefreshOnActivate = true; editor = new FDeckEditor(EditorType.Constructed, generatedDeck);
setSelectedDeckType(DeckType.CUSTOM_DECK); //ensure user returns to custom user deck
Forge.openScreen(new FDeckEditor(EditorType.Constructed, generatedDeck));
}
} }
else { else {
FOptionPane.showErrorDialog("You must select something before you can generate a new deck."); FOptionPane.showErrorDialog("You must select something before you can generate a new deck.");
return;
} }
break; break;
default: default:
needRefreshOnActivate = true; editor = new FDeckEditor(EditorType.Constructed, "");
setSelectedDeckType(DeckType.CUSTOM_DECK);
Forge.openScreen(new FDeckEditor(EditorType.Constructed, ""));
break; 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() { btnEditDeck.setCommand(new FEventHandler() {

View File

@@ -29,6 +29,7 @@ import forge.screens.TabPageScreen;
import forge.toolbox.FContainer; import forge.toolbox.FContainer;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
import forge.toolbox.FEvent.FEventType;
import forge.toolbox.FLabel; import forge.toolbox.FLabel;
import forge.toolbox.FOptionPane; import forge.toolbox.FOptionPane;
import forge.util.Callback; import forge.util.Callback;
@@ -156,6 +157,7 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
private CatalogPage catalogPage; private CatalogPage catalogPage;
private DeckSectionPage mainDeckPage; private DeckSectionPage mainDeckPage;
private DeckSectionPage sideboardPage; private DeckSectionPage sideboardPage;
private FEventHandler saveHandler;
protected final DeckHeader deckHeader = add(new DeckHeader()); 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()); 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<FDeckEditor> {
return null; return null;
} }
public void setSaveHandler(FEventHandler saveHandler0) {
saveHandler = saveHandler0;
}
protected void save(final Callback<Boolean> callback) { protected void save(final Callback<Boolean> callback) {
if (StringUtils.isEmpty(deck.getName())) { if (StringUtils.isEmpty(deck.getName())) {
FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback<String>() { FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback<String>() {
@@ -797,6 +803,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
break; break;
} }
editor.setDeck(getDeck()); editor.setDeck(getDeck());
if (editor.saveHandler != null) {
editor.saveHandler.handleEvent(new FEvent(editor, FEventType.SAVE));
}
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@@ -6,6 +6,7 @@ public class FEvent {
LONG_PRESS, LONG_PRESS,
CHANGE, CHANGE,
ACTIVATE, ACTIVATE,
SAVE,
DELETE DELETE
} }