mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Prevent switching to custom deck until new deck saved
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -6,6 +6,7 @@ public class FEvent {
|
||||
LONG_PRESS,
|
||||
CHANGE,
|
||||
ACTIVATE,
|
||||
SAVE,
|
||||
DELETE
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user