From 1e4d68383c1563671191f53e9bc16e91ed64c350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 31 Aug 2009 16:58:07 +0200 Subject: [PATCH] ItEr24S08CUAsignacionGrupoRecursosAPlanificacionItEr23S10: Adding registry for storing objects at Desktop. --- .../main/java/org/zkoss/ganttz/Planner.java | 14 ++++-- .../ganttz/util/MenuItemsRegisterLocator.java | 40 ---------------- .../ganttz/util/OnZKDesktopRegistry.java | 47 +++++++++++++++++++ .../web/common/CustomMenuController.java | 8 +++- 4 files changed, 62 insertions(+), 47 deletions(-) delete mode 100644 ganttzk/src/main/java/org/zkoss/ganttz/util/MenuItemsRegisterLocator.java create mode 100644 ganttzk/src/main/java/org/zkoss/ganttz/util/OnZKDesktopRegistry.java diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index b6980d0cf..0867e458c 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -15,7 +15,8 @@ import org.zkoss.ganttz.extensions.ICommandOnTask; import org.zkoss.ganttz.extensions.IContext; import org.zkoss.ganttz.extensions.ITab; import org.zkoss.ganttz.extensions.ITabFactory; -import org.zkoss.ganttz.util.MenuItemsRegisterLocator; +import org.zkoss.ganttz.util.IMenuItemsRegister; +import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.zk.ui.Executions; import org.zkoss.zul.impl.XulElement; @@ -114,8 +115,7 @@ public class Planner extends XulElement { this.context = context; clear(); context.add(configuration.getData()); - visualizeTabs(context, configuration - .getTabFactories()); + visualizeTabs(context, configuration.getTabFactories()); } private TabsRegistry createTabs(IContext context, @@ -141,9 +141,13 @@ public class Planner extends XulElement { } private void registryTabs(TabsRegistry tabs) { - if (!MenuItemsRegisterLocator.isRegistered()) + if (!getMenuItemsRegisterLocator().isRegistered()) return; - tabs.registerAtMenu(MenuItemsRegisterLocator.retrieve()); + tabs.registerAtMenu(getMenuItemsRegisterLocator().retrieve()); + } + + private OnZKDesktopRegistry getMenuItemsRegisterLocator() { + return OnZKDesktopRegistry.getLocatorFor(IMenuItemsRegister.class); } private void clear() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuItemsRegisterLocator.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuItemsRegisterLocator.java deleted file mode 100644 index 646cda013..000000000 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/MenuItemsRegisterLocator.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.zkoss.ganttz.util; - -import org.zkoss.zk.ui.Desktop; -import org.zkoss.zk.ui.Executions; - -public class MenuItemsRegisterLocator { - - private static final String MENU_ATTRIBUTE = MenuItemsRegisterLocator.class - .getSimpleName() - + "_menu"; - - private MenuItemsRegisterLocator() { - } - - public static void store(IMenuItemsRegister register) { - getDesktop().setAttribute(MENU_ATTRIBUTE, register); - } - - private static Desktop getDesktop() { - return Executions.getCurrent().getDesktop(); - } - - public static boolean isRegistered() { - Object result = get(); - return result != null; - } - - private static Object get() { - return getDesktop().getAttribute(MENU_ATTRIBUTE); - } - - public static IMenuItemsRegister retrieve() - throws IllegalStateException { - if (!isRegistered()) - throw new IllegalStateException("no " - + IMenuItemsRegister.class.getSimpleName() + " registered"); - return (IMenuItemsRegister) get(); - } - -} diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/OnZKDesktopRegistry.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/OnZKDesktopRegistry.java new file mode 100644 index 000000000..f4e32c6c6 --- /dev/null +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/OnZKDesktopRegistry.java @@ -0,0 +1,47 @@ +package org.zkoss.ganttz.util; + +import org.apache.commons.lang.Validate; +import org.zkoss.zk.ui.Desktop; +import org.zkoss.zk.ui.Executions; + +public class OnZKDesktopRegistry { + + public static OnZKDesktopRegistry getLocatorFor(Class klass) { + return new OnZKDesktopRegistry(klass); + } + + private final Class klass; + + private final String attributeName; + + public OnZKDesktopRegistry(Class klass) { + Validate.notNull(klass); + this.klass = klass; + this.attributeName = klass.getName() + "_locator"; + } + + public void store(T object) { + getDesktop().setAttribute(attributeName, object); + } + + private static Desktop getDesktop() { + return Executions.getCurrent().getDesktop(); + } + + public boolean isRegistered() { + Object result = get(); + return result != null; + } + + private Object get() { + return getDesktop().getAttribute(attributeName); + } + + public T retrieve() throws IllegalStateException { + if (!isRegistered()) + throw new IllegalStateException("no " + klass.getSimpleName() + + " registered"); + return klass.cast(get()); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java index 0b5facc48..c40173c5c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/CustomMenuController.java @@ -6,7 +6,7 @@ import java.util.ArrayList; import java.util.List; import org.zkoss.ganttz.util.IMenuItemsRegister; -import org.zkoss.ganttz.util.MenuItemsRegisterLocator; +import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Events; @@ -70,7 +70,11 @@ public class CustomMenuController extends Div implements IMenuItemsRegister { public CustomMenuController() { initializeMenu(); - MenuItemsRegisterLocator.store(this); + getLocator().store(this); + } + + private OnZKDesktopRegistry getLocator() { + return OnZKDesktopRegistry.getLocatorFor(IMenuItemsRegister.class); } public void initializeMenu() {