diff --git a/src/main/java/forge/properties/ForgePreferences.java b/src/main/java/forge/properties/ForgePreferences.java index 1aa3fe9b882..8c29c123d8a 100644 --- a/src/main/java/forge/properties/ForgePreferences.java +++ b/src/main/java/forge/properties/ForgePreferences.java @@ -59,6 +59,7 @@ public class ForgePreferences { UI_BUGZ_PWD (""), /** */ UI_ANTE ("false"), /** */ UI_SKIN ("default"), /** */ + UI_HOMEMENU (HomeMenus.constructed.toString()), /** */ DEV_MODE_ENABLED ("false"), /** */ DEV_MILLING_LOSS ("true"), /** */ @@ -126,6 +127,12 @@ public class ForgePreferences { tiny, small, medium, large } + /** */ + public enum HomeMenus { + /** */ + constructed, draft, sealed, quest, settings, utilities + } + /** Instantiates a ForgePreferences object. */ public ForgePreferences() { preferenceValues = new HashMap(); diff --git a/src/main/java/forge/view/FView.java b/src/main/java/forge/view/FView.java index 9b5e469326f..a5844c54423 100644 --- a/src/main/java/forge/view/FView.java +++ b/src/main/java/forge/view/FView.java @@ -21,7 +21,10 @@ import javax.swing.SwingUtilities; import net.slightlymagic.braids.util.UtilFunctions; import forge.AllZone; +import forge.Singletons; import forge.control.FControl; +import forge.properties.ForgePreferences; +import forge.properties.ForgePreferences.FPref; import forge.view.home.SplashFrame; import forge.view.toolbox.CardFaceSymbols; import forge.view.toolbox.FProgressBar; @@ -124,6 +127,21 @@ public class FView { barProgress.setDescription("Forge is ready to launch."); g.setVisible(true); + + // Open previous menu on first run, or constructed. + // Focus is reset when the frame becomes visible, + // so the call to show the menu must happen here. + final ForgePreferences.HomeMenus lastMenu = + ForgePreferences.HomeMenus.valueOf(Singletons.getModel().getPreferences().getPref(FPref.UI_HOMEMENU)); + + switch(lastMenu) { + case draft: g.getHomeView().showDraftMenu(); break; + case sealed: g.getHomeView().showSealedMenu(); break; + case quest: g.getHomeView().showQuestMenu(); break; + case settings: g.getHomeView().showSettingsMenu(); break; + case utilities: g.getHomeView().showUtilitiesMenu(); break; + default: g.getHomeView().showConstructedMenu(); + } } }); } // End FView() diff --git a/src/main/java/forge/view/GuiTopLevel.java b/src/main/java/forge/view/GuiTopLevel.java index 5c7aa5946db..5640c73ca60 100644 --- a/src/main/java/forge/view/GuiTopLevel.java +++ b/src/main/java/forge/view/GuiTopLevel.java @@ -38,6 +38,7 @@ import forge.control.FControl; import forge.control.match.ControlField; import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; +import forge.view.home.HomeTopLevel; import forge.view.match.ViewField; import forge.view.match.ViewTabber; import forge.view.toolbox.FOverlay; @@ -97,6 +98,11 @@ public class GuiTopLevel extends JFrame implements Display, CardContainer { return this.control; } + /** @return {@link forge.view.home.HomeTopLevel} */ + public HomeTopLevel getHomeView() { + return control.getHomeController().getView(); + } + /* * ======================================================== * diff --git a/src/main/java/forge/view/home/HomeTopLevel.java b/src/main/java/forge/view/home/HomeTopLevel.java index 84e07046d4d..91554160ce3 100644 --- a/src/main/java/forge/view/home/HomeTopLevel.java +++ b/src/main/java/forge/view/home/HomeTopLevel.java @@ -34,6 +34,8 @@ import forge.control.home.ControlConstructed; import forge.control.home.ControlDraft; import forge.control.home.ControlSealed; import forge.control.home.ControlUtilities; +import forge.properties.ForgePreferences; +import forge.properties.ForgePreferences.FPref; import forge.view.toolbox.FButton; import forge.view.toolbox.FPanel; import forge.view.toolbox.FRoundedPanel; @@ -171,19 +173,21 @@ public class HomeTopLevel extends FPanel { pnlMenu.add(btnExit, constraints); control = new ControlHomeUI(this); - - // Open "constructed" menu on first run. - showConstructedMenu(); } /** Opens menu for constructed mode. */ public void showConstructedMenu() { clearToggles(); btnConstructed.setToggled(true); + btnConstructed.grabFocus(); pnlContent.removeAll(); pnlContent.add(constructed, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.constructed.toString()); + Singletons.getModel().getPreferences().save(); } /** Opens menu for draft mode. */ @@ -191,10 +195,15 @@ public class HomeTopLevel extends FPanel { clearToggles(); btnDraft.setToggled(true); btnDraft.grabFocus(); + pnlContent.removeAll(); pnlContent.add(draft, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.draft.toString()); + Singletons.getModel().getPreferences().save(); } /** Opens menu for sealed mode. */ @@ -202,10 +211,15 @@ public class HomeTopLevel extends FPanel { clearToggles(); btnSealed.setToggled(true); btnSealed.grabFocus(); + pnlContent.removeAll(); pnlContent.add(sealed, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.sealed.toString()); + Singletons.getModel().getPreferences().save(); } /** Opens menu for quest mode. */ @@ -213,10 +227,15 @@ public class HomeTopLevel extends FPanel { clearToggles(); btnQuest.setToggled(true); btnQuest.grabFocus(); + pnlContent.removeAll(); pnlContent.add(quest, "w 99%!, h 95%!, gaptop 2.5%, gapleft 0.5%"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.quest.toString()); + Singletons.getModel().getPreferences().save(); } /** Opens menu for settings. */ @@ -224,10 +243,15 @@ public class HomeTopLevel extends FPanel { clearToggles(); btnSettings.setToggled(true); btnSettings.grabFocus(); + pnlContent.removeAll(); pnlContent.add(settings, "w 99%!, h 95%!, gaptop 2.5%, gapleft 0.5%"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.settings.toString()); + Singletons.getModel().getPreferences().save(); } /** Opens menu for utilities. */ @@ -235,10 +259,15 @@ public class HomeTopLevel extends FPanel { clearToggles(); btnUtilities.setToggled(true); btnUtilities.grabFocus(); + pnlContent.removeAll(); pnlContent.add(utilities, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, + ForgePreferences.HomeMenus.utilities.toString()); + Singletons.getModel().getPreferences().save(); } /** @return ControlConstructed */