mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Further home menu aesthetic improvements:
- Removed "utilities" menu - Added "exit forge" and "deck editor" buttons directly to menu panel - Restored functionality to exit forge button - Removed forge.gui.home.utilities package - Removed deprecated VMainMenu.
This commit is contained in:
10
.gitattributes
vendored
10
.gitattributes
vendored
@@ -12767,7 +12767,6 @@ src/main/java/forge/gui/home/LblMenuItem.java -text
|
||||
src/main/java/forge/gui/home/PnlGroup.java -text
|
||||
src/main/java/forge/gui/home/StartButton.java -text
|
||||
src/main/java/forge/gui/home/VHomeUI.java -text
|
||||
src/main/java/forge/gui/home/VMainMenu.java -text
|
||||
src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletBuild.java -text
|
||||
src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletContests.java -text
|
||||
src/main/java/forge/gui/home/gauntlet/CSubmenuGauntletLoad.java -text
|
||||
@@ -12804,17 +12803,12 @@ src/main/java/forge/gui/home/sanctioned/VSubmenuDraft.java -text
|
||||
src/main/java/forge/gui/home/sanctioned/VSubmenuSealed.java -text
|
||||
src/main/java/forge/gui/home/sanctioned/package-info.java svneol=native#text/plain
|
||||
src/main/java/forge/gui/home/settings/CSubmenuAvatars.java -text
|
||||
src/main/java/forge/gui/home/settings/CSubmenuDownloaders.java -text
|
||||
src/main/java/forge/gui/home/settings/CSubmenuPreferences.java -text
|
||||
src/main/java/forge/gui/home/settings/VSubmenuAvatars.java -text
|
||||
src/main/java/forge/gui/home/settings/VSubmenuDownloaders.java -text
|
||||
src/main/java/forge/gui/home/settings/VSubmenuPreferences.java -text
|
||||
src/main/java/forge/gui/home/settings/package-info.java svneol=native#text/plain
|
||||
src/main/java/forge/gui/home/utilities/CSubmenuDeckEditor.java -text
|
||||
src/main/java/forge/gui/home/utilities/CSubmenuExit.java -text
|
||||
src/main/java/forge/gui/home/utilities/CSubmenuUtilities.java -text
|
||||
src/main/java/forge/gui/home/utilities/VSubmenuDeckEditor.java -text
|
||||
src/main/java/forge/gui/home/utilities/VSubmenuExit.java -text
|
||||
src/main/java/forge/gui/home/utilities/VSubmenuUtilities.java -text
|
||||
src/main/java/forge/gui/home/utilities/package-info.java svneol=native#text/plain
|
||||
src/main/java/forge/gui/match/CMatchUI.java -text
|
||||
src/main/java/forge/gui/match/ControlWinLose.java -text
|
||||
src/main/java/forge/gui/match/GauntletWinLose.java -text
|
||||
|
||||
@@ -201,7 +201,7 @@ public enum FControl {
|
||||
switch (i0) {
|
||||
case HOME_SCREEN:
|
||||
VHomeUI.SINGLETON_INSTANCE.populate();
|
||||
CHomeUI.SINGLETON_INSTANCE.selectPrevious();
|
||||
CHomeUI.SINGLETON_INSTANCE.initialize();
|
||||
//FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(true);
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(new ImageIcon());
|
||||
Singletons.getView().getFrame().addWindowListener(waDefault);
|
||||
|
||||
@@ -11,7 +11,6 @@ import forge.gui.deckeditor.views.VEditorPreferences;
|
||||
import forge.gui.deckeditor.views.VFilters;
|
||||
import forge.gui.deckeditor.views.VProbabilities;
|
||||
import forge.gui.deckeditor.views.VStatistics;
|
||||
import forge.gui.home.VMainMenu;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletBuild;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletContests;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletLoad;
|
||||
@@ -26,10 +25,8 @@ import forge.gui.home.sanctioned.VSubmenuConstructed;
|
||||
import forge.gui.home.sanctioned.VSubmenuDraft;
|
||||
import forge.gui.home.sanctioned.VSubmenuSealed;
|
||||
import forge.gui.home.settings.VSubmenuAvatars;
|
||||
import forge.gui.home.settings.VSubmenuDownloaders;
|
||||
import forge.gui.home.settings.VSubmenuPreferences;
|
||||
import forge.gui.home.utilities.VSubmenuDeckEditor;
|
||||
import forge.gui.home.utilities.VSubmenuExit;
|
||||
import forge.gui.home.utilities.VSubmenuUtilities;
|
||||
import forge.gui.match.views.VAntes;
|
||||
import forge.gui.match.views.VCombat;
|
||||
import forge.gui.match.views.VDetail;
|
||||
@@ -73,13 +70,10 @@ public enum EDocID { /** */
|
||||
HOME_MULTITEST (VSubmenuMultiTest.SINGLETON_INSTANCE), /** */
|
||||
HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE), /** */
|
||||
HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE), /** */
|
||||
HOME_DECKEDITOR (VSubmenuDeckEditor.SINGLETON_INSTANCE), /** */
|
||||
HOME_UTILITIES (VSubmenuUtilities.SINGLETON_INSTANCE), /** */
|
||||
HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE), /** */
|
||||
HOME_CONSTRUCTED (VSubmenuConstructed.SINGLETON_INSTANCE), /** */
|
||||
HOME_DRAFT (VSubmenuDraft.SINGLETON_INSTANCE), /** */
|
||||
HOME_SEALED (VSubmenuSealed.SINGLETON_INSTANCE), /** */
|
||||
HOME_MAINMENU (VMainMenu.SINGLETON_INSTANCE), /** */
|
||||
HOME_EXIT (VSubmenuExit.SINGLETON_INSTANCE), /** */
|
||||
|
||||
REPORT_MESSAGE (VMessage.SINGLETON_INSTANCE), /** */
|
||||
REPORT_STACK (VStack.SINGLETON_INSTANCE), /** */
|
||||
|
||||
@@ -2,6 +2,9 @@ package forge.gui.home;
|
||||
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
import forge.gui.deckeditor.CDeckEditorUI;
|
||||
import forge.gui.deckeditor.controllers.CEditorConstructed;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.sanctioned.VSubmenuConstructed;
|
||||
@@ -30,17 +33,16 @@ public enum CHomeUI implements ICDoc {
|
||||
lblSelected.repaintSelf();
|
||||
}
|
||||
|
||||
if (!id0.equals(EDocID.HOME_EXIT)) {
|
||||
id0.getDoc().populate();
|
||||
id0.getDoc().getLayoutControl().update();
|
||||
lblSelected = VHomeUI.SINGLETON_INSTANCE.getAllSubmenuLabels().get(id0);
|
||||
lblSelected.setSelected(true);
|
||||
id0.getDoc().populate();
|
||||
id0.getDoc().getLayoutControl().update();
|
||||
lblSelected = VHomeUI.SINGLETON_INSTANCE.getAllSubmenuLabels().get(id0);
|
||||
lblSelected.setSelected(true);
|
||||
|
||||
prefs.setPref(FPref.SUBMENU_CURRENTMENU, id0.toString());
|
||||
Singletons.getModel().getPreferences().save();
|
||||
}
|
||||
prefs.setPref(FPref.SUBMENU_CURRENTMENU, id0.toString());
|
||||
Singletons.getModel().getPreferences().save();
|
||||
}
|
||||
|
||||
/** @param lbl0 {@link forge.gui.home.LblMenuItem} */
|
||||
public void setLblSelected(final LblMenuItem lbl0) {
|
||||
this.lblSelected = lbl0;
|
||||
}
|
||||
@@ -53,27 +55,24 @@ public enum CHomeUI implements ICDoc {
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.home.ICDoc#intialize()
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public void initialize() {
|
||||
}
|
||||
selectPrevious();
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblEditor().setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorConstructed());
|
||||
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Pulls previous menu selection from preferences
|
||||
* and clicks it programatically.
|
||||
*/
|
||||
public void selectPrevious() {
|
||||
EDocID selected = null;
|
||||
try {
|
||||
selected = EDocID.valueOf(Singletons.getModel()
|
||||
.getPreferences().getPref(FPref.SUBMENU_CURRENTMENU));
|
||||
} catch (final Exception e) { }
|
||||
|
||||
if (selected != null && VMainMenu.SINGLETON_INSTANCE.getAllSubmenuLabels().get(selected) != null) {
|
||||
itemClick(selected);
|
||||
}
|
||||
else {
|
||||
itemClick(EDocID.HOME_CONSTRUCTED);
|
||||
}
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblExit().setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -90,4 +89,23 @@ public enum CHomeUI implements ICDoc {
|
||||
public Command getCommandOnSelect() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Pulls previous menu selection from preferences
|
||||
* and clicks it programatically.
|
||||
*/
|
||||
private void selectPrevious() {
|
||||
EDocID selected = null;
|
||||
try {
|
||||
selected = EDocID.valueOf(Singletons.getModel()
|
||||
.getPreferences().getPref(FPref.SUBMENU_CURRENTMENU));
|
||||
} catch (final Exception e) { }
|
||||
|
||||
if (selected != null && VHomeUI.SINGLETON_INSTANCE.getAllSubmenuLabels().get(selected) != null) {
|
||||
itemClick(selected);
|
||||
}
|
||||
else {
|
||||
itemClick(EDocID.HOME_CONSTRUCTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,8 +12,7 @@ public enum EMenuGroup { /** */
|
||||
QUEST ("Quest Mode"), /** */
|
||||
GAUNTLET ("Gauntlets"), /** */
|
||||
MULTIPLAYER ("Multiplayer"), /** */
|
||||
SETTINGS ("Game Settings"), /** */
|
||||
UTILITIES ("Tools");
|
||||
SETTINGS ("Game Settings");
|
||||
|
||||
private final String strTitle;
|
||||
|
||||
|
||||
@@ -52,10 +52,9 @@ import forge.gui.home.sanctioned.VSubmenuConstructed;
|
||||
import forge.gui.home.sanctioned.VSubmenuDraft;
|
||||
import forge.gui.home.sanctioned.VSubmenuSealed;
|
||||
import forge.gui.home.settings.VSubmenuAvatars;
|
||||
import forge.gui.home.settings.VSubmenuDownloaders;
|
||||
import forge.gui.home.settings.VSubmenuPreferences;
|
||||
import forge.gui.home.utilities.VSubmenuDeckEditor;
|
||||
import forge.gui.home.utilities.VSubmenuExit;
|
||||
import forge.gui.home.utilities.VSubmenuUtilities;
|
||||
import forge.gui.toolbox.ExperimentalLabel;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
@@ -88,6 +87,9 @@ public enum VHomeUI implements IVTopLevelUI {
|
||||
.iconAlignX(SwingConstants.CENTER)
|
||||
.iconInBackground(true).iconScaleFactor(1.0).build();
|
||||
|
||||
private ExperimentalLabel lblExit = new ExperimentalLabel("Exit Forge");
|
||||
private ExperimentalLabel lblEditor = new ExperimentalLabel("Deck Editor");
|
||||
|
||||
private VHomeUI() {
|
||||
pnlMenu.add(lblLogo, "w 200px!, h 200px!, gap 0 0 5px 10px, ax center");
|
||||
|
||||
@@ -109,10 +111,10 @@ public enum VHomeUI implements IVTopLevelUI {
|
||||
|
||||
allSubmenus.add(VSubmenuPreferences.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuAvatars.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuDownloaders.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuDeckEditor.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuUtilities.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuExit.SINGLETON_INSTANCE);
|
||||
//allSubmenus.add(VSubmenuDeckEditor.SINGLETON_INSTANCE);
|
||||
//allSubmenus.add(VSubmenuExit.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuMultiTest.SINGLETON_INSTANCE);
|
||||
|
||||
@@ -144,10 +146,25 @@ public enum VHomeUI implements IVTopLevelUI {
|
||||
}
|
||||
}
|
||||
|
||||
//pnlMenu.setBackground(l00);
|
||||
JPanel pnlButtons = new JPanel(new MigLayout("insets 0, gap 0"));
|
||||
pnlButtons.setOpaque(false);
|
||||
|
||||
pnlButtons.add(lblExit, "w 135px!, h 30px!, gap 0 10px 0 0");
|
||||
pnlButtons.add(lblEditor, "w 135px!, h 30px!");
|
||||
|
||||
pnlMenu.add(pnlButtons, "w 280px!, gap 10px 0 10px 10px");
|
||||
pnlDisplay.setBackground(FSkin.alphaColor(l00, 100));
|
||||
}
|
||||
|
||||
/** @return {@link forge.gui.toolbox.ExperimentalLabel} */
|
||||
public ExperimentalLabel getLblExit() {
|
||||
return this.lblExit;
|
||||
}
|
||||
|
||||
/** @return {@link forge.gui.toolbox.ExperimentalLabel} */
|
||||
public ExperimentalLabel getLblEditor() {
|
||||
return this.lblEditor;
|
||||
}
|
||||
|
||||
/** @return {@link javax.swing.JPanel} */
|
||||
public JPanel getPnlMenu() {
|
||||
|
||||
@@ -1,303 +0,0 @@
|
||||
/*
|
||||
* Forge: Play Magic: the Gathering.
|
||||
* Copyright (C) 2011 Forge Team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package forge.gui.home;
|
||||
|
||||
import java.awt.Component;
|
||||
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.BorderFactory;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.border.MatteBorder;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.framework.IVDoc;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletBuild;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletContests;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletLoad;
|
||||
import forge.gui.home.gauntlet.VSubmenuGauntletQuick;
|
||||
import forge.gui.home.multiplayer.VSubmenuMultiTest;
|
||||
import forge.gui.home.quest.VSubmenuChallenges;
|
||||
import forge.gui.home.quest.VSubmenuDuels;
|
||||
import forge.gui.home.quest.VSubmenuQuestData;
|
||||
import forge.gui.home.quest.VSubmenuQuestDecks;
|
||||
import forge.gui.home.quest.VSubmenuQuestPrefs;
|
||||
import forge.gui.home.sanctioned.VSubmenuConstructed;
|
||||
import forge.gui.home.sanctioned.VSubmenuDraft;
|
||||
import forge.gui.home.sanctioned.VSubmenuSealed;
|
||||
import forge.gui.home.settings.VSubmenuAvatars;
|
||||
import forge.gui.home.settings.VSubmenuPreferences;
|
||||
import forge.gui.home.utilities.VSubmenuDeckEditor;
|
||||
import forge.gui.home.utilities.VSubmenuExit;
|
||||
import forge.gui.home.utilities.VSubmenuUtilities;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.FScrollPane;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of main menu panel in home screen.
|
||||
*
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*/
|
||||
|
||||
public enum VMainMenu implements IVDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
// Fields used with interface IVDoc
|
||||
private DragCell parentCell;
|
||||
private final DragTab tab = new DragTab("Welcome");
|
||||
|
||||
private final JPanel pnlMenu = new JPanel();
|
||||
private final FScrollPane scrMenu = new FScrollPane(pnlMenu,
|
||||
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
|
||||
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
|
||||
|
||||
private final List<IVSubmenu> allSubmenus = new ArrayList<IVSubmenu>();
|
||||
private final Map<EDocID, FLabel> allSubmenuLabels = new HashMap<EDocID, FLabel>();
|
||||
private FLabel lblPreviousSelected;
|
||||
private JLabel lblLogo = new FLabel.Builder()
|
||||
.icon(FSkin.getIcon(FSkin.InterfaceIcons.ICO_LOGO))
|
||||
.iconAlignX(SwingConstants.CENTER)
|
||||
.iconInBackground(true).iconScaleFactor(1.0).build();
|
||||
|
||||
private VMainMenu() {
|
||||
// Add new menu items here (order doesn't matter).
|
||||
allSubmenus.add(VSubmenuConstructed.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuDraft.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuSealed.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuQuestDecks.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuQuestData.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuQuestPrefs.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuGauntletQuick.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuGauntletBuild.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuGauntletLoad.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuGauntletContests.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuMultiTest.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuPreferences.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuAvatars.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuDeckEditor.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuUtilities.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuExit.SINGLETON_INSTANCE);
|
||||
|
||||
// Left pane holds scroller with menu panel.
|
||||
pnlMenu.setLayout(new MigLayout("insets 0, gap 0, wrap, hidemode 3"));
|
||||
pnlMenu.setOpaque(false);
|
||||
scrMenu.setBorder(null);
|
||||
|
||||
final Map<EMenuGroup, JLabel> allGroupLabels = new HashMap<EMenuGroup, JLabel>();
|
||||
|
||||
final String strTitleConstraints = "w 90%!, gap 5% 0 5px 10px";
|
||||
final String strGroupConstraints = "w 85%!, gap 10% 0 0 0";
|
||||
final String strItemConstraints = "w 100%!, h 26px!, gap 0 0 1px 1px";
|
||||
|
||||
// For each group: init its panel
|
||||
final SortedMap<EMenuGroup, JPanel> allGroupPanels = new TreeMap<EMenuGroup, JPanel>();
|
||||
for (final EMenuGroup e : EMenuGroup.values()) {
|
||||
allGroupPanels.put(e, new JPanel());
|
||||
allGroupPanels.get(e).setOpaque(false);
|
||||
allGroupPanels.get(e).setVisible(false);
|
||||
allGroupPanels.get(e).setLayout(new MigLayout("insets 0, gap 0, wrap"));
|
||||
allGroupPanels.get(e).setName(e.toString());
|
||||
}
|
||||
|
||||
// For each item: Add to its group, and add to the card layout in right panel.
|
||||
for (final IVSubmenu item : allSubmenus) {
|
||||
allSubmenuLabels.put(item.getItemEnum(), makeItemLabel(item));
|
||||
allGroupPanels.get(item.getGroupEnum()).add(
|
||||
allSubmenuLabels.get(item.getItemEnum()), strItemConstraints);
|
||||
}
|
||||
|
||||
// For each group: add its title, then its panel, then "click" if necessary.
|
||||
for (final EMenuGroup e : allGroupPanels.keySet()) {
|
||||
allGroupLabels.put(e, makeTitleLabel(e));
|
||||
pnlMenu.add(allGroupLabels.get(e), strTitleConstraints);
|
||||
pnlMenu.add(allGroupPanels.get(e), strGroupConstraints);
|
||||
|
||||
// Expand groups expanded from previous session
|
||||
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.valueOf("SUBMENU_" + e.toString()))) {
|
||||
groupClick(e, allGroupLabels.get(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void groupClick(final EMenuGroup e0, final JLabel lbl0) {
|
||||
final Component[] menuObjects = pnlMenu.getComponents();
|
||||
for (final Component c : menuObjects) {
|
||||
if (c.getName() != null && c.getName().equals(e0.toString())) {
|
||||
if (c.isVisible()) {
|
||||
lbl0.setText("+ " + e0.getTitle());
|
||||
c.setVisible(false);
|
||||
Singletons.getModel().getPreferences().setPref(
|
||||
FPref.valueOf("SUBMENU_" + e0.toString()), "false");
|
||||
}
|
||||
else {
|
||||
lbl0.setText("- " + e0.getTitle());
|
||||
c.setVisible(true);
|
||||
Singletons.getModel().getPreferences().setPref(
|
||||
FPref.valueOf("SUBMENU_" + e0.toString()), "true");
|
||||
}
|
||||
|
||||
Singletons.getModel().getPreferences().save();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Custom title label styling. */
|
||||
@SuppressWarnings("serial")
|
||||
private JLabel makeTitleLabel(final EMenuGroup e0) {
|
||||
final FLabel lbl = new FLabel.Builder().fontSize(16)
|
||||
.hoverable(true).fontAlign(SwingConstants.LEFT).build();
|
||||
|
||||
lbl.setBorder(BorderFactory.createCompoundBorder(
|
||||
new MatteBorder(0, 0, 1, 0, FSkin.getColor(FSkin.Colors.CLR_BORDERS)),
|
||||
new EmptyBorder(2, 2, 2, 2)));
|
||||
|
||||
lbl.setCommand(new Command() { @Override
|
||||
public void execute() { groupClick(e0, lbl); } });
|
||||
|
||||
lbl.setText("+ " + e0.getTitle());
|
||||
return lbl;
|
||||
}
|
||||
|
||||
/** Custom subsection label styling. */
|
||||
@SuppressWarnings("serial")
|
||||
private FLabel makeItemLabel(final IVSubmenu item) {
|
||||
final ForgePreferences prefs = Singletons.getModel().getPreferences();
|
||||
|
||||
final FLabel lbl = new FLabel.Builder().fontSize(15)
|
||||
.hoverable(true).selectable(true).text(item.getMenuTitle())
|
||||
.fontAlign(SwingConstants.LEFT).build();
|
||||
|
||||
final Command cmdOnClick = new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
if (lblPreviousSelected != null) { lblPreviousSelected.setSelected(false); }
|
||||
|
||||
if (!item.getItemEnum().equals(EDocID.HOME_EXIT)) {
|
||||
item.getItemEnum().getDoc().getParentCell().setSelected(item.getItemEnum().getDoc());
|
||||
lblPreviousSelected = lbl;
|
||||
|
||||
prefs.setPref(FPref.SUBMENU_CURRENTMENU, item.getItemEnum().toString());
|
||||
Singletons.getModel().getPreferences().save();
|
||||
}
|
||||
|
||||
// Make sure this is called last, so it doesn't interfere
|
||||
// with the selection display process.
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (item.getLayoutControl().getCommandOnSelect() != null) {
|
||||
item.getLayoutControl().getCommandOnSelect().execute();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
lbl.setCommand(cmdOnClick);
|
||||
lbl.setBorder(new EmptyBorder(0, 10, 0, 0));
|
||||
|
||||
return lbl;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return Map<EMenuItem, FLabel>
|
||||
*/
|
||||
public Map<EDocID, FLabel> getAllSubmenuLabels() {
|
||||
return allSubmenuLabels;
|
||||
}
|
||||
|
||||
//========== Overridden from IVDoc
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getDocumentID()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getDocumentID() {
|
||||
return EDocID.HOME_MAINMENU;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getTabLabel()
|
||||
*/
|
||||
@Override
|
||||
public DragTab getTabLabel() {
|
||||
return tab;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getLayoutControl()
|
||||
*/
|
||||
@Override
|
||||
public ICDoc getLayoutControl() {
|
||||
return CHomeUI.SINGLETON_INSTANCE;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell)
|
||||
*/
|
||||
@Override
|
||||
public void setParentCell(DragCell cell0) {
|
||||
this.parentCell = cell0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getParentCell()
|
||||
*/
|
||||
@Override
|
||||
public DragCell getParentCell() {
|
||||
return parentCell;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#populate()
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
parentCell.getBody().setLayout(new MigLayout("insets 0, gap 0, align center, wrap"));
|
||||
parentCell.getBody().add(lblLogo, "w 200px!, h 20%:20%:200px, gap 0 0 5px 10px, ax center");
|
||||
parentCell.getBody().add(scrMenu, "w 98%!, pushy, growy, ax center, gap 0 0 0 10px");
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package forge.gui.home.utilities;
|
||||
package forge.gui.home.settings;
|
||||
|
||||
import forge.Command;
|
||||
import forge.error.BugzReporter;
|
||||
@@ -16,12 +16,12 @@ import forge.gui.framework.ICDoc;
|
||||
*
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public enum CSubmenuUtilities implements ICDoc {
|
||||
public enum CSubmenuDownloaders implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private final Command cmdLicensing = new Command() { @Override
|
||||
public void execute() { VSubmenuUtilities.SINGLETON_INSTANCE.showLicensing(); } };
|
||||
public void execute() { VSubmenuDownloaders.SINGLETON_INSTANCE.showLicensing(); } };
|
||||
private final Command cmdPicDownload = new Command() { @Override
|
||||
public void execute() { new GuiDownloadPicturesLQ(); } };
|
||||
private final Command cmdSetDownload = new Command() { @Override
|
||||
@@ -31,7 +31,7 @@ public enum CSubmenuUtilities implements ICDoc {
|
||||
private final Command cmdDownloadPrices = new Command() { @Override
|
||||
public void execute() { new GuiDownloadPrices(); } };
|
||||
private final Command cmdHowToPlay = new Command() { @Override
|
||||
public void execute() { VSubmenuUtilities.SINGLETON_INSTANCE.showHowToPlay(); } };
|
||||
public void execute() { VSubmenuDownloaders.SINGLETON_INSTANCE.showHowToPlay(); } };
|
||||
|
||||
private final Command cmdImportPictures = new Command() {
|
||||
@Override
|
||||
@@ -53,7 +53,7 @@ public enum CSubmenuUtilities implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
final VSubmenuUtilities view = VSubmenuUtilities.SINGLETON_INSTANCE;
|
||||
final VSubmenuDownloaders view = VSubmenuDownloaders.SINGLETON_INSTANCE;
|
||||
view.getBtnDownloadPics().setCommand(cmdPicDownload);
|
||||
view.getBtnDownloadSetPics().setCommand(cmdSetDownload);
|
||||
view.getBtnDownloadQuestImages().setCommand(cmdQuestImages);
|
||||
@@ -1,4 +1,4 @@
|
||||
package forge.gui.home.utilities;
|
||||
package forge.gui.home.settings;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
@@ -40,7 +40,7 @@ import forge.properties.NewConstants.Lang;
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*
|
||||
*/
|
||||
public enum VSubmenuUtilities implements IVSubmenu {
|
||||
public enum VSubmenuDownloaders implements IVSubmenu {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
@@ -72,7 +72,7 @@ public enum VSubmenuUtilities implements IVSubmenu {
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
private VSubmenuUtilities() {
|
||||
private VSubmenuDownloaders() {
|
||||
final String constraintsLBL = "w 90%!, h 20px!, gap 5% 0 3px 8px";
|
||||
final String constraintsBTN = "h 30px!, w 50%!, gap 25% 0 0 0";
|
||||
|
||||
@@ -141,7 +141,7 @@ public enum VSubmenuUtilities implements IVSubmenu {
|
||||
*/
|
||||
@Override
|
||||
public EMenuGroup getGroupEnum() {
|
||||
return EMenuGroup.UTILITIES;
|
||||
return EMenuGroup.SETTINGS;
|
||||
}
|
||||
|
||||
/** @return {@link forge.gui.toolbox.FLabel} */
|
||||
@@ -314,7 +314,7 @@ public enum VSubmenuUtilities implements IVSubmenu {
|
||||
*/
|
||||
@Override
|
||||
public ICDoc getLayoutControl() {
|
||||
return CSubmenuUtilities.SINGLETON_INSTANCE;
|
||||
return CSubmenuDownloaders.SINGLETON_INSTANCE;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -1,49 +0,0 @@
|
||||
package forge.gui.home.utilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.control.FControl;
|
||||
import forge.gui.deckeditor.CDeckEditorUI;
|
||||
import forge.gui.deckeditor.controllers.CEditorConstructed;
|
||||
import forge.gui.framework.ICDoc;
|
||||
|
||||
/**
|
||||
* Controls the deck editor submenu option in the home UI.
|
||||
*
|
||||
* <br><br><i>(C at beginning of class name denotes a control class.)</i>
|
||||
*
|
||||
*/
|
||||
public enum CSubmenuDeckEditor implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.control.home.IControlSubmenu#update()
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.control.home.IControlSubmenu#update()
|
||||
*/
|
||||
@Override
|
||||
public void update() { }
|
||||
|
||||
/**
|
||||
* Shows constructed mode editor.
|
||||
*/
|
||||
private void showDeckEditor() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setCurrentEditorController(new CEditorConstructed());
|
||||
FControl.SINGLETON_INSTANCE.changeState(FControl.DECK_EDITOR_CONSTRUCTED);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.ICDoc#getCommandOnSelect()
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public Command getCommandOnSelect() {
|
||||
return new Command() { @Override
|
||||
public void execute() { showDeckEditor(); } };
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package forge.gui.home.utilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.gui.framework.ICDoc;
|
||||
|
||||
/**
|
||||
* Controls the exit submenu option in the home UI.
|
||||
*
|
||||
* <br><br><i>(C at beginning of class name denotes a control class.)</i>
|
||||
*
|
||||
*/
|
||||
public enum CSubmenuExit implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.control.home.IControlSubmenu#update()
|
||||
*/
|
||||
@Override
|
||||
public void update() { }
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.ICSubmenu#initialize()
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.ICDoc#getCommandOnSelect()
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public Command getCommandOnSelect() {
|
||||
return new Command() { @Override
|
||||
public void execute() { System.exit(0); } };
|
||||
}
|
||||
}
|
||||
@@ -1,119 +0,0 @@
|
||||
package forge.gui.home.utilities;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.EMenuGroup;
|
||||
import forge.gui.home.IVSubmenu;
|
||||
import forge.gui.home.VHomeUI;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of deck editor submenu option singleton.
|
||||
*
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*
|
||||
*/
|
||||
public enum VSubmenuDeckEditor implements IVSubmenu {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
// Fields used with interface IVDoc
|
||||
private DragCell parentCell;
|
||||
private final DragTab tab = new DragTab("Deck Editor");
|
||||
|
||||
/** */
|
||||
private final JPanel pnl = new JPanel();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.home.IViewSubmenu#populate()
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
pnl.removeAll();
|
||||
pnl.setLayout(new MigLayout("insets 0, gap 0, align center"));
|
||||
pnl.setOpaque(false);
|
||||
|
||||
pnl.add(new FLabel.Builder().text("Open Deck Editor").opaque(true)
|
||||
.hoverable(true).cmdClick(CSubmenuDeckEditor.SINGLETON_INSTANCE.getCommandOnSelect())
|
||||
.fontSize(16).build(), "w 200px!, h 40px!");
|
||||
|
||||
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll();
|
||||
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0"));
|
||||
|
||||
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnl, "w 98%!, h 98%!, gap 1% 0 1% 0");
|
||||
|
||||
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate();
|
||||
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.home.IViewSubmenu#getGroup()
|
||||
*/
|
||||
@Override
|
||||
public EMenuGroup getGroupEnum() {
|
||||
return EMenuGroup.UTILITIES;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.IVSubmenu#getMenuTitle()
|
||||
*/
|
||||
@Override
|
||||
public String getMenuTitle() {
|
||||
return "Deck Editor";
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.IVSubmenu#getItemEnum()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getItemEnum() {
|
||||
return EDocID.HOME_DECKEDITOR;
|
||||
}
|
||||
|
||||
//========== Overridden from IVDoc
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getDocumentID()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getDocumentID() {
|
||||
return EDocID.HOME_DECKEDITOR;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getTabLabel()
|
||||
*/
|
||||
@Override
|
||||
public DragTab getTabLabel() {
|
||||
return tab;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getLayoutControl()
|
||||
*/
|
||||
@Override
|
||||
public ICDoc getLayoutControl() {
|
||||
return CSubmenuDeckEditor.SINGLETON_INSTANCE;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell)
|
||||
*/
|
||||
@Override
|
||||
public void setParentCell(DragCell cell0) {
|
||||
this.parentCell = cell0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getParentCell()
|
||||
*/
|
||||
@Override
|
||||
public DragCell getParentCell() {
|
||||
return parentCell;
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
package forge.gui.home.utilities;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.EMenuGroup;
|
||||
import forge.gui.home.IVSubmenu;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of exit submenu option singleton.
|
||||
*
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*
|
||||
*/
|
||||
public enum VSubmenuExit implements IVSubmenu {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
// Fields used with interface IVDoc
|
||||
private DragCell parentCell;
|
||||
private final DragTab tab = new DragTab("Exit");
|
||||
|
||||
/** */
|
||||
private final JPanel pnl = new JPanel();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.home.IViewSubmenu#populate()
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
pnl.setLayout(new MigLayout("insets 0, gap 0, align center"));
|
||||
pnl.setOpaque(false);
|
||||
|
||||
pnl.add(new FLabel.Builder().text("Open Deck Editor").opaque(true)
|
||||
.hoverable(true).cmdClick(CSubmenuDeckEditor.SINGLETON_INSTANCE.getCommandOnSelect())
|
||||
.fontSize(16).build(), "w 200px!, h 40px!");
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.view.home.IViewSubmenu#getGroup()
|
||||
*/
|
||||
@Override
|
||||
public EMenuGroup getGroupEnum() {
|
||||
return EMenuGroup.UTILITIES;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.IVSubmenu#getMenuTitle()
|
||||
*/
|
||||
@Override
|
||||
public String getMenuTitle() {
|
||||
return "Exit Forge";
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.IVSubmenu#getItemEnum()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getItemEnum() {
|
||||
return EDocID.HOME_EXIT;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getDocumentID()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getDocumentID() {
|
||||
return EDocID.HOME_EXIT;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getTabLabel()
|
||||
*/
|
||||
@Override
|
||||
public DragTab getTabLabel() {
|
||||
return tab;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getLayoutControl()
|
||||
*/
|
||||
@Override
|
||||
public ICDoc getLayoutControl() {
|
||||
return CSubmenuExit.SINGLETON_INSTANCE;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell)
|
||||
*/
|
||||
@Override
|
||||
public void setParentCell(DragCell cell0) {
|
||||
parentCell = cell0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getParentCell()
|
||||
*/
|
||||
@Override
|
||||
public DragCell getParentCell() {
|
||||
return parentCell;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
/** Forge Card Game. */
|
||||
package forge.gui.home.utilities;
|
||||
|
||||
@@ -73,7 +73,7 @@ public class ExperimentalLabel extends JLabel implements ILocalRepaint {
|
||||
public void mouseReleased(final MouseEvent e) {
|
||||
down = false;
|
||||
repaintSelf();
|
||||
cmdClick.execute();
|
||||
if (cmdClick != null) { cmdClick.execute(); }
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user