ItEr24S08CUAsignacionGrupoRecursosAPlanificacionItEr23S10: Adding registry for storing objects at Desktop.
This commit is contained in:
parent
8527fa13dd
commit
1e4d68383c
4 changed files with 62 additions and 47 deletions
|
|
@ -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 <T> TabsRegistry createTabs(IContext<T> 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<IMenuItemsRegister> getMenuItemsRegisterLocator() {
|
||||
return OnZKDesktopRegistry.getLocatorFor(IMenuItemsRegister.class);
|
||||
}
|
||||
|
||||
private void clear() {
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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<T> {
|
||||
|
||||
public static <T> OnZKDesktopRegistry<T> getLocatorFor(Class<T> klass) {
|
||||
return new OnZKDesktopRegistry<T>(klass);
|
||||
}
|
||||
|
||||
private final Class<T> klass;
|
||||
|
||||
private final String attributeName;
|
||||
|
||||
public OnZKDesktopRegistry(Class<T> 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());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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<IMenuItemsRegister> getLocator() {
|
||||
return OnZKDesktopRegistry.getLocatorFor(IMenuItemsRegister.class);
|
||||
}
|
||||
|
||||
public void initializeMenu() {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue