mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Fix switching between Editors
This commit is contained in:
@@ -184,7 +184,7 @@ public enum FControl implements KeyEventDispatcher {
|
|||||||
if (!MenuUtil.getUserConfirmation(userPrompt, "Exit Forge", this.game == null)) { //default Yes if no game active
|
if (!MenuUtil.getUserConfirmation(userPrompt, "Exit Forge", this.game == null)) { //default Yes if no game active
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!CDeckEditorUI.SINGLETON_INSTANCE.canExit()) {
|
if (!CDeckEditorUI.SINGLETON_INSTANCE.canSwitchAway(true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -273,7 +273,9 @@ public enum FControl implements KeyEventDispatcher {
|
|||||||
//if (this.currentScreen == screen) { return; }
|
//if (this.currentScreen == screen) { return; }
|
||||||
|
|
||||||
//give previous screen a chance to perform special switch handling and/or cancel switching away from screen
|
//give previous screen a chance to perform special switch handling and/or cancel switching away from screen
|
||||||
if (!Singletons.getView().getNavigationBar().canSwitchAway()) { return; }
|
if (this.currentScreen != screen && !Singletons.getView().getNavigationBar().canSwitch(screen)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.currentScreen == FScreen.MATCH_SCREEN) { //hide targeting overlay and reset image if was on match screen
|
if (this.currentScreen == FScreen.MATCH_SCREEN) { //hide targeting overlay and reset image if was on match screen
|
||||||
SOverlayUtils.hideTargetingOverlay();
|
SOverlayUtils.hideTargetingOverlay();
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public enum VBazaarUI implements IVTopLevelUI {
|
|||||||
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwitching(FScreen screen) {
|
public boolean onSwitching(FScreen fromScreen, FScreen toScreen) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,9 +101,15 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
CPicture.SINGLETON_INSTANCE.showImage(item);
|
CPicture.SINGLETON_INSTANCE.showImage(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canExit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
if (this.childController != null) {
|
if (this.childController != null) {
|
||||||
return this.childController.exit();
|
if (!this.childController.canSwitchAway(isClosing)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.childController.resetUIChanges();
|
||||||
|
if (isClosing) {
|
||||||
|
screenChildControllers.remove(this.childController.getScreen());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -117,15 +123,14 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set controller for current configuration of editor.
|
* Set controller for a given editor screen.
|
||||||
*
|
|
||||||
* @param editor0   {@link forge.gui.deckeditor.controllers.ACEditorBase}<?, ?>
|
|
||||||
*/
|
*/
|
||||||
public void setCurrentEditorController(ACEditorBase<? extends InventoryItem, ? extends DeckBase> editor0) {
|
public void setEditorController(ACEditorBase<? extends InventoryItem, ? extends DeckBase> childController0) {
|
||||||
if (this.childController == editor0) { return; }
|
FScreen screen = childController0.getScreen();
|
||||||
this.childController = editor0;
|
screenChildControllers.put(screen, childController0);
|
||||||
screenChildControllers.put(Singletons.getControl().getCurrentScreen(), editor0);
|
if (screen == Singletons.getControl().getCurrentScreen()) {
|
||||||
updateController();
|
setCurrentEditorController(childController0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface _MoveAction {
|
private interface _MoveAction {
|
||||||
@@ -298,9 +303,11 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates UI and listeners for current controller.
|
* Set current editor controller
|
||||||
*/
|
*/
|
||||||
private void updateController() {
|
private void setCurrentEditorController(ACEditorBase<? extends InventoryItem, ? extends DeckBase> childController0) {
|
||||||
|
this.childController = childController0;
|
||||||
|
|
||||||
if (childController == null) { return; }
|
if (childController == null) { return; }
|
||||||
|
|
||||||
final ItemManager<? extends InventoryItem> catView = childController.getCatalogManager();
|
final ItemManager<? extends InventoryItem> catView = childController.getCatalogManager();
|
||||||
@@ -588,7 +595,7 @@ public enum CDeckEditorUI implements ICDoc, IMenuProvider {
|
|||||||
setCurrentEditorController(screenChildController);
|
setCurrentEditorController(screenChildController);
|
||||||
}
|
}
|
||||||
else if (screen == FScreen.DECK_EDITOR_CONSTRUCTED) {
|
else if (screen == FScreen.DECK_EDITOR_CONSTRUCTED) {
|
||||||
setCurrentEditorController(new CEditorConstructed()); //ensure Constructed deck editor controller initialized
|
setEditorController(new CEditorConstructed()); //ensure Constructed deck editor controller initialized
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,8 +45,9 @@ public enum VDeckEditorUI implements IVTopLevelUI {
|
|||||||
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwitching(FScreen screen) {
|
public boolean onSwitching(FScreen fromScreen, FScreen toScreen) {
|
||||||
return CDeckEditorUI.SINGLETON_INSTANCE.canExit(); //ensure deck saved before switching away
|
//ensure deck saved before switching
|
||||||
|
return CDeckEditorUI.SINGLETON_INSTANCE.canSwitchAway(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -59,6 +60,6 @@ public enum VDeckEditorUI implements IVTopLevelUI {
|
|||||||
Singletons.getControl().setCurrentScreen(FScreen.HOME_SCREEN);
|
Singletons.getControl().setCurrentScreen(FScreen.HOME_SCREEN);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return CDeckEditorUI.SINGLETON_INSTANCE.canExit();
|
return CDeckEditorUI.SINGLETON_INSTANCE.canSwitchAway(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import javax.swing.SwingUtilities;
|
|||||||
|
|
||||||
import forge.deck.DeckBase;
|
import forge.deck.DeckBase;
|
||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
|
import forge.gui.framework.FScreen;
|
||||||
import forge.gui.framework.ICDoc;
|
import forge.gui.framework.ICDoc;
|
||||||
import forge.gui.framework.IVDoc;
|
import forge.gui.framework.IVDoc;
|
||||||
import forge.gui.framework.SRearrangingUtil;
|
import forge.gui.framework.SRearrangingUtil;
|
||||||
@@ -59,9 +60,18 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean listenersHooked;
|
public boolean listenersHooked;
|
||||||
|
private final FScreen screen;
|
||||||
private ItemManager<TItem> catalogManager;
|
private ItemManager<TItem> catalogManager;
|
||||||
private ItemManager<TItem> deckManager;
|
private ItemManager<TItem> deckManager;
|
||||||
|
|
||||||
|
protected ACEditorBase(FScreen screen0) {
|
||||||
|
this.screen = screen0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FScreen getScreen() {
|
||||||
|
return this.screen;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Operation to add one of selected card to current deck.
|
* Operation to add one of selected card to current deck.
|
||||||
*/
|
*/
|
||||||
@@ -88,18 +98,22 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
|||||||
public abstract DeckController<TModel> getDeckController();
|
public abstract DeckController<TModel> getDeckController();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when an editor wants to exit. Should confirm save options,
|
* Called when switching away from or closing the editor wants to exit. Should confirm save options.
|
||||||
* update next UI screen, etc.
|
|
||||||
*
|
*
|
||||||
* @return boolean   true if safe to exit
|
* @return boolean   true if safe to exit
|
||||||
*/
|
*/
|
||||||
public abstract boolean exit();
|
public abstract boolean canSwitchAway(boolean isClosing);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets and initializes the current editor.
|
* Resets and initializes the current editor.
|
||||||
*/
|
*/
|
||||||
public abstract void update();
|
public abstract void update();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset UI changes made in update
|
||||||
|
*/
|
||||||
|
public abstract void resetUIChanges();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the ItemManager holding the cards in the current deck.
|
* Gets the ItemManager holding the cards in the current deck.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public final class CEditorCommander extends ACEditorBase<PaperCard, Deck> {
|
|||||||
* all cards are available.
|
* all cards are available.
|
||||||
*/
|
*/
|
||||||
public CEditorCommander() {
|
public CEditorCommander() {
|
||||||
super();
|
super(FScreen.DECK_EDITOR_COMMANDER);
|
||||||
allSections.add(DeckSection.Main);
|
allSections.add(DeckSection.Main);
|
||||||
allSections.add(DeckSection.Sideboard);
|
allSections.add(DeckSection.Sideboard);
|
||||||
allSections.add(DeckSection.Commander);
|
allSections.add(DeckSection.Commander);
|
||||||
@@ -208,15 +208,18 @@ public final class CEditorCommander extends ACEditorBase<PaperCard, Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
if (!SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_COMMANDER))
|
return SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_COMMANDER);
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
//Re-add tabs
|
//Re-add tabs
|
||||||
if (deckGenParent != null) {
|
if (deckGenParent != null) {
|
||||||
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
|
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
|
||||||
@@ -224,8 +227,6 @@ public final class CEditorCommander extends ACEditorBase<PaperCard, Deck> {
|
|||||||
if (allDecksParent != null) {
|
if (allDecksParent != null) {
|
||||||
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
|
|||||||
* all cards are available.
|
* all cards are available.
|
||||||
*/
|
*/
|
||||||
public CEditorConstructed() {
|
public CEditorConstructed() {
|
||||||
super();
|
super(FScreen.DECK_EDITOR_CONSTRUCTED);
|
||||||
|
|
||||||
allSections.add(DeckSection.Main);
|
allSections.add(DeckSection.Main);
|
||||||
allSections.add(DeckSection.Sideboard);
|
allSections.add(DeckSection.Sideboard);
|
||||||
@@ -308,10 +308,17 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
return SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_CONSTRUCTED);
|
return SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_CONSTRUCTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ public class CEditorDraftingProcess extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
* Updates the deck editor UI as necessary draft selection mode.
|
* Updates the deck editor UI as necessary draft selection mode.
|
||||||
*/
|
*/
|
||||||
public CEditorDraftingProcess() {
|
public CEditorDraftingProcess() {
|
||||||
|
super(FScreen.DRAFTING_PROCESS);
|
||||||
|
|
||||||
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
final CardManager deckManager = new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), false);
|
final CardManager deckManager = new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
|
|
||||||
@@ -271,10 +273,18 @@ public class CEditorDraftingProcess extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
CSubmenuDraft.SINGLETON_INSTANCE.update();
|
CSubmenuDraft.SINGLETON_INSTANCE.update();
|
||||||
|
|
||||||
//Re-rename buttons
|
//Re-rename buttons
|
||||||
@@ -297,7 +307,5 @@ public class CEditorDraftingProcess extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
|
|
||||||
// set catalog table back to free-selection mode
|
// set catalog table back to free-selection mode
|
||||||
getCatalogManager().getTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
|
getCatalogManager().getTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ import forge.util.storage.IStorage;
|
|||||||
public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
|
public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
|
||||||
|
|
||||||
private final DeckController<DeckGroup> controller;
|
private final DeckController<DeckGroup> controller;
|
||||||
private final FScreen screen;
|
|
||||||
private DragCell allDecksParent = null;
|
private DragCell allDecksParent = null;
|
||||||
private DragCell deckGenParent = null;
|
private DragCell deckGenParent = null;
|
||||||
|
|
||||||
@@ -61,7 +60,7 @@ public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
* @param deckMap0   {@link forge.deck.DeckGroup}<{@link forge.util.storage.IStorage}>
|
* @param deckMap0   {@link forge.deck.DeckGroup}<{@link forge.util.storage.IStorage}>
|
||||||
*/
|
*/
|
||||||
public CEditorLimited(final IStorage<DeckGroup> deckMap0, FScreen screen0) {
|
public CEditorLimited(final IStorage<DeckGroup> deckMap0, FScreen screen0) {
|
||||||
this.screen = screen0;
|
super(screen0);
|
||||||
|
|
||||||
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
final CardManager deckManager = new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), false);
|
final CardManager deckManager = new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
@@ -180,13 +179,18 @@ public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
final boolean okToExit = SEditorIO.confirmSaveChanges(this.screen);
|
return SEditorIO.confirmSaveChanges(getScreen());
|
||||||
|
}
|
||||||
|
|
||||||
if (okToExit) {
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
CSubmenuDraft.SINGLETON_INSTANCE.update();
|
CSubmenuDraft.SINGLETON_INSTANCE.update();
|
||||||
CSubmenuSealed.SINGLETON_INSTANCE.update();
|
CSubmenuSealed.SINGLETON_INSTANCE.update();
|
||||||
|
|
||||||
@@ -197,9 +201,5 @@ public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
|
|||||||
if (allDecksParent != null) {
|
if (allDecksParent != null) {
|
||||||
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return okToExit;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
|
|||||||
* @param questData0   {@link forge.quest.QuestController}
|
* @param questData0   {@link forge.quest.QuestController}
|
||||||
*/
|
*/
|
||||||
public CEditorQuest(final QuestController questData0) {
|
public CEditorQuest(final QuestController questData0) {
|
||||||
|
super(FScreen.DECK_EDITOR_QUEST);
|
||||||
|
|
||||||
this.questData = questData0;
|
this.questData = questData0;
|
||||||
|
|
||||||
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
final CardManager catalogManager = new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
@@ -302,13 +304,22 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
final boolean okToExit = SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_QUEST);
|
if (SEditorIO.confirmSaveChanges(FScreen.DECK_EDITOR_QUEST)) {
|
||||||
if (okToExit) {
|
|
||||||
Singletons.getModel().getQuest().save();
|
Singletons.getModel().getQuest().save();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
|
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
|
||||||
//Re-add tabs
|
//Re-add tabs
|
||||||
if (deckGenParent != null) {
|
if (deckGenParent != null) {
|
||||||
@@ -317,9 +328,6 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
|
|||||||
if (allDecksParent != null) {
|
if (allDecksParent != null) {
|
||||||
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
return okToExit;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import forge.gui.deckeditor.views.VCurrentDeck;
|
|||||||
import forge.gui.deckeditor.views.VDeckgen;
|
import forge.gui.deckeditor.views.VDeckgen;
|
||||||
import forge.gui.deckeditor.views.VProbabilities;
|
import forge.gui.deckeditor.views.VProbabilities;
|
||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
|
import forge.gui.framework.FScreen;
|
||||||
import forge.gui.home.quest.CSubmenuQuestDecks;
|
import forge.gui.home.quest.CSubmenuQuestDecks;
|
||||||
import forge.gui.toolbox.FLabel;
|
import forge.gui.toolbox.FLabel;
|
||||||
import forge.gui.toolbox.FSkin;
|
import forge.gui.toolbox.FSkin;
|
||||||
@@ -125,6 +126,8 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
|||||||
* a {@link forge.quest.data.QuestData} object.
|
* a {@link forge.quest.data.QuestData} object.
|
||||||
*/
|
*/
|
||||||
public CEditorQuestCardShop(final QuestController qd) {
|
public CEditorQuestCardShop(final QuestController qd) {
|
||||||
|
super(FScreen.QUEST_CARD_SHOP);
|
||||||
|
|
||||||
this.questData = qd;
|
this.questData = qd;
|
||||||
|
|
||||||
final InventoryItemManager catalogManager = new InventoryItemManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
final InventoryItemManager catalogManager = new InventoryItemManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), false);
|
||||||
@@ -536,15 +539,23 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
|
Singletons.getModel().getQuest().save();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
if (showingFullCatalog) {
|
if (showingFullCatalog) {
|
||||||
toggleFullCatalog();
|
toggleFullCatalog();
|
||||||
}
|
}
|
||||||
|
|
||||||
Singletons.getModel().getQuest().save();
|
|
||||||
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
|
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
|
||||||
|
|
||||||
// undo Card Shop Specifics
|
// undo Card Shop Specifics
|
||||||
@@ -575,7 +586,5 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
|||||||
if (probsParent != null) {
|
if (probsParent != null) {
|
||||||
probsParent.addDoc(VProbabilities.SINGLETON_INSTANCE);
|
probsParent.addDoc(VProbabilities.SINGLETON_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ import forge.util.storage.IStorage;
|
|||||||
*/
|
*/
|
||||||
public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
|
public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
|
||||||
private final DeckController<Deck> controller;
|
private final DeckController<Deck> controller;
|
||||||
private final FScreen screen;
|
|
||||||
private DragCell allDecksParent = null;
|
private DragCell allDecksParent = null;
|
||||||
private DragCell deckGenParent = null;
|
private DragCell deckGenParent = null;
|
||||||
private final Predicate<PaperCard> cardPoolCondition;
|
private final Predicate<PaperCard> cardPoolCondition;
|
||||||
@@ -67,10 +66,9 @@ public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
|
|||||||
* all cards are available.
|
* all cards are available.
|
||||||
*/
|
*/
|
||||||
public CEditorVariant(final IStorage<Deck> folder, final Predicate<PaperCard> poolCondition, final FScreen screen0) {
|
public CEditorVariant(final IStorage<Deck> folder, final Predicate<PaperCard> poolCondition, final FScreen screen0) {
|
||||||
super();
|
super(screen0);
|
||||||
|
|
||||||
this.cardPoolCondition = poolCondition;
|
this.cardPoolCondition = poolCondition;
|
||||||
this.screen = screen0;
|
|
||||||
|
|
||||||
this.setCatalogManager(new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), true));
|
this.setCatalogManager(new CardManager(VCardCatalog.SINGLETON_INSTANCE.getStatLabels(), true));
|
||||||
this.setDeckManager(new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), true));
|
this.setDeckManager(new CardManager(VCurrentDeck.SINGLETON_INSTANCE.getStatLabels(), true));
|
||||||
@@ -169,15 +167,18 @@ public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.gui.deckeditor.controllers.ACEditorBase#exit()
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#canSwitchAway()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean exit() {
|
public boolean canSwitchAway(boolean isClosing) {
|
||||||
if (!SEditorIO.confirmSaveChanges(this.screen))
|
return SEditorIO.confirmSaveChanges(getScreen());
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see forge.gui.deckeditor.controllers.ACEditorBase#resetUIChanges()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void resetUIChanges() {
|
||||||
//Re-add tabs
|
//Re-add tabs
|
||||||
if (deckGenParent != null) {
|
if (deckGenParent != null) {
|
||||||
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
|
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
|
||||||
@@ -185,7 +186,5 @@ public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
|
|||||||
if (allDecksParent != null) {
|
if (allDecksParent != null) {
|
||||||
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,8 +168,8 @@ public enum FScreen {
|
|||||||
return closeButtonTooltip;
|
return closeButtonTooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onSwitching() {
|
public boolean onSwitching(FScreen toScreen) {
|
||||||
return view.onSwitching(this);
|
return view.onSwitching(this, toScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onClosing() {
|
public boolean onClosing() {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public interface IVTopLevelUI {
|
|||||||
* Fires when this view's tab is being switched away from.
|
* Fires when this view's tab is being switched away from.
|
||||||
*
|
*
|
||||||
* @return true to allow switching away from tab, false otherwise */
|
* @return true to allow switching away from tab, false otherwise */
|
||||||
boolean onSwitching(FScreen screen);
|
boolean onSwitching(FScreen fromScreen, FScreen toScreen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fires when this view's tab is closing.
|
* Fires when this view's tab is closing.
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ public enum VHomeUI implements IVTopLevelUI {
|
|||||||
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwitching(FScreen screen) {
|
public boolean onSwitching(FScreen fromScreen, FScreen toScreen) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST);
|
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorQuest(Singletons.getModel().getQuest()));
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorQuest(Singletons.getModel().getQuest()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ public class SSubmenuQuestUtil {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.QUEST_CARD_SHOP);
|
Singletons.getControl().setCurrentScreen(FScreen.QUEST_CARD_SHOP);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||||
new CEditorQuestCardShop(Singletons.getModel().getQuest()));
|
new CEditorQuestCardShop(Singletons.getModel().getQuest()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public enum CSubmenuDraft implements ICDoc {
|
|||||||
draft.showGui(new BoosterDraft(o));
|
draft.showGui(new BoosterDraft(o));
|
||||||
|
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DRAFTING_PROCESS);
|
Singletons.getControl().setCurrentScreen(FScreen.DRAFTING_PROCESS);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(draft);
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(draft);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ public enum CSubmenuSealed implements ICDoc {
|
|||||||
Singletons.getModel().getDecks().getSealed(), FScreen.DECK_EDITOR_SEALED);
|
Singletons.getModel().getDecks().getSealed(), FScreen.DECK_EDITOR_SEALED);
|
||||||
|
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_SEALED);
|
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_SEALED);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(editor);
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(editor);
|
||||||
editor.getDeckController().setModel((T) sealed);
|
editor.getDeckController().setModel((T) sealed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ public enum CSubmenuArchenemy implements ICDoc {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_ARCHENEMY);
|
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_ARCHENEMY);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||||
new CEditorVariant(Singletons.getModel().getDecks().getScheme(), predSchemes, FScreen.DECK_EDITOR_ARCHENEMY));
|
new CEditorVariant(Singletons.getModel().getDecks().getScheme(), predSchemes, FScreen.DECK_EDITOR_ARCHENEMY));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -95,8 +95,7 @@ public enum CSubmenuCommander implements ICDoc {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander());
|
||||||
new CEditorCommander());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public enum CSubmenuPlanechase implements ICDoc {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_PLANECHASE);
|
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_PLANECHASE);
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||||
new CEditorVariant(Singletons.getModel().getDecks().getPlane(), predPlanes, FScreen.DECK_EDITOR_PLANECHASE));
|
new CEditorVariant(Singletons.getModel().getDecks().getPlane(), predPlanes, FScreen.DECK_EDITOR_PLANECHASE));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ public enum VMatchUI implements IVTopLevelUI {
|
|||||||
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwitching(FScreen screen) {
|
public boolean onSwitching(FScreen fromScreen, FScreen toScreen) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ public class DeckLister extends JPanel implements ILocalRepaint {
|
|||||||
|
|
||||||
Singletons.getControl().setCurrentScreen(screen);
|
Singletons.getControl().setCurrentScreen(screen);
|
||||||
if (editorCtrl != null) {
|
if (editorCtrl != null) {
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(editorCtrl);
|
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(editorCtrl);
|
||||||
}
|
}
|
||||||
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(d0.getName());
|
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(d0.getName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,8 +123,8 @@ public class FNavigationBar extends FTitleBarBase {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canSwitchAway() {
|
public boolean canSwitch(FScreen toScreen) {
|
||||||
return (selectedTab == null || selectedTab.screen.onSwitching());
|
return (selectedTab == null || selectedTab.screen.onSwitching(toScreen));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateSelectedTab() {
|
public void updateSelectedTab() {
|
||||||
|
|||||||
Reference in New Issue
Block a user