From 80d23a85afef96dcbba1ac3bd4eee9c456eaf14f Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 10 Feb 2010 12:48:27 +0100 Subject: [PATCH] ItEr47S17CUFiltradoNaPlanificacionItEr46S21: Added button to expand and collapse all the task in the planning view. --- .../FunctionalityExposedForExtensions.java | 16 ++++++++++++++++ .../java/org/zkoss/ganttz/LeftTasksTree.java | 18 +++++++++++++++++- .../main/java/org/zkoss/ganttz/Planner.java | 17 +++++++++++++++++ .../adapters/IDisabilityConfiguration.java | 2 ++ .../ganttz/adapters/PlannerConfiguration.java | 11 +++++++++++ .../resources/web/ganttz/zul/plannerLayout.zul | 4 ++++ .../planner/company/CompanyPlanningModel.java | 1 + 7 files changed, 68 insertions(+), 1 deletion(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index 1a5c3b37e..2bfd4ac8e 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -453,4 +453,20 @@ public class FunctionalityExposedForExtensions implements IContext { return tasks; } + public void expandAll() { + setExpandAll(true, getTasksOrderedByStartDate()); + } + + public void collapseAll() { + setExpandAll(false, getTasksOrderedByStartDate()); + } + + private void setExpandAll(boolean expand, List tasks) { + for (Task task : tasks) { + if (task instanceof TaskContainer) { + ((TaskContainer) task).setExpanded(expand); + } + } + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java index 5391f9076..7c2d22d38 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTree.java @@ -37,6 +37,7 @@ import org.zkoss.ganttz.LeftTasksTreeRow.ILeftTasksTreeNavigator; import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.data.TaskContainer; +import org.zkoss.ganttz.data.TaskContainer.IExpandListener; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.ganttz.util.MutableTreeModel; import org.zkoss.zk.ui.Component; @@ -54,9 +55,24 @@ import org.zkoss.zul.TreeitemRenderer; public class LeftTasksTree extends HtmlMacroComponent { private final class TaskBeanRenderer implements TreeitemRenderer { - public void render(Treeitem item, Object data) throws Exception { + private Map expandListeners = new HashMap(); + + public void render(final Treeitem item, Object data) throws Exception { Task task = (Task) data; item.setOpen(isOpened(task)); + if (task instanceof TaskContainer) { + final TaskContainer container = (TaskContainer) task; + IExpandListener expandListener = new IExpandListener() { + + @Override + public void expandStateChanged(boolean isNowExpanded) { + item.setOpen(isNowExpanded); + } + }; + expandListeners.put(container, expandListener); + container.addExpandListener(expandListener); + + } final int[] path = tasksTreeModel.getPath(tasksTreeModel.getRoot(), task); String cssClass = "depth_" + path.length; diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 10c13eaf8..f806fd026 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -279,6 +279,10 @@ public class Planner extends HtmlMacroComponent { Button showCriticalPathButton = (Button) getFellow("showCriticalPath"); showCriticalPathButton.setVisible(false); } + if (!configuration.isExpandAllEnabled()) { + Button expandAllButton = (Button) getFellow("expandAll"); + expandAllButton.setVisible(false); + } listZoomLevels.setSelectedIndex(getZoomLevel().ordinal()); } @@ -480,4 +484,17 @@ public class Planner extends HtmlMacroComponent { this.containersExpandedByDefault = containersExpandedByDefault; } + public void expandAll() { + Button expandAllButton = (Button) getFellow("expandAll"); + if (disabilityConfiguration.isExpandAllEnabled()) { + if (expandAllButton.getSclass().equals("planner-command")) { + context.expandAll(); + expandAllButton.setSclass("planner-command clicked"); + } else { + context.collapseAll(); + expandAllButton.setSclass("planner-command"); + } + } + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java index c5dd39ffa..1c921aa50 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/IDisabilityConfiguration.java @@ -35,4 +35,6 @@ public interface IDisabilityConfiguration { public boolean isCriticalPathEnabled(); + public boolean isExpandAllEnabled(); + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java index 9f9e25953..231cd85c5 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -130,6 +130,8 @@ public class PlannerConfiguration implements IDisabilityConfiguration { private boolean criticalPathEnabled = true; + private boolean expandAllEnabled = true; + // private String identifier = null; private IDetailItemModificator firstLevelModificators = SeveralModificators @@ -276,6 +278,15 @@ public class PlannerConfiguration implements IDisabilityConfiguration { return criticalPathEnabled; } + public void setExpandAllEnabled(boolean expandAllEnabled) { + this.expandAllEnabled = expandAllEnabled; + } + + @Override + public boolean isExpandAllEnabled() { + return expandAllEnabled; + } + public IDetailItemModificator getSecondLevelModificators() { return secondLevelModificators; } diff --git a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul index 02e206c94..aff5434a8 100644 --- a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul +++ b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul @@ -32,6 +32,10 @@ planner = self;