ItEr22S12CUVistaRecursosTempoPorProxectoItEr21S07: Specifying the view currently shown as a tab.
This commit is contained in:
parent
fa50126bdc
commit
b0445f5665
4 changed files with 122 additions and 2 deletions
|
|
@ -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() {
|
||||
|
|
|
|||
55
ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java
Normal file
55
ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java
Normal 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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue