From 72080a88da48b5209962beec77db168a2eeeeba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 27 Oct 2009 23:09:57 +0100 Subject: [PATCH] ItEr32S12CUAsignacionGrupoRecursosAPlanificacionItEr31S15: Now TabsConfiguration allows to specify when a tab must reload its name using States --- .../java/org/zkoss/ganttz/TabSwitcher.java | 5 +- .../ganttz/adapters/TabsConfiguration.java | 52 +++++++++++++++++-- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TabSwitcher.java b/ganttzk/src/main/java/org/zkoss/ganttz/TabSwitcher.java index 62a14aae4..5a3172682 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TabSwitcher.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TabSwitcher.java @@ -21,7 +21,6 @@ package org.zkoss.ganttz; import org.zkoss.ganttz.adapters.TabsConfiguration; -import org.zkoss.ganttz.extensions.ITab; import org.zkoss.ganttz.util.IMenuItemsRegister; import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.zk.ui.Component; @@ -49,9 +48,7 @@ public class TabSwitcher extends HtmlMacroComponent { private void addTabsFromComfiguration(TabsConfiguration configuration) { container.getChildren().clear(); tabsRegistry = new TabsRegistry(container); - for (ITab tab : configuration.getTabs()) { - tabsRegistry.add(tab); - } + configuration.applyTo(tabsRegistry); tabsRegistry.registerAtMenu(getMenuItemsRegisterLocator().retrieve()); tabsRegistry.showFirst(); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/TabsConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/TabsConfiguration.java index 6223b80c3..af9d36799 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/TabsConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/TabsConfiguration.java @@ -21,29 +21,71 @@ package org.zkoss.ganttz.adapters; import java.util.ArrayList; -import java.util.Collections; import java.util.List; +import org.zkoss.ganttz.TabsRegistry; +import org.zkoss.ganttz.adapters.State.IValueChangeListener; import org.zkoss.ganttz.extensions.ITab; public class TabsConfiguration { + public static ChangeableTab configure(ITab tab) { + return new ChangeableTab(tab); + } + + public static class ChangeableTab { + private final ITab tab; + + private State reloadNameState; + + ChangeableTab(ITab tab) { + this.tab = tab; + } + + public ChangeableTab reloadNameOn(State reloadName) { + this.reloadNameState = reloadName; + return this; + } + } + public static TabsConfiguration create() { return new TabsConfiguration(); } - private List tabs = new ArrayList(); + private List tabs = new ArrayList(); private TabsConfiguration() { } public TabsConfiguration add(ITab tab) { - tabs.add(tab); + tabs.add(new ChangeableTab(tab)); return this; } - public List getTabs() { - return Collections.unmodifiableList(tabs); + public TabsConfiguration add(ChangeableTab changeableTab) { + tabs.add(changeableTab); + return this; + } + + public void applyTo(TabsRegistry tabsRegistry) { + for (ChangeableTab tab : tabs) { + tabsRegistry.add(tab.tab); + reloadNameIfNeeded(tabsRegistry, tab); + } + } + + private void reloadNameIfNeeded(final TabsRegistry tabsRegistry, + final ChangeableTab tab) { + if (tab.reloadNameState == null) { + return; + } + tab.reloadNameState.addListener(new IValueChangeListener() { + + @Override + public void hasChanged(State condition) { + tabsRegistry.loadNewName(tab.tab); + } + }); } }