Second attempt at fixing focus issues on home screen.

Home screen now persists current submenu selection over restart.
This commit is contained in:
Doublestrike
2012-01-31 01:02:27 +00:00
parent 0db1036fa7
commit 7f9ec677a2
4 changed files with 63 additions and 3 deletions

View File

@@ -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<FPref, String>();

View File

@@ -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()

View File

@@ -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();
}
/*
* ========================================================
*

View File

@@ -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 */