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 {