diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
index a80140ba441..3b38efabd61 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java
@@ -4,17 +4,7 @@
package forge.gui.framework;
import com.google.common.collect.ObjectArrays;
-
-import forge.screens.deckeditor.views.VAllDecks;
-import forge.screens.deckeditor.views.VBrawlDecks;
-import forge.screens.deckeditor.views.VCardCatalog;
-import forge.screens.deckeditor.views.VCommanderDecks;
-import forge.screens.deckeditor.views.VCurrentDeck;
-import forge.screens.deckeditor.views.VDeckgen;
-import forge.screens.deckeditor.views.VProbabilities;
-import forge.screens.deckeditor.views.VStatistics;
-import forge.screens.deckeditor.views.VTinyLeadersDecks;
-import forge.screens.deckeditor.views.VOathbreakerDecks;
+import forge.screens.deckeditor.views.*;
import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
@@ -22,21 +12,12 @@ import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
-import forge.screens.home.quest.VSubmenuChallenges;
-import forge.screens.home.quest.VSubmenuDuels;
-import forge.screens.home.quest.VSubmenuQuestData;
-import forge.screens.home.quest.VSubmenuQuestDecks;
-import forge.screens.home.quest.VSubmenuQuestDraft;
-import forge.screens.home.quest.VSubmenuQuestPrefs;
+import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
import forge.screens.home.sanctioned.VSubmenuSealed;
import forge.screens.home.sanctioned.VSubmenuWinston;
-import forge.screens.home.settings.VSubmenuAchievements;
-import forge.screens.home.settings.VSubmenuAvatars;
-import forge.screens.home.settings.VSubmenuDownloaders;
-import forge.screens.home.settings.VSubmenuPreferences;
-import forge.screens.home.settings.VSubmenuReleaseNotes;
+import forge.screens.home.settings.*;
import forge.screens.workshop.views.VCardDesigner;
import forge.screens.workshop.views.VCardScript;
import forge.screens.workshop.views.VWorkshopCatalog;
@@ -67,10 +48,11 @@ public enum EDocID {
WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE),
WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE),
+ HOME_QUESTSTART (VSubmenuQuestStart.SINGLETON_INSTANCE),
+ HOME_QUESTLOADDATA(VSubmenuQuestLoadData.SINGLETON_INSTANCE),
HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE),
HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE),
HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE),
- HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE),
HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE),
HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE),
HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE),
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
index 99a38f3f046..7bbe5b2d7d6 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/VHomeUI.java
@@ -17,31 +17,9 @@
*/
package forge.screens.home;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.ScrollPaneConstants;
-import javax.swing.SwingConstants;
-
-import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
-import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
-import net.miginfocom.swing.MigLayout;
import forge.Singletons;
import forge.assets.FSkinProp;
-import forge.gui.framework.EDocID;
-import forge.gui.framework.FScreen;
-import forge.gui.framework.ICDoc;
-import forge.gui.framework.ILocalRepaint;
-import forge.gui.framework.IVTopLevelUI;
+import forge.gui.framework.*;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
@@ -49,26 +27,25 @@ import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
-import forge.screens.home.quest.VSubmenuChallenges;
-import forge.screens.home.quest.VSubmenuDuels;
-import forge.screens.home.quest.VSubmenuQuestData;
-import forge.screens.home.quest.VSubmenuQuestDecks;
-import forge.screens.home.quest.VSubmenuQuestDraft;
-import forge.screens.home.quest.VSubmenuQuestPrefs;
+import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
+import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
+import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
import forge.screens.home.sanctioned.VSubmenuSealed;
-import forge.screens.home.settings.VSubmenuAchievements;
-import forge.screens.home.settings.VSubmenuAvatars;
-import forge.screens.home.settings.VSubmenuDownloaders;
-import forge.screens.home.settings.VSubmenuPreferences;
-import forge.screens.home.settings.VSubmenuReleaseNotes;
+import forge.screens.home.settings.*;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPanel;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinColor;
import forge.toolbox.FSkin.SkinnedPanel;
import forge.view.FView;
+import net.miginfocom.swing.MigLayout;
+
+import javax.swing.*;
+import java.awt.*;
+import java.util.List;
+import java.util.*;
/**
* Top level view class for home UI drag layout.
@@ -122,11 +99,12 @@ public enum VHomeUI implements IVTopLevelUI {
allSubmenus.add(VSubmenuOnlineLobby.SINGLETON_INSTANCE);
+ allSubmenus.add(VSubmenuQuestStart.SINGLETON_INSTANCE);
+ allSubmenus.add(VSubmenuQuestLoadData.SINGLETON_INSTANCE);
+ allSubmenus.add(VSubmenuQuestDecks.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDraft.SINGLETON_INSTANCE);
- allSubmenus.add(VSubmenuQuestDecks.SINGLETON_INSTANCE);
- allSubmenus.add(VSubmenuQuestData.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestPrefs.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuGauntletQuick.SINGLETON_INSTANCE);
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestLoadData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestLoadData.java
new file mode 100644
index 00000000000..af69b15b5dd
--- /dev/null
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestLoadData.java
@@ -0,0 +1,134 @@
+package forge.screens.home.quest;
+
+import forge.UiCommand;
+import forge.gui.framework.ICDoc;
+import forge.model.FModel;
+import forge.properties.ForgeConstants;
+import forge.quest.QuestController;
+import forge.quest.data.QuestData;
+import forge.quest.data.QuestPreferences.QPref;
+import forge.quest.io.QuestDataIO;
+import forge.screens.bazaar.CBazaarUI;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Controls the quest data submenu in the home UI.
+ *
+ *
(C at beginning of class name denotes a control class.)
+ *
+ */
+@SuppressWarnings("serial")
+public enum CSubmenuQuestLoadData implements ICDoc {
+ SINGLETON_INSTANCE;
+
+ private final Map arrQuests = new HashMap<>();
+
+ private final UiCommand cmdQuestSelect = new UiCommand() {
+ @Override public void run() {
+ changeQuest();
+ }
+ };
+ private final UiCommand cmdQuestUpdate = new UiCommand() {
+ @Override public void run() {
+ update();
+ }
+ };
+
+ @Override
+ public void register() {
+ }
+
+ /* (non-Javadoc)
+ * @see forge.control.home.IControlSubmenu#update()
+ */
+ @Override
+ public void initialize() {
+ }
+
+ /* (non-Javadoc)
+ * @see forge.control.home.IControlSubmenu#update()
+ */
+ @Override
+ public void update() {
+
+ final VSubmenuQuestLoadData view = VSubmenuQuestLoadData.SINGLETON_INSTANCE;
+ final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
+ final QuestController qc = FModel.getQuest();
+ ArrayList restorableQuests = new ArrayList<>();
+
+ // Iterate over files and load quest data for each.
+ final FilenameFilter takeDatFiles = new FilenameFilter() {
+ @Override
+ public boolean accept(final File dir, final String name) {
+ return name.endsWith(".dat");
+ }
+ };
+ final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
+ arrQuests.clear();
+ for (final File f : arrFiles) {
+ try {
+ System.out.println(String.format("About to load quest (%s)... ", f.getName()));
+ arrQuests.put(f.getName(), QuestDataIO.loadData(f));
+ } catch(IOException ex) {
+ ex.printStackTrace();
+ System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName()));
+ restorableQuests.add(f.getName());
+ }
+ }
+
+ // Populate list with available quest data.
+ view.getLstQuests().setQuests(new ArrayList<>(arrQuests.values()));
+
+ // If there are quests available, force select.
+ if (!arrQuests.isEmpty()) {
+ final String questName = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
+
+ // Attempt to select previous quest.
+ if (arrQuests.get(questName) != null) {
+ view.getLstQuests().setSelectedQuestData(arrQuests.get(questName));
+ }
+ else {
+ view.getLstQuests().setSelectedIndex(0);
+ }
+
+ // Drop into AllZone.
+ qc.load(view.getLstQuests().getSelectedQuest());
+ }
+ else {
+ qc.load(null);
+ }
+
+ view.getLstQuests().setSelectCommand(cmdQuestSelect);
+ view.getLstQuests().setDeleteCommand(cmdQuestUpdate);
+ view.getLstQuests().setEditCommand(cmdQuestUpdate);
+
+ }
+
+ /** Changes between quest data files. */
+ private void changeQuest() {
+
+ FModel.getQuest().load(VSubmenuQuestLoadData.SINGLETON_INSTANCE.getLstQuests().getSelectedQuest());
+
+ // Save in preferences.
+ FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, FModel.getQuest().getName() + ".dat");
+ FModel.getQuestPreferences().save();
+
+ CSubmenuDuels.SINGLETON_INSTANCE.update();
+ CSubmenuChallenges.SINGLETON_INSTANCE.update();
+ CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
+ CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
+ CBazaarUI.SINGLETON_INSTANCE.update();
+
+ }
+
+ private Map getAllQuests() {
+ return arrQuests;
+ }
+
+}
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestStart.java
similarity index 57%
rename from forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java
rename to forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestStart.java
index 01c5098a069..94f95052616 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestStart.java
@@ -7,24 +7,16 @@ import forge.game.GameFormat;
import forge.gui.framework.ICDoc;
import forge.item.PaperCard;
import forge.model.FModel;
-import forge.properties.ForgeConstants;
import forge.quest.*;
-import forge.quest.StartingPoolPreferences.PoolType;
import forge.quest.data.DeckConstructionRules;
import forge.quest.data.GameFormatQuest;
import forge.quest.data.QuestData;
-import forge.quest.data.QuestPreferences.QPref;
-import forge.quest.io.QuestDataIO;
-import forge.screens.bazaar.CBazaarUI;
+import forge.quest.data.QuestPreferences;
+import forge.screens.home.CHomeUI;
import forge.toolbox.FOptionPane;
import forge.util.Localizer;
-import javax.swing.*;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
import java.util.*;
-import java.util.Map.Entry;
/**
* Controls the quest data submenu in the home UI.
@@ -33,28 +25,17 @@ import java.util.Map.Entry;
*
*/
@SuppressWarnings("serial")
-public enum CSubmenuQuestData implements ICDoc {
+public enum CSubmenuQuestStart implements ICDoc {
SINGLETON_INSTANCE;
private final Map arrQuests = new HashMap<>();
- private final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
+ private final VSubmenuQuestStart view = VSubmenuQuestStart.SINGLETON_INSTANCE;
private final List customFormatCodes = new ArrayList<>();
private final List customPrizeFormatCodes = new ArrayList<>();
- private final UiCommand cmdQuestSelect = new UiCommand() {
- @Override public void run() {
- changeQuest();
- }
- };
- private final UiCommand cmdQuestUpdate = new UiCommand() {
- @Override public void run() {
- update();
- }
- };
-
private List preferredColors = new ArrayList<>();
- private PoolType poolType = PoolType.BALANCED;
+ private StartingPoolPreferences.PoolType poolType = StartingPoolPreferences.PoolType.BALANCED;
private boolean includeArtifacts = true;
private int numberOfBoosters = 0;
@@ -166,65 +147,6 @@ public enum CSubmenuQuestData implements ICDoc {
*/
@Override
public void update() {
-
- final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
- final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
- final QuestController qc = FModel.getQuest();
- ArrayList restorableQuests = new ArrayList<>();
-
- // Iterate over files and load quest data for each.
- final FilenameFilter takeDatFiles = new FilenameFilter() {
- @Override
- public boolean accept(final File dir, final String name) {
- return name.endsWith(".dat");
- }
- };
- final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
- arrQuests.clear();
- for (final File f : arrFiles) {
- try {
- System.out.println(String.format("About to load quest (%s)... ", f.getName()));
- arrQuests.put(f.getName(), QuestDataIO.loadData(f));
- } catch(IOException ex) {
- ex.printStackTrace();
- System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName()));
- restorableQuests.add(f.getName());
- }
- }
-
- // Populate list with available quest data.
- view.getLstQuests().setQuests(new ArrayList<>(arrQuests.values()));
-
- // If there are quests available, force select.
- if (!arrQuests.isEmpty()) {
- final String questName = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
-
- // Attempt to select previous quest.
- if (arrQuests.get(questName) != null) {
- view.getLstQuests().setSelectedQuestData(arrQuests.get(questName));
- }
- else {
- view.getLstQuests().setSelectedIndex(0);
- }
-
- // Drop into AllZone.
- qc.load(view.getLstQuests().getSelectedQuest());
- }
- else {
- qc.load(null);
- }
-
- view.getLstQuests().setSelectCommand(cmdQuestSelect);
- view.getLstQuests().setDeleteCommand(cmdQuestUpdate);
- view.getLstQuests().setEditCommand(cmdQuestUpdate);
-
- SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
- view.getBtnEmbark().requestFocusInWindow();
- }
- });
-
}
/**
@@ -232,7 +154,7 @@ public enum CSubmenuQuestData implements ICDoc {
*/
private void newQuest() {
final Localizer localizer = Localizer.getInstance();
- final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
+ final VSubmenuQuestStart view = VSubmenuQuestStart.SINGLETON_INSTANCE;
final int difficulty = view.getSelectedDifficulty();
final QuestMode mode = view.isFantasy() ? QuestMode.Fantasy : QuestMode.Classic;
@@ -245,38 +167,38 @@ public enum CSubmenuQuestData implements ICDoc {
if (worldFormat == null) {
switch(view.getStartingPoolType()) {
- case Sanctioned:
- fmtStartPool = view.getRotatingFormat();
- break;
+ case Sanctioned:
+ fmtStartPool = view.getRotatingFormat();
+ break;
- case Casual:
- case CustomFormat:
- if (customFormatCodes.isEmpty()) {
- if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
+ case Casual:
+ case CustomFormat:
+ if (customFormatCodes.isEmpty()) {
+ if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
+ return;
+ }
+ }
+ fmtStartPool = customFormatCodes.isEmpty() ? null : new GameFormatQuest("Custom", customFormatCodes, null); // chosen sets and no banned cards
+ break;
+
+ case DraftDeck:
+ case SealedDeck:
+ case Cube:
+ dckStartPool = view.getSelectedDeck();
+ if (null == dckStartPool) {
+ FOptionPane.showMessageDialog(localizer.getMessage("lbldckStartPool"), localizer.getMessage("lblCannotStartaQuest"), FOptionPane.ERROR_ICON);
return;
}
- }
- fmtStartPool = customFormatCodes.isEmpty() ? null : new GameFormatQuest("Custom", customFormatCodes, null); // chosen sets and no banned cards
- break;
+ break;
- case DraftDeck:
- case SealedDeck:
- case Cube:
- dckStartPool = view.getSelectedDeck();
- if (null == dckStartPool) {
- FOptionPane.showMessageDialog(localizer.getMessage("lbldckStartPool"), localizer.getMessage("lblCannotStartaQuest"), FOptionPane.ERROR_ICON);
- return;
- }
- break;
+ case Precon:
+ dckStartPool = QuestController.getPrecons().get(view.getSelectedPrecon()).getDeck();
+ break;
- case Precon:
- dckStartPool = QuestController.getPrecons().get(view.getSelectedPrecon()).getDeck();
- break;
-
- case Complete:
- default:
- // leave everything as nulls
- break;
+ case Complete:
+ default:
+ // leave everything as nulls
+ break;
}
}
else {
@@ -290,11 +212,11 @@ public enum CSubmenuQuestData implements ICDoc {
fmtPrizes = fmtStartPool;
if (null == fmtPrizes && dckStartPool != null) { // build it form deck
final Set sets = new HashSet<>();
- for (final Entry c : dckStartPool.getMain()) {
+ for (final Map.Entry c : dckStartPool.getMain()) {
sets.add(c.getKey().getEdition());
}
if (dckStartPool.has(DeckSection.Sideboard)) {
- for (final Entry c : dckStartPool.get(DeckSection.Sideboard)) {
+ for (final Map.Entry c : dckStartPool.get(DeckSection.Sideboard)) {
sets.add(c.getKey().getEdition());
}
}
@@ -303,23 +225,23 @@ public enum CSubmenuQuestData implements ICDoc {
}
else {
switch(prizedPoolType) {
- case Complete:
- fmtPrizes = null;
- break;
- case Casual:
- case CustomFormat:
- if (customPrizeFormatCodes.isEmpty()) {
- if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
- return;
+ case Complete:
+ fmtPrizes = null;
+ break;
+ case Casual:
+ case CustomFormat:
+ if (customPrizeFormatCodes.isEmpty()) {
+ if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
+ return;
+ }
}
- }
- fmtPrizes = customPrizeFormatCodes.isEmpty() ? null : new GameFormat("Custom Prizes", customPrizeFormatCodes, null); // chosen sets and no banned cards
- break;
- case Sanctioned:
- fmtPrizes = view.getPrizedRotatingFormat();
- break;
- default:
- throw new RuntimeException("Should not get this result");
+ fmtPrizes = customPrizeFormatCodes.isEmpty() ? null : new GameFormat("Custom Prizes", customPrizeFormatCodes, null); // chosen sets and no banned cards
+ break;
+ case Sanctioned:
+ fmtPrizes = view.getPrizedRotatingFormat();
+ break;
+ default:
+ throw new RuntimeException("Should not get this result");
}
}
@@ -346,7 +268,7 @@ public enum CSubmenuQuestData implements ICDoc {
//Apply the appropriate deck construction rules for this quest
DeckConstructionRules dcr = DeckConstructionRules.Default;
- if(VSubmenuQuestData.SINGLETON_INSTANCE.isCommander()){
+ if(VSubmenuQuestStart.SINGLETON_INSTANCE.isCommander()){
dcr = DeckConstructionRules.Commander;
}
@@ -356,28 +278,11 @@ public enum CSubmenuQuestData implements ICDoc {
FModel.getQuest().save();
// Save in preferences.
- FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, questName + ".dat");
+ FModel.getQuestPreferences().setPref(QuestPreferences.QPref.CURRENT_QUEST, questName + ".dat");
FModel.getQuestPreferences().save();
- update();
-
- }
-
- /** Changes between quest data files. */
- private void changeQuest() {
-
- FModel.getQuest().load(VSubmenuQuestData.SINGLETON_INSTANCE.getLstQuests().getSelectedQuest());
-
- // Save in preferences.
- FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, FModel.getQuest().getName() + ".dat");
- FModel.getQuestPreferences().save();
-
- CSubmenuDuels.SINGLETON_INSTANCE.update();
- CSubmenuChallenges.SINGLETON_INSTANCE.update();
- CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
- CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
- CBazaarUI.SINGLETON_INSTANCE.update();
-
+ // Change to QuestDecks screen
+ CHomeUI.SINGLETON_INSTANCE.itemClick(VSubmenuQuestDecks.SINGLETON_INSTANCE.getDocumentID());
}
private Map getAllQuests() {
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestLoadData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestLoadData.java
new file mode 100644
index 00000000000..74d5515d1de
--- /dev/null
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestLoadData.java
@@ -0,0 +1,138 @@
+package forge.screens.home.quest;
+
+import forge.gui.framework.DragCell;
+import forge.gui.framework.DragTab;
+import forge.gui.framework.EDocID;
+import forge.properties.ForgeConstants;
+import forge.screens.home.EMenuGroup;
+import forge.screens.home.IVSubmenu;
+import forge.screens.home.VHomeUI;
+import forge.toolbox.FLabel;
+import forge.toolbox.FScrollPane;
+import forge.toolbox.FSkin;
+import forge.util.Localizer;
+import net.miginfocom.swing.MigLayout;
+
+import javax.swing.*;
+
+/**
+ * Assembles Swing components of quest data submenu singleton.
+ *
+ *
(V at beginning of class name denotes a view class.)
+ */
+public enum VSubmenuQuestLoadData implements IVSubmenu {
+ SINGLETON_INSTANCE;
+ final Localizer localizer = Localizer.getInstance();
+
+ // Fields used with interface IVDoc
+ private DragCell parentCell;
+ private final DragTab tab = new DragTab(localizer.getMessage("lblQuestData"));
+
+ private final FLabel lblTitle = new FLabel.Builder()
+ .text(localizer.getMessage("lblLoadQuestData")).fontAlign(SwingConstants.CENTER)
+ .opaque(true).fontSize(16).build();
+
+ String str= ForgeConstants.QUEST_SAVE_DIR.replace('\\', '/');
+ private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%s",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
+ private final QuestFileLister lstQuests = new QuestFileLister();
+ private final FScrollPane scrQuests = new FScrollPane(lstQuests, false);
+ private final JPanel pnlOptions = new JPanel();
+
+ /**
+ * Constructor.
+ */
+ @SuppressWarnings("unchecked")
+ VSubmenuQuestLoadData() {
+
+ lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
+ }
+
+ /* (non-Javadoc)
+ * @see forge.view.home.IViewSubmenu#populate()
+ */
+ @Override
+ public void populate() {
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll();
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, wrap"));
+
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 98%!, h 30px!, gap 1% 0 15px 15px");
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblOldQuests, "w 98%, h 30px!, gap 1% 0 0 5px");
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrQuests, "w 98%!, growy, pushy, gap 1% 0 0 20px");
+
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf();
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate();
+ }
+
+ /* (non-Javadoc)
+ * @see forge.view.home.IViewSubmenu#getGroup()
+ */
+ @Override
+ public EMenuGroup getGroupEnum() {
+ return EMenuGroup.QUEST;
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.home.IVSubmenu#getMenuTitle()
+ */
+ @Override
+ public String getMenuTitle() {
+ return localizer.getMessage("lblNewLoadQuest");
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.home.IVSubmenu#getMenuName()
+ */
+ @Override
+ public EDocID getItemEnum() {
+ return EDocID.HOME_QUESTLOADDATA;
+ }
+
+ /**
+ * @return {@link forge.screens.home.quest.QuestFileLister}
+ */
+ public QuestFileLister getLstQuests() {
+ return this.lstQuests;
+ }
+
+ //========== Overridden from IVDoc
+
+ /* (non-Javadoc)
+ * @see forge.gui.framework.IVDoc#getDocumentID()
+ */
+ @Override
+ public EDocID getDocumentID() {
+ return EDocID.HOME_QUESTLOADDATA;
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.framework.IVDoc#getTabLabel()
+ */
+ @Override
+ public DragTab getTabLabel() {
+ return tab;
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.framework.IVDoc#getLayoutControl()
+ */
+ @Override
+ public CSubmenuQuestLoadData getLayoutControl() {
+ return CSubmenuQuestLoadData.SINGLETON_INSTANCE;
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell)
+ */
+ @Override
+ public void setParentCell(final DragCell cell0) {
+ this.parentCell = cell0;
+ }
+
+ /* (non-Javadoc)
+ * @see forge.gui.framework.IVDoc#getParentCell()
+ */
+ @Override
+ public DragCell getParentCell() {
+ return parentCell;
+ }
+}
diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestStart.java
similarity index 93%
rename from forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java
rename to forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestStart.java
index c77a3c883c3..bb51d9248dd 100644
--- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestData.java
+++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/VSubmenuQuestStart.java
@@ -34,24 +34,17 @@ import java.util.Map;
*
*
(V at beginning of class name denotes a view class.)
*/
-public enum VSubmenuQuestData implements IVSubmenu {
+public enum VSubmenuQuestStart implements IVSubmenu {
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;
- private final DragTab tab = new DragTab(localizer.getMessage("lblQuestData"));
-
- private final FLabel lblTitle = new FLabel.Builder()
- .text(localizer.getMessage("lblLoadQuestData")).fontAlign(SwingConstants.CENTER)
- .opaque(true).fontSize(16).build();
+ private final DragTab tab = new DragTab(localizer.getMessage("lblStartanewQuest"));
private final FLabel lblTitleNew = new FLabel.Builder().text(localizer.getMessage("lblStartanewQuest")).opaque(true).fontSize(16).build();
String str= ForgeConstants.QUEST_SAVE_DIR.replace('\\', '/');
- private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%s",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
- private final QuestFileLister lstQuests = new QuestFileLister();
- private final FScrollPane scrQuests = new FScrollPane(lstQuests, false);
private final JPanel pnlOptions = new JPanel();
/* First column */
@@ -188,9 +181,8 @@ public enum VSubmenuQuestData implements IVSubmenu {
* Constructor.
*/
@SuppressWarnings("unchecked")
- VSubmenuQuestData() {
+ VSubmenuQuestStart() {
- lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
lblTitleNew.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
final JXButtonPanel difficultyPanel = new JXButtonPanel();
@@ -286,7 +278,7 @@ public enum VSubmenuQuestData implements IVSubmenu {
//Otherwise, set the starting world to Random Commander
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Random Commander"));
}
- }
+ }
);
@@ -368,11 +360,8 @@ public enum VSubmenuQuestData implements IVSubmenu {
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, wrap"));
- VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 98%!, h 30px!, gap 1% 0 15px 15px");
- VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblOldQuests, "w 98%, h 30px!, gap 1% 0 0 5px");
- VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrQuests, "w 98%!, growy, pushy, gap 1% 0 0 20px");
- VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitleNew, "w 98%, h 30px!, gap 1% 0 0 10px");
- VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlOptions, "w 98%!, gap 1% 0 0 0");
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitleNew, "w 98%, h 30px!, gap 1% 0 15px 10px");
+ VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlOptions, "w 98%!, growy, pushy, gap 1% 0 0 0");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate();
@@ -391,7 +380,7 @@ public enum VSubmenuQuestData implements IVSubmenu {
*/
@Override
public String getMenuTitle() {
- return localizer.getMessage("lblNewLoadQuest");
+ return localizer.getMessage("lblStartanewQuest");
}
/* (non-Javadoc)
@@ -399,16 +388,9 @@ public enum VSubmenuQuestData implements IVSubmenu {
*/
@Override
public EDocID getItemEnum() {
- return EDocID.HOME_QUESTDATA;
+ return getDocumentID();
}
-
- /**
- * @return {@link forge.screens.home.quest.QuestFileLister}
- */
- public QuestFileLister getLstQuests() {
- return this.lstQuests;
- }
-
+
/**
* @return {@link forge.toolbox.FLabel}
*/
@@ -423,7 +405,7 @@ public enum VSubmenuQuestData implements IVSubmenu {
*/
@Override
public EDocID getDocumentID() {
- return EDocID.HOME_QUESTDATA;
+ return EDocID.HOME_QUESTSTART;
}
/* (non-Javadoc)
@@ -438,8 +420,8 @@ public enum VSubmenuQuestData implements IVSubmenu {
* @see forge.gui.framework.IVDoc#getLayoutControl()
*/
@Override
- public CSubmenuQuestData getLayoutControl() {
- return CSubmenuQuestData.SINGLETON_INSTANCE;
+ public CSubmenuQuestStart getLayoutControl() {
+ return CSubmenuQuestStart.SINGLETON_INSTANCE;
}
/* (non-Javadoc)
diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties
index a27b0b9c58a..cd2d02105aa 100644
--- a/forge-gui/res/languages/de-DE.properties
+++ b/forge-gui/res/languages/de-DE.properties
@@ -469,7 +469,7 @@ lblEmbark=Aufbrechen!
lblboxCompleteSet=Du startest mit je 4 Stück jeder Karte der gewählten Sets.
lblboxAllowDuplicates=In deiner Startsammlung können Karten mehrfach vorkommen.
lblSameAsStartingPool=Wie Startsammlung
-lblNewLoadQuest=Neu / Lade Quest
+lblNewLoadQuest=Lade Quest
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Starte einen Zeppelin.
lblPlant=Pflanze
diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties
index 49aadd85dff..96e5c0f3fbf 100644
--- a/forge-gui/res/languages/en-US.properties
+++ b/forge-gui/res/languages/en-US.properties
@@ -441,7 +441,7 @@ cbLaunchZeppelin=Launch Zeppelin
#VSubmenuQuest.java
lblQuestData=Quest Data
lblLoadQuestData=Load Quest Data
-lblStartanewQuest=Start a new Quest
+lblStartanewQuest=Start Quest
lblOldQuestData=Old quest data? Put into %s and restart Forge.
rbEasy=Easy
rbMedium=Medium
@@ -469,7 +469,7 @@ lblEmbark=Embark!
lblboxCompleteSet=You will start the quest with 4 of each card in the sets you have selected.
lblboxAllowDuplicates=When your starting pool is generated, duplicates of cards may be included.
lblSameAsStartingPool=Same as starting pool
-lblNewLoadQuest=New / Load Quest
+lblNewLoadQuest=Load Quest
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Launch a Zeppelin.
lblPlant=Plant
diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties
index cb84b0167d6..08ade8a4ea4 100644
--- a/forge-gui/res/languages/es-ES.properties
+++ b/forge-gui/res/languages/es-ES.properties
@@ -469,7 +469,7 @@ lblEmbark=¡Embarcarse!
lblboxCompleteSet=Comenzarás la aventura con 4 copias de cada carta en los sets que hayas seleccionado.
lblboxAllowDuplicates=Cuando tu pool inicial se genera, se puede incluir duplicados de cartas.
lblSameAsStartingPool=Igual que el pool inicial
-lblNewLoadQuest=Nueva/Cargar Aventura
+lblNewLoadQuest=Cargar Aventura
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Lanzar el Zeppelin.
lblPlant=Planta
diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties
index 61da59a4f2e..663e853870a 100644
--- a/forge-gui/res/languages/zh-CN.properties
+++ b/forge-gui/res/languages/zh-CN.properties
@@ -469,7 +469,7 @@ lblEmbark=开始!
lblboxCompleteSet=你将使用所选系列的每张卡中的4张开始探索
lblboxAllowDuplicates=生成初始牌池时,可能包含重复的卡。
lblSameAsStartingPool=与初始牌池相同
-lblNewLoadQuest=新建/载入
+lblNewLoadQuest=载入
#CSubmenuQChallenges.java
lblLaunchaZeppelin=启动一个飞艇.
lblPlant=植物
diff --git a/forge-gui/src/main/java/forge/quest/StartingPoolPreferences.java b/forge-gui/src/main/java/forge/quest/StartingPoolPreferences.java
index 3b94497133e..b4713b04686 100644
--- a/forge-gui/src/main/java/forge/quest/StartingPoolPreferences.java
+++ b/forge-gui/src/main/java/forge/quest/StartingPoolPreferences.java
@@ -23,7 +23,7 @@ import java.util.List;
* This class is used to store the Quest starting pool preferences.
* (It could be expanded to store other Quest starting preferences as well,
* in order to reduce the number of parameters that need to be passed to
- * QuestController.newGame from CSubmenuQuestData)
+ * QuestController.newGame from CSubmenuQuestStart)
*
*/
public final class StartingPoolPreferences {