From eb09ba3d8928d7bca5f68c9af85467c096f6a8e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 5 Jul 2009 17:15:28 +0200 Subject: [PATCH] ItEr15S12RFComportamentoGraficoPlanificadorItEr14S13: Instead of returning all tasks, DependencyRegistry returns only the top level tasks. It's pending to show subtasks in the right pane. --- .../main/java/org/zkoss/ganttz/GanttPanel.java | 2 +- .../main/java/org/zkoss/ganttz/ListDetails.java | 15 ++------------- .../src/main/java/org/zkoss/ganttz/Planner.java | 10 +++++++--- .../zkoss/ganttz/util/DependencyRegistry.java | 16 ++++++++++++++-- .../navalplanner/web/planner/DataForPlanner.java | 4 ++-- 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/GanttPanel.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/GanttPanel.java index 23fa64d4b..47db7247d 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/GanttPanel.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/GanttPanel.java @@ -18,7 +18,7 @@ public class GanttPanel extends XulElement implements AfterCompose { this.dependencyRegistry = dependencyRegistry; timeTracker = new TimeTracker(); appendChild(timeTracker); - tasksLists = TaskList.createFor(dependencyRegistry.getTasks()); + tasksLists = TaskList.createFor(dependencyRegistry.getTopLevelTasks()); dependencyList = new DependencyList(); appendChild(tasksLists); appendChild(dependencyList); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java index bde631866..862aac655 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java @@ -4,10 +4,8 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -123,25 +121,16 @@ public class ListDetails extends HtmlMacroComponent { private static List asSimpleTreeNodes( List taskBeans2) { - return asSimpleTreeNodes(taskBeans2, new HashSet()); - } - - private static List asSimpleTreeNodes( - List taskBeans2, Set alreadyIncluded) { ArrayList result = new ArrayList(); for (TaskBean taskBean : taskBeans2) { - if (alreadyIncluded.contains(taskBean)) - continue; SimpleTreeNode node = asSimpleTreeNode(taskBean); if (taskBean instanceof TaskContainerBean) { TaskContainerBean container = (TaskContainerBean) taskBean; node.getChildren() - .addAll( - asSimpleTreeNodes(container.getTasks(), - alreadyIncluded)); + .addAll( + asSimpleTreeNodes(container.getTasks())); } result.add(node); - alreadyIncluded.add(taskBean); } return result; } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java index e7682868b..aa0b852d0 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Planner.java @@ -3,9 +3,10 @@ package org.zkoss.ganttz; import java.util.ArrayList; import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.zkoss.ganttz.util.DependencyRegistry; import org.zkoss.ganttz.util.TaskBean; -import org.zkoss.ganttz.util.TaskContainerBean; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.ext.AfterCompose; @@ -13,6 +14,8 @@ import org.zkoss.zul.impl.XulElement; public class Planner extends XulElement implements AfterCompose { + private static final Log LOG = LogFactory.getLog(Planner.class); + private DependencyAddedListener dependencyAddedListener; private DependencyRegistry dependencyRegistry = new DependencyRegistry(); private DependencyRemovedListener dependencyRemovedListener; @@ -124,7 +127,7 @@ public class Planner extends XulElement implements AfterCompose { public void addTask(TaskBean newTask) { getTaskList().addTask(newTask); - dependencyRegistry.add(newTask); + dependencyRegistry.addTopLevel(newTask); } private void publishDependency(Dependency dependency) { @@ -138,7 +141,8 @@ public class Planner extends XulElement implements AfterCompose { public void setDependencyRegistry(DependencyRegistry dependencyRegistry) { this.dependencyRegistry = dependencyRegistry; removePreviousDetails(); - this.listDetails = new ListDetails(dependencyRegistry.getTasks()); + this.listDetails = new ListDetails(dependencyRegistry + .getTopLevelTasks()); insertBefore(this.listDetails, (Component) (getChildren().isEmpty() ? null : getChildren() .get(0))); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java index 29e548e2b..ef60c02f5 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java @@ -3,6 +3,7 @@ package org.zkoss.ganttz.util; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -27,6 +28,8 @@ public class DependencyRegistry { private Map rulesEnforcersByTask = new HashMap(); + private List topLevelTasks = new ArrayList(); + private List getOutgoing(TaskBean task) { ArrayList result = new ArrayList(); for (DependencyBean dependencyBean : graph.outgoingEdgesOf(task)) { @@ -101,14 +104,19 @@ public class DependencyRegistry { } } - public void add(TaskBean task) { + public void addTopLevel(TaskBean task) { + topLevelTasks.add(task); + addTask(task); + } + + private void addTask(TaskBean task) { graph.addVertex(task); rulesEnforcersByTask.put(task, new DependencyRulesEnforcer(task)); if (task instanceof TaskContainerBean) { TaskContainerBean container = (TaskContainerBean) task; new ParentShrinkingEnforcer(container); for (TaskBean child : container.getTasks()) { - add(child); + addTask(child); add(new DependencyBean(child, container, DependencyType.END_END, false)); add(new DependencyBean(container, child, @@ -166,4 +174,8 @@ public class DependencyRegistry { return result; } + public List getTopLevelTasks() { + return Collections.unmodifiableList(topLevelTasks); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java index 042f84b45..eed6d3584 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java @@ -47,7 +47,7 @@ public class DataForPlanner { first = taskBean; if (i == 1) second = taskBean; - dependencyRegistry.add(taskBean); + dependencyRegistry.addTopLevel(taskBean); } TaskContainerBean container = new TaskContainerBean(); container.setBeginDate(now); @@ -57,7 +57,7 @@ public class DataForPlanner { container.add(child1); TaskBean child2 = createTaskBean("child 2", now, end); container.add(child2); - dependencyRegistry.add(container); + dependencyRegistry.addTopLevel(container); dependencyRegistry.add(new DependencyBean(child1, child2, DependencyType.END_START)); dependencyRegistry.add(new DependencyBean(first, second,