diff --git a/src/main/java/forge/view/FView.java b/src/main/java/forge/view/FView.java index 5b75cab97ba..a51f8d78c43 100644 --- a/src/main/java/forge/view/FView.java +++ b/src/main/java/forge/view/FView.java @@ -69,38 +69,6 @@ public final class FView extends JFrame { // After events and shortcuts are assembled, instantiate all different state screens Singletons.getView().instantiateCachedUIStates(); - // 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: - Singletons.getView().getViewHome().getBtnDraft().grabFocus(); - Singletons.getView().getViewHome().showDraftMenu(); - break; - case sealed: - Singletons.getView().getViewHome().getBtnSealed().grabFocus(); - Singletons.getView().getViewHome().showSealedMenu(); - break; - case quest: - Singletons.getView().getViewHome().getBtnQuest().grabFocus(); - Singletons.getView().getViewHome().showQuestMenu(); - break; - case settings: - Singletons.getView().getViewHome().getBtnSettings().grabFocus(); - Singletons.getView().getViewHome().showSettingsMenu(); - break; - case utilities: - Singletons.getView().getViewHome().getBtnUtilities().grabFocus(); - Singletons.getView().getViewHome().showUtilitiesMenu(); - break; - default: - Singletons.getView().getViewHome().getBtnConstructed().grabFocus(); - Singletons.getView().getViewHome().showConstructedMenu(); - } - // Frame styling FView.this.setMinimumSize(new Dimension(800, 600)); FView.this.setLocationRelativeTo(null); @@ -125,6 +93,21 @@ public final class FView extends JFrame { FView.this.splash = null; FView.this.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: Singletons.getView().getViewHome().showDraftMenu(); break; + case sealed: Singletons.getView().getViewHome().showSealedMenu(); break; + case quest: Singletons.getView().getViewHome().showQuestMenu(); break; + case settings: Singletons.getView().getViewHome().showSettingsMenu(); break; + case utilities: Singletons.getView().getViewHome().showUtilitiesMenu(); break; + default: Singletons.getView().getViewHome().showConstructedMenu(); + } } /** @return {@link javax.swing.JLayeredPane} */ diff --git a/src/main/java/forge/view/ViewHomeUI.java b/src/main/java/forge/view/ViewHomeUI.java index a9c2366752f..de10a46a863 100644 --- a/src/main/java/forge/view/ViewHomeUI.java +++ b/src/main/java/forge/view/ViewHomeUI.java @@ -179,8 +179,6 @@ public class ViewHomeUI extends FPanel { /** 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(); @@ -188,6 +186,13 @@ public class ViewHomeUI extends FPanel { Singletons.getControl().getControlHome().getControlConstructed().updateDeckSelectionCheckboxes(); + SwingUtilities.invokeLater(new Runnable() { @Override + public void run() { + btnConstructed.setToggled(true); + btnConstructed.grabFocus(); + } + }); + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, ForgePreferences.HomeMenus.constructed.toString()); Singletons.getModel().getPreferences().save(); @@ -196,14 +201,18 @@ public class ViewHomeUI extends FPanel { /** Opens menu for draft mode. */ public void showDraftMenu() { clearToggles(); - btnDraft.setToggled(true); - btnDraft.grabFocus(); - pnlContent.removeAll(); pnlContent.add(draft, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + SwingUtilities.invokeLater(new Runnable() { @Override + public void run() { + btnDraft.setToggled(true); + btnDraft.grabFocus(); + } + }); + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, ForgePreferences.HomeMenus.draft.toString()); Singletons.getModel().getPreferences().save(); @@ -212,14 +221,18 @@ public class ViewHomeUI extends FPanel { /** Opens menu for sealed mode. */ public void showSealedMenu() { clearToggles(); - btnSealed.setToggled(true); - btnSealed.grabFocus(); - pnlContent.removeAll(); pnlContent.add(sealed, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + SwingUtilities.invokeLater(new Runnable() { @Override + public void run() { + btnSealed.setToggled(true); + btnSealed.grabFocus(); + } + }); + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, ForgePreferences.HomeMenus.sealed.toString()); Singletons.getModel().getPreferences().save(); @@ -248,7 +261,6 @@ public class ViewHomeUI extends FPanel { /** Opens menu for settings. */ public void showSettingsMenu() { clearToggles(); - pnlContent.removeAll(); pnlContent.add(settings, "w 99%!, h 95%!, gaptop 2.5%, gapleft 0.5%"); pnlContent.revalidate(); @@ -269,14 +281,18 @@ public class ViewHomeUI extends FPanel { /** Opens menu for utilities. */ public void showUtilitiesMenu() { clearToggles(); - btnUtilities.setToggled(true); - btnUtilities.grabFocus(); - pnlContent.removeAll(); pnlContent.add(utilities, "w 100%!, h 100%!"); pnlContent.revalidate(); pnlContent.repaint(); + SwingUtilities.invokeLater(new Runnable() { @Override + public void run() { + btnUtilities.setToggled(true); + btnUtilities.grabFocus(); + } + }); + Singletons.getModel().getPreferences().setPref(FPref.UI_HOMEMENU, ForgePreferences.HomeMenus.utilities.toString()); Singletons.getModel().getPreferences().save(); @@ -311,7 +327,7 @@ public class ViewHomeUI extends FPanel { public ViewQuest getViewQuest() { return this.quest; } - + /** @return {@link forge.view.home.ViewSettings} */ public ViewSettings getViewSettings() { return this.settings;