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() {
@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() {

View File

@@ -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<FDeckEditor> {
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<FDeckEditor> {
return null;
}
public void setSaveHandler(FEventHandler saveHandler0) {
saveHandler = saveHandler0;
}
protected void save(final Callback<Boolean> callback) {
if (StringUtils.isEmpty(deck.getName())) {
FOptionPane.showInputDialog("Enter name for new deck:", "New Deck", new Callback<String>() {
@@ -797,6 +803,9 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
break;
}
editor.setDeck(getDeck());
if (editor.saveHandler != null) {
editor.saveHandler.handleEvent(new FEvent(editor, FEventType.SAVE));
}
}
@SuppressWarnings("unchecked")

View File

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