ItEr22S12CUVistaRecursosTempoPorProxectoItEr21S07: Specifying the view currently shown as a tab.

This commit is contained in:
Óscar González Fernández 2009-08-18 12:26:56 +02:00
parent fa50126bdc
commit b0445f5665
4 changed files with 122 additions and 2 deletions

View file

@ -13,6 +13,10 @@ import org.zkoss.ganttz.data.Task;
import org.zkoss.ganttz.extensions.ICommand;
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.IMenuItemsRegister;
import org.zkoss.ganttz.util.MenuItemsRegisterLocator;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.impl.XulElement;
@ -111,7 +115,34 @@ public class Planner extends XulElement {
this.context = context;
clear();
context.add(configuration.getData());
createTasksPlanningTab();
visualizeTabs(context, configuration
.getTabFactories());
}
private <T> TabsRegistry createTabs(IContext<T> context,
List<ITabFactory<T>> factories) {
List<ITab> tabs = new ArrayList<ITab>();
tabs.add(createTasksPlanningTab());
for (ITabFactory<T> factory : factories) {
tabs.add(factory.create(context));
}
TabsRegistry tabsRegistry = new TabsRegistry(this);
for (ITab t : tabs) {
tabsRegistry.add(t);
}
return tabsRegistry;
}
private <T> void visualizeTabs(
FunctionalityExposedForExtensions<T> context,
List<ITabFactory<T>> tabFactories) {
TabsRegistry tabs = createTabs(context, tabFactories);
registryTabs(tabs);
tabs.showFirst();
}
private void registryTabs(TabsRegistry tabs) {
tabs.registerAtMenu(MenuItemsRegisterLocator.retrieve());
}
private void clear() {

View file

@ -0,0 +1,55 @@
package org.zkoss.ganttz;
import java.util.ArrayList;
import java.util.List;
import org.zkoss.ganttz.extensions.ITab;
import org.zkoss.ganttz.util.IMenuItemsRegister;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
public class TabsRegistry {
private List<ITab> tabs = new ArrayList<ITab>();
private final Component parent;
public TabsRegistry(Component parent) {
this.parent = parent;
}
public void add(ITab tab) {
tab.addToParent(parent);
tabs.add(tab);
}
public void show(ITab tab) {
hideAllExcept(tab);
tab.show();
}
private void hideAllExcept(ITab tab) {
for (ITab t : tabs) {
if (t.equals(tab))
continue;
t.hide();
}
}
public void showFirst() {
show(tabs.get(0));
}
public void registerAtMenu(IMenuItemsRegister menu) {
for (final ITab t : tabs) {
menu.addMenuItem(t.getName(), new EventListener() {
@Override
public void onEvent(Event event) throws Exception {
show(t);
}
});
}
}
}

View file

@ -1,6 +1,9 @@
package org.zkoss.ganttz;
public class TasksPlanningTab {
import org.zkoss.ganttz.extensions.ITab;
import org.zkoss.zk.ui.Component;
public class TasksPlanningTab implements ITab {
private final Planner planner;
private final LeftPane leftPane;
@ -19,4 +22,25 @@ public class TasksPlanningTab {
leftPane.afterCompose();
ganttPanel.afterCompose();
}
@Override
public void addToParent(Component parent) {
}
@Override
public void hide() {
leftPane.detach();
ganttPanel.detach();
}
@Override
public void show() {
leftPane.setParent(planner);
ganttPanel.setParent(planner);
}
@Override
public String getName() {
return "Tasks Planning";
}
}

View file

@ -1,5 +1,15 @@
package org.zkoss.ganttz.extensions;
import org.zkoss.zk.ui.Component;
public interface ITab {
String getName();
void addToParent(Component parent);
void show();
void hide();
}