ItEr32S12CUAsignacionGrupoRecursosAPlanificacionItEr31S15: Now TabsConfiguration allows to specify when a tab must reload its name using States

This commit is contained in:
Óscar González Fernández 2009-10-27 23:09:57 +01:00
parent a2572015db
commit 72080a88da
2 changed files with 48 additions and 9 deletions

View file

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

View file

@ -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<Void> reloadNameState;
ChangeableTab(ITab tab) {
this.tab = tab;
}
public ChangeableTab reloadNameOn(State<Void> reloadName) {
this.reloadNameState = reloadName;
return this;
}
}
public static TabsConfiguration create() {
return new TabsConfiguration();
}
private List<ITab> tabs = new ArrayList<ITab>();
private List<ChangeableTab> tabs = new ArrayList<ChangeableTab>();
private TabsConfiguration() {
}
public TabsConfiguration add(ITab tab) {
tabs.add(tab);
tabs.add(new ChangeableTab(tab));
return this;
}
public List<ITab> 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<Void>() {
@Override
public void hasChanged(State<Void> condition) {
tabsRegistry.loadNewName(tab.tab);
}
});
}
}