From 43c518569f2e35f23f09bef5a6ce56a8fa50733a Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Wed, 22 Feb 2012 07:34:00 +0000 Subject: [PATCH] First stages home screen architecture update (will not affect build at all, should probably be a branch). --- .gitattributes | 3 +++ .../forge/control/home/IControlSubmenu.java | 16 ++++++++++++++ src/main/java/forge/model/home/MenuGroup.java | 15 +++++++++++++ .../java/forge/view/home/IViewSubmenu.java | 22 +++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 src/main/java/forge/control/home/IControlSubmenu.java create mode 100644 src/main/java/forge/model/home/MenuGroup.java create mode 100644 src/main/java/forge/view/home/IViewSubmenu.java diff --git a/.gitattributes b/.gitattributes index 03a6e5a5d80..09b4288ccff 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11214,6 +11214,7 @@ src/main/java/forge/control/home/ControlQuest.java -text src/main/java/forge/control/home/ControlSealed.java -text src/main/java/forge/control/home/ControlSettings.java -text src/main/java/forge/control/home/ControlUtilities.java -text +src/main/java/forge/control/home/IControlSubmenu.java -text src/main/java/forge/control/home/package-info.java -text svneol=native#text/plain src/main/java/forge/control/input/Input.java svneol=native#text/plain src/main/java/forge/control/input/InputAttack.java svneol=native#text/plain @@ -11335,6 +11336,7 @@ src/main/java/forge/model/BuildInfo.java -text src/main/java/forge/model/FMatchState.java svneol=native#text/plain src/main/java/forge/model/FModel.java svneol=native#text/plain src/main/java/forge/model/MultipleForgeJarsFoundError.java -text +src/main/java/forge/model/home/MenuGroup.java -text src/main/java/forge/model/package-info.java svneol=native#text/plain src/main/java/forge/package-info.java svneol=native#text/plain src/main/java/forge/properties/ForgePreferences.java svneol=native#text/plain @@ -11410,6 +11412,7 @@ src/main/java/forge/view/bazaar/ViewStall.java svneol=native#text/plain src/main/java/forge/view/bazaar/package-info.java svneol=native#text/plain src/main/java/forge/view/editor/package-info.java svneol=native#text/plain src/main/java/forge/view/home/ConstructedDeckSelectPanel.java -text +src/main/java/forge/view/home/IViewSubmenu.java -text src/main/java/forge/view/home/QuestFileLister.java -text src/main/java/forge/view/home/QuestPreferencesHandler.java -text src/main/java/forge/view/home/StartButton.java -text diff --git a/src/main/java/forge/control/home/IControlSubmenu.java b/src/main/java/forge/control/home/IControlSubmenu.java new file mode 100644 index 00000000000..19bcfb066c8 --- /dev/null +++ b/src/main/java/forge/control/home/IControlSubmenu.java @@ -0,0 +1,16 @@ +package forge.control.home; + +import forge.Command; +import forge.view.home.IViewSubmenu; + +/** Dictates methods required for a submenu controller. */ +public interface IControlSubmenu { + /** @return {@link forge.command} */ + Command getCommand(); + + /** @return {@link forge.view.home.IViewSubmenu} */ + IViewSubmenu getView(); + + /** Update whatever content is in the panel. */ + void update(); +} diff --git a/src/main/java/forge/model/home/MenuGroup.java b/src/main/java/forge/model/home/MenuGroup.java new file mode 100644 index 00000000000..9f720745eac --- /dev/null +++ b/src/main/java/forge/model/home/MenuGroup.java @@ -0,0 +1,15 @@ +package forge.model.home; + +/** + * Submenus each belong to a menu group, which + * is used for several functions, such as expanding + * and collapsing in the menu. + */ +public enum MenuGroup { /** */ + CONSTRUCTED, /** */ + SEALED, /** */ + DRAFT, /** */ + QUEST, /** */ + SETTINGS, /** */ + UTILITIES; +} diff --git a/src/main/java/forge/view/home/IViewSubmenu.java b/src/main/java/forge/view/home/IViewSubmenu.java new file mode 100644 index 00000000000..443f6268e61 --- /dev/null +++ b/src/main/java/forge/view/home/IViewSubmenu.java @@ -0,0 +1,22 @@ +package forge.view.home; + +import javax.swing.JPanel; + +import forge.control.home.IControlSubmenu; +import forge.model.home.MenuGroup; + +/** Dictates methods required for a submenu view. */ +public interface IViewSubmenu { + /** @return {@link forge.control.home.IControlSubmenu} */ + IControlSubmenu getControl(); + + /** Allows static factory creation by decoupling UI components. + * @return {@link javax.swing.JPanel} */ + JPanel getPanel(); + + /** Returns parent menu grouping of this submenu, useful for + * functions such as expanding and collapsing in the menu area. + * + * @return {@link javax.swing.JPanel} */ + MenuGroup getGroup(); +}