- change FControl state from int into an enum

- ensure All Decks and Deck Generation tabs only show up in the Constructed deck editor
This commit is contained in:
myk
2013-02-15 11:32:19 +00:00
parent 87e3894c47
commit d940f2b1a8
24 changed files with 183 additions and 140 deletions

View File

@@ -67,26 +67,21 @@ public enum FControl {
private List<Shortcut> shortcuts;
private JLayeredPane display;
private int state = -1;
private Screens state = Screens.UNKNOWN;
private WindowListener waDefault, waConcede, waLeaveBazaar, waLeaveEditor;
/** */
public static final int HOME_SCREEN = 0;
/** */
public static final int MATCH_SCREEN = 1;
/** */
public static final int DECK_EDITOR_CONSTRUCTED = 2;
/** */
public static final int QUEST_BAZAAR = 3;
/** */
public static final int DECK_EDITOR_LIMITED = 4;
/** */
public static final int DECK_EDITOR_QUEST = 5;
/** */
public static final int QUEST_CARD_SHOP = 6;
/** */
public static final int DRAFTING_PROCESS = 7;
public static enum Screens {
UNKNOWN,
HOME_SCREEN,
MATCH_SCREEN,
DECK_EDITOR_CONSTRUCTED,
QUEST_BAZAAR,
DECK_EDITOR_LIMITED,
DECK_EDITOR_QUEST,
QUEST_CARD_SHOP,
DRAFTING_PROCESS
}
private final SoundSystem soundSystem = new SoundSystem();
@@ -127,7 +122,7 @@ public enum FControl {
Singletons.getView().getFrame().setDefaultCloseOperation(
WindowConstants.DO_NOTHING_ON_CLOSE);
changeState(FControl.HOME_SCREEN);
changeState(Screens.HOME_SCREEN);
}
};
@@ -137,7 +132,7 @@ public enum FControl {
Singletons.getView().getFrame().setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
if (CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().exit()) {
changeState(FControl.HOME_SCREEN);
changeState(Screens.HOME_SCREEN);
}
}
};
@@ -185,17 +180,11 @@ public enum FControl {
}
/**
* <p>
* changeState.
* </p>
* Switches between display states in top level JFrame.
*
* @param i0
* &emsp; State index: 0 for home, 1 for match, etc.
*/
public void changeState(final int i0) {
public void changeState(Screens screen) {
clearChildren(JLayeredPane.DEFAULT_LAYER);
this.state = i0;
this.state = screen;
Singletons.getView().getFrame().removeWindowListener(waDefault);
Singletons.getView().getFrame().removeWindowListener(waConcede);
@@ -203,7 +192,7 @@ public enum FControl {
Singletons.getView().getFrame().removeWindowListener(waLeaveEditor);
// Fire up new state
switch (i0) {
switch (screen) {
case HOME_SCREEN:
SOverlayUtils.hideTargetingOverlay();
VHomeUI.SINGLETON_INSTANCE.populate();
@@ -242,6 +231,7 @@ public enum FControl {
break;
default:
throw new RuntimeException("unhandled screen: " + screen);
}
}
@@ -251,7 +241,7 @@ public enum FControl {
*
* @return {@link java.lang.Integer}
* */
public int getState() {
public Screens getState() {
return this.state;
}
@@ -313,7 +303,6 @@ public enum FControl {
* @return
*/
public SoundSystem getSoundSystem() {
// TODO Auto-generated method stub
return soundSystem;
}
}

View File

@@ -50,7 +50,7 @@ public class KeyboardShortcuts {
final Action actShowStack = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
SDisplayUtil.showTab(EDocID.REPORT_STACK.getDoc());
}
};
@@ -59,7 +59,7 @@ public class KeyboardShortcuts {
final Action actShowCombat = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
SDisplayUtil.showTab(EDocID.REPORT_COMBAT.getDoc());
}
};
@@ -68,7 +68,7 @@ public class KeyboardShortcuts {
final Action actShowConsole = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
SDisplayUtil.showTab(EDocID.REPORT_LOG.getDoc());
}
};
@@ -77,7 +77,7 @@ public class KeyboardShortcuts {
final Action actShowPlayers = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
SDisplayUtil.showTab(EDocID.REPORT_PLAYERS.getDoc());
}
};
@@ -86,7 +86,7 @@ public class KeyboardShortcuts {
final Action actShowDev = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.DEV_MODE_ENABLED)) {
SDisplayUtil.showTab(EDocID.DEV_MODE.getDoc());
}
@@ -97,7 +97,7 @@ public class KeyboardShortcuts {
final Action actConcede = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
CDock.SINGLETON_INSTANCE.concede();
}
};
@@ -106,7 +106,7 @@ public class KeyboardShortcuts {
final Action actEndTurn = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
CDock.SINGLETON_INSTANCE.endTurn();
}
};
@@ -115,7 +115,7 @@ public class KeyboardShortcuts {
final Action actAllAttack = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
CDock.SINGLETON_INSTANCE.alphaStrike();
}
};
@@ -124,7 +124,7 @@ public class KeyboardShortcuts {
final Action actTgtOverlay = new AbstractAction() {
@Override
public void actionPerformed(final ActionEvent e) {
if (Singletons.getControl().getState() != 1) { return; }
if (Singletons.getControl().getState() != FControl.Screens.MATCH_SCREEN) { return; }
CDock.SINGLETON_INSTANCE.toggleTargeting();
}
};

View File

@@ -146,7 +146,7 @@ public class MatchController {
CMatchUI.SINGLETON_INSTANCE.initMatch(currentGame.getRegisteredPlayers(), localHuman);
CDock.SINGLETON_INSTANCE.onGameStarts(currentGame, localHuman);
Singletons.getModel().getPreferences().actuateMatchPreferences();
Singletons.getControl().changeState(FControl.MATCH_SCREEN);
Singletons.getControl().changeState(FControl.Screens.MATCH_SCREEN);
SDisplayUtil.showTab(EDocID.REPORT_LOG.getDoc());
// set all observers

View File

@@ -51,6 +51,7 @@ import forge.gui.CardContainer;
import forge.gui.GuiUtils;
import forge.gui.deckeditor.SEditorIO.EditorPreference;
import forge.gui.deckeditor.controllers.ACEditorBase;
import forge.gui.deckeditor.controllers.CCardCatalog;
import forge.gui.deckeditor.controllers.CProbabilities;
import forge.gui.deckeditor.controllers.CStatistics;
import forge.gui.deckeditor.tables.EditorTableModel;
@@ -125,6 +126,7 @@ public enum CDeckEditorUI implements CardContainer {
childController.getTableDeck().setWantElasticColumns(wantElastic);
childController.getTableCatalog().setWantUnique(wantUnique);
childController.getTableDeck().setWantUnique(wantUnique);
CCardCatalog.SINGLETON_INSTANCE.applyCurrentFilter();
}
}

View File

@@ -1,8 +1,7 @@
package forge.gui.deckeditor;
import javax.swing.SwingWorker;
import javax.swing.SwingUtilities;
import forge.gui.deckeditor.controllers.CCardCatalog;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.framework.IVTopLevelUI;
import forge.gui.framework.SLayoutIO;
@@ -33,15 +32,12 @@ public enum VDeckEditorUI implements IVTopLevelUI {
*/
@Override
public void populate() {
final SwingWorker<Void, Void> w = new SwingWorker<Void, Void>() {
@Override
public Void doInBackground() {
SLayoutIO.loadLayout(null);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
VCardCatalog.SINGLETON_INSTANCE.focusTable();
return null;
}
};
CCardCatalog.SINGLETON_INSTANCE.applyCurrentFilter();
w.execute();
});
}
}

View File

@@ -17,10 +17,17 @@
*/
package forge.gui.deckeditor.controllers;
import javax.swing.SwingUtilities;
import forge.deck.DeckBase;
import forge.gui.deckeditor.tables.DeckController;
import forge.gui.deckeditor.tables.EditorTableView;
import forge.gui.framework.DragCell;
import forge.gui.framework.ICDoc;
import forge.gui.framework.IVDoc;
import forge.gui.framework.SRearrangingUtil;
import forge.item.InventoryItem;
import forge.view.FView;
/**
* Maintains a generically typed architecture for various editing
@@ -38,7 +45,6 @@ import forge.item.InventoryItem;
* @param <TModel> extends {@link forge.deck.DeckBase}
*/
public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends DeckBase> {
public interface ContextMenuBuilder {
/**
* Adds move-related items to the context menu
@@ -130,4 +136,33 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
this.tblCatalog = table0;
}
/**
* Removes the specified tab and returns its parent for later re-adding
*/
protected DragCell removeTab (IVDoc<? extends ICDoc> tab) {
final DragCell parent;
if (tab.getParentCell() == null) {
parent = null;
} else {
parent = tab.getParentCell();
parent.removeDoc(tab);
tab.setParentCell(null);
if (parent.getDocs().size() > 0) {
// if specified tab was first child of its parent, the new first tab needs re-selecting.
parent.setSelected(parent.getDocs().get(0));
} else {
// if the parent is now childless, fill in the resultant gap
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
SRearrangingUtil.fillGap(parent);
FView.SINGLETON_INSTANCE.removeDragCell(parent);
}
});
}
}
return parent;
}
}

View File

@@ -19,7 +19,6 @@ package forge.gui.deckeditor.controllers;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import forge.Singletons;
import forge.control.FControl;
@@ -37,13 +36,11 @@ import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.deckeditor.views.VDeckgen;
import forge.gui.framework.DragCell;
import forge.gui.framework.SRearrangingUtil;
import forge.gui.home.sanctioned.CSubmenuDraft;
import forge.item.CardDb;
import forge.item.CardPrinted;
import forge.item.InventoryItem;
import forge.item.ItemPoolView;
import forge.view.FView;
/**
* Updates the deck editor UI as necessary draft selection mode.
@@ -98,21 +95,8 @@ public class CEditorDraftingProcess extends ACEditorBase<CardPrinted, DeckGroup>
this.getTableCatalog().setup(VCardCatalog.SINGLETON_INSTANCE, SColumnUtil.getCatalogDefaultColumns());
this.getTableDeck().setup(VCurrentDeck.SINGLETON_INSTANCE, SColumnUtil.getDeckDefaultColumns());
/*
this.getTableCatalog().getTable().addMouseListener(this.pickWithMouse);
this.getTableCatalog().getTable().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(final KeyEvent e) {
if (e.getKeyChar() == ' ') {
CEditorDraftingProcess.this.addCard();
}
}
});
*/
ccAddLabel = VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().getText();
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText("Choose Card");
}
/* (non-Javadoc)
@@ -247,7 +231,7 @@ public class CEditorDraftingProcess extends ACEditorBase<CardPrinted, DeckGroup>
Singletons.getModel().getDecks().getDraft().add(finishedDraft);
}
FControl.SINGLETON_INSTANCE.changeState(FControl.HOME_SCREEN);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.HOME_SCREEN);
}
//========== Overridden from ACEditorBase
@@ -291,42 +275,11 @@ public class CEditorDraftingProcess extends ACEditorBase<CardPrinted, DeckGroup>
VCurrentDeck.SINGLETON_INSTANCE.getPnlHeader().setVisible(false);
if (VDeckgen.SINGLETON_INSTANCE.getParentCell() != null) {
deckGenParent = VDeckgen.SINGLETON_INSTANCE.getParentCell();
deckGenParent.removeDoc(VDeckgen.SINGLETON_INSTANCE);
VDeckgen.SINGLETON_INSTANCE.setParentCell(null);
// If Deck Gen was first tab, the new first tab needs re-selecting.
if (deckGenParent.getDocs().size() > 0) {
deckGenParent.setSelected(deckGenParent.getDocs().get(0));
}
}
if (VAllDecks.SINGLETON_INSTANCE.getParentCell() != null) {
allDecksParent = VAllDecks.SINGLETON_INSTANCE.getParentCell();
allDecksParent.removeDoc(VAllDecks.SINGLETON_INSTANCE);
VAllDecks.SINGLETON_INSTANCE.setParentCell(null);
// If All Decks was first tab, the new first tab needs re-selecting.
if (allDecksParent.getDocs().size() > 0) {
allDecksParent.setSelected(allDecksParent.getDocs().get(0));
}
}
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
// set catalog table to single-selection only mode
getTableCatalog().getTable().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// Fill in gaps
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
for (final DragCell c : FView.SINGLETON_INSTANCE.getDragCells()) {
if (c.getDocs().size() == 0) {
SRearrangingUtil.fillGap(c);
FView.SINGLETON_INSTANCE.removeDragCell(c);
}
}
}
});
}
/* (non-Javadoc)
@@ -357,7 +310,6 @@ public class CEditorDraftingProcess extends ACEditorBase<CardPrinted, DeckGroup>
// set catalog table back to free-selection mode
getTableCatalog().getTable().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
return true;
}
}

View File

@@ -27,8 +27,11 @@ import forge.gui.deckeditor.SEditorUtil;
import forge.gui.deckeditor.tables.DeckController;
import forge.gui.deckeditor.tables.EditorTableView;
import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.views.VAllDecks;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.deckeditor.views.VDeckgen;
import forge.gui.framework.DragCell;
import forge.gui.home.sanctioned.CSubmenuDraft;
import forge.gui.home.sanctioned.CSubmenuSealed;
import forge.item.CardPrinted;
@@ -46,6 +49,8 @@ import forge.util.IStorage;
public final class CEditorLimited extends ACEditorBase<CardPrinted, DeckGroup> {
private final DeckController<DeckGroup> controller;
private DragCell allDecksParent = null;
private DragCell deckGenParent = null;
//========== Constructor
@@ -169,6 +174,9 @@ public final class CEditorLimited extends ACEditorBase<CardPrinted, DeckGroup> {
VCardCatalog.SINGLETON_INSTANCE.getPnlHeader().setVisible(true);
VCardCatalog.SINGLETON_INSTANCE.getLblTitle().setText("Deck Editor: Limited Mode");
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
}
/* (non-Javadoc)
@@ -181,6 +189,15 @@ public final class CEditorLimited extends ACEditorBase<CardPrinted, DeckGroup> {
if (okToExit) {
CSubmenuDraft.SINGLETON_INSTANCE.update();
CSubmenuSealed.SINGLETON_INSTANCE.update();
//Re-add tabs
if (deckGenParent != null) {
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
}
if (allDecksParent != null) {
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
}
}
return okToExit;

View File

@@ -37,8 +37,11 @@ import forge.gui.deckeditor.tables.EditorTableView;
import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.tables.SColumnUtil.ColumnName;
import forge.gui.deckeditor.tables.TableColumnInfo;
import forge.gui.deckeditor.views.VAllDecks;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.deckeditor.views.VDeckgen;
import forge.gui.framework.DragCell;
import forge.gui.home.quest.CSubmenuQuestDecks;
import forge.gui.toolbox.FLabel;
import forge.item.CardPrinted;
@@ -61,6 +64,8 @@ import forge.quest.QuestController;
public final class CEditorQuest extends ACEditorBase<CardPrinted, Deck> {
private final QuestController questData;
private final DeckController<Deck> controller;
private DragCell allDecksParent = null;
private DragCell deckGenParent = null;
private boolean sideboardMode = false;
private Map<CardPrinted, Integer> decksUsingMyCards;
@@ -68,7 +73,7 @@ public final class CEditorQuest extends ACEditorBase<CardPrinted, Deck> {
private final Function<Entry<InventoryItem, Integer>, Comparable<?>> fnDeckCompare = new Function<Entry<InventoryItem, Integer>, Comparable<?>>() {
@Override
public Comparable<?> apply(final Entry<InventoryItem, Integer> from) {
final Integer iValue = CEditorQuest.this.decksUsingMyCards.get(from.getKey());
final Integer iValue = decksUsingMyCards.get(from.getKey());
return iValue == null ? Integer.valueOf(0) : iValue;
}
};
@@ -76,7 +81,7 @@ public final class CEditorQuest extends ACEditorBase<CardPrinted, Deck> {
private final Function<Entry<InventoryItem, Integer>, Object> fnDeckGet = new Function<Entry<InventoryItem, Integer>, Object>() {
@Override
public Object apply(final Entry<InventoryItem, Integer> from) {
final Integer iValue = CEditorQuest.this.decksUsingMyCards.get(from.getKey());
final Integer iValue = decksUsingMyCards.get(from.getKey());
return iValue == null ? "" : iValue.toString();
}
};
@@ -290,6 +295,9 @@ public final class CEditorQuest extends ACEditorBase<CardPrinted, Deck> {
switchEditorMode(sideboardMode);
} });
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
this.getDeckController().setModel(deck);
}
@@ -302,6 +310,14 @@ public final class CEditorQuest extends ACEditorBase<CardPrinted, Deck> {
if (okToExit) {
Singletons.getModel().getQuest().save();
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
//Re-add tabs
if (deckGenParent != null) {
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
}
if (allDecksParent != null) {
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
}
}
return okToExit;
}

View File

@@ -43,8 +43,11 @@ import forge.gui.deckeditor.tables.EditorTableView;
import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.tables.SColumnUtil.ColumnName;
import forge.gui.deckeditor.tables.TableColumnInfo;
import forge.gui.deckeditor.views.VAllDecks;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.deckeditor.views.VDeckgen;
import forge.gui.framework.DragCell;
import forge.gui.home.quest.CSubmenuQuestDecks;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FSkin;
@@ -95,6 +98,8 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
private final ItemPool<InventoryItem> fullCatalogCards =
ItemPool.createFrom(CardDb.instance().getAllTraditionalCards(), InventoryItem.class);
private boolean showingFullCatalog = false;
private DragCell allDecksParent = null;
private DragCell deckGenParent = null;
// get pricelist:
private final ReadPriceList r = new ReadPriceList();
@@ -484,6 +489,9 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
+ "% of their value.<br>" + maxSellingPrice + "</html>");
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(SEditorUtil.StatTypes.PACK).setVisible(true);
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
}
/* (non-Javadoc)
@@ -516,6 +524,14 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(SEditorUtil.StatTypes.PACK).setVisible(false);
//Re-add tabs
if (deckGenParent != null) {
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
}
if (allDecksParent != null) {
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
}
return true;
}
}

View File

@@ -33,8 +33,11 @@ import forge.gui.deckeditor.tables.EditorTableView;
import forge.gui.deckeditor.tables.SColumnUtil;
import forge.gui.deckeditor.tables.SColumnUtil.ColumnName;
import forge.gui.deckeditor.tables.TableColumnInfo;
import forge.gui.deckeditor.views.VAllDecks;
import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.deckeditor.views.VDeckgen;
import forge.gui.framework.DragCell;
import forge.gui.framework.EDocID;
import forge.item.CardDb;
import forge.item.CardPrinted;
@@ -55,6 +58,8 @@ import forge.util.IStorage;
*/
public final class CEditorVariant extends ACEditorBase<CardPrinted, Deck> {
private final DeckController<Deck> controller;
private DragCell allDecksParent = null;
private DragCell deckGenParent = null;
private final Predicate<CardPrinted> cardPoolCondition;
private final EDocID exitToScreen;
@@ -166,6 +171,9 @@ public final class CEditorVariant extends ACEditorBase<CardPrinted, Deck> {
SEditorUtil.resetUI();
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
this.controller.newModel();
}
@@ -177,6 +185,19 @@ public final class CEditorVariant extends ACEditorBase<CardPrinted, Deck> {
// Override the submenu save choice - tell it to go to "constructed".
Singletons.getModel().getPreferences().setPref(FPref.SUBMENU_CURRENTMENU, exitToScreen.toString());
return SEditorIO.confirmSaveChanges();
if (!SEditorIO.confirmSaveChanges())
{
return false;
}
//Re-add tabs
if (deckGenParent != null) {
deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE);
}
if (allDecksParent != null) {
allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE);
}
return true;
}
}

View File

@@ -220,23 +220,23 @@ public final class SLayoutIO {
final String dir = NewConstants.LAYOUT_DIR;
switch(FControl.SINGLETON_INSTANCE.getState()) {
case FControl.HOME_SCREEN:
case HOME_SCREEN:
fileDefault = dir + "home_default.xml";
filePreferred = dir + "home_preferred.xml";
break;
case FControl.MATCH_SCREEN:
case MATCH_SCREEN:
fileDefault = dir + "match_default.xml";
filePreferred = dir + "match_preferred.xml";
break;
case FControl.DECK_EDITOR_CONSTRUCTED:
case FControl.DECK_EDITOR_LIMITED:
case FControl.DECK_EDITOR_QUEST:
case FControl.DRAFTING_PROCESS:
case FControl.QUEST_CARD_SHOP:
case DECK_EDITOR_CONSTRUCTED:
case DECK_EDITOR_LIMITED:
case DECK_EDITOR_QUEST:
case DRAFTING_PROCESS:
case QUEST_CARD_SHOP:
fileDefault = dir + "editor_default.xml";
filePreferred = dir + "editor_preferred.xml";
break;
case FControl.QUEST_BAZAAR:
case QUEST_BAZAAR:
fileDefault = dir + "bazaar_default.xml";
filePreferred = dir + "bazaar_preferred.xml";
break;

View File

@@ -62,8 +62,8 @@ public enum CHomeUI implements ICDoc {
VHomeUI.SINGLETON_INSTANCE.getLblEditor().setCommand(new Command() {
@Override
public void execute() {
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_CONSTRUCTED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorConstructed());
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
}
});

View File

@@ -49,8 +49,8 @@ public enum CSubmenuQuestDecks implements ICDoc {
if (!SSubmenuQuestUtil.checkActiveQuest("Create a Deck.")) {
return;
}
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_QUEST);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorQuest(Singletons.getModel().getQuest()));
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_QUEST);
}
});
}

View File

@@ -250,9 +250,9 @@ public class SSubmenuQuestUtil {
if (!checkActiveQuest("visit the Spell Shop.")) {
return;
}
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_QUEST);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
new CEditorQuestCardShop(Singletons.getModel().getQuest()));
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_QUEST);
}
/** */
@@ -260,7 +260,7 @@ public class SSubmenuQuestUtil {
if (!checkActiveQuest("Visit the Bazzar.")) {
return;
}
Singletons.getControl().changeState(FControl.QUEST_BAZAAR);
Singletons.getControl().changeState(FControl.Screens.QUEST_BAZAAR);
Singletons.getView().getFrame().validate();
}

View File

@@ -170,7 +170,7 @@ public enum CSubmenuDraft implements ICDoc {
draft.showGui(new BoosterDraft(CardPoolLimitation.Custom));
}
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_LIMITED);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DRAFTING_PROCESS);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(draft);
}

View File

@@ -227,8 +227,8 @@ public enum CSubmenuSealed implements ICDoc {
final ACEditorBase<? extends InventoryItem, T> editor = (ACEditorBase<? extends InventoryItem, T>) new CEditorLimited(
Singletons.getModel().getDecks().getSealed());
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_LIMITED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(editor);
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_LIMITED);
editor.getDeckController().setModel((T) sealed);
}

View File

@@ -79,8 +79,9 @@ public enum CSubmenuArchenemy implements ICDoc {
};
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorVariant(Singletons.getModel().getDecks().getScheme(),predSchemes,EDocID.HOME_ARCHENEMY));
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_CONSTRUCTED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
new CEditorVariant(Singletons.getModel().getDecks().getScheme(),predSchemes,EDocID.HOME_ARCHENEMY));
}
});

View File

@@ -78,9 +78,9 @@ public enum CSubmenuPlanechase implements ICDoc {
};
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorVariant(Singletons.getModel().getDecks().getPlane(),predPlanes,EDocID.HOME_PLANECHASE));
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_CONSTRUCTED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(
new CEditorVariant(Singletons.getModel().getDecks().getPlane(), predPlanes, EDocID.HOME_PLANECHASE));
}
});

View File

@@ -91,7 +91,7 @@ public class ControlWinLose {
public void actionOnQuit() {
// Reset other stuff
saveOptions();
Singletons.getControl().changeState(FControl.HOME_SCREEN);
Singletons.getControl().changeState(FControl.Screens.HOME_SCREEN);
SOverlayUtils.hideOverlay();
}

View File

@@ -301,7 +301,7 @@ public class QuestWinLose extends ControlWinLose {
Singletons.getModel().getPreferences().writeMatchPreferences();
Singletons.getModel().getPreferences().save();
Singletons.getControl().changeState(FControl.HOME_SCREEN);
Singletons.getControl().changeState(FControl.Screens.HOME_SCREEN);
SOverlayUtils.hideOverlay();
}

View File

@@ -282,7 +282,7 @@ public enum TargetingOverlay {
@Override
public void paintComponent(final Graphics g) {
// No need for this except in match view
if (FControl.SINGLETON_INSTANCE.getState() != 1) { return; }
if (FControl.SINGLETON_INSTANCE.getState() != FControl.Screens.MATCH_SCREEN) { return; }
super.paintComponent(g);

View File

@@ -425,31 +425,29 @@ public class DeckLister extends JPanel implements ILocalRepaint {
switch (this.gametype) {
case Quest:
final CEditorQuest qEditor = new CEditorQuest(Singletons.getModel().getQuest());
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(qEditor);
qEditor.load(d0);
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_QUEST);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_QUEST);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(qEditor);
break;
case Constructed:
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorConstructed());
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(d0.getName());
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_CONSTRUCTED);
final CEditorConstructed cEditor = new CEditorConstructed();
cEditor.getDeckController().load(d0.getName());
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(cEditor);
break;
case Sealed:
final ACEditorBase<?, T> sEditor = (ACEditorBase<?, T>)
new CEditorLimited(Singletons.getModel().getDecks().getSealed());
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(sEditor);
sEditor.getDeckController().load(d0.getName());
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_LIMITED);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_LIMITED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(sEditor);
break;
case Draft:
final ACEditorBase<?, T> dEditor = (ACEditorBase<?, T>)
new CEditorLimited(Singletons.getModel().getDecks().getDraft());
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(dEditor);
dEditor.getDeckController().load(d0.getName());
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_LIMITED);
FControl.SINGLETON_INSTANCE.changeState(FControl.Screens.DECK_EDITOR_LIMITED);
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(dEditor);
break;
default:
break;

View File

@@ -107,7 +107,7 @@ public enum FView {
}
// All is ready to go - fire up home screen and discard splash frame.
Singletons.getControl().changeState(FControl.HOME_SCREEN);
Singletons.getControl().changeState(FControl.Screens.HOME_SCREEN);
//CMainMenu.SINGLETON_INSTANCE.selectPrevious();
FView.this.frmSplash.dispose();
@@ -203,7 +203,7 @@ public enum FView {
/** @return {@link forge.view.ViewBazaarUI} */
public ViewBazaarUI getViewBazaar() {
if (Singletons.getControl().getState() != FControl.QUEST_BAZAAR) {
if (Singletons.getControl().getState() != FControl.Screens.QUEST_BAZAAR) {
throw new IllegalArgumentException("FView$getViewBazaar\n"
+ "may only be called while the bazaar UI is showing.");
}