ItEr15S12RFComportamentoGraficoPlanificadorItEr14S13: Instead of returning all tasks, DependencyRegistry returns only the top level tasks.

It's pending to show subtasks in the right pane.
This commit is contained in:
Óscar González Fernández 2009-07-05 17:15:28 +02:00 committed by Javier Moran Rua
parent 6e01a038fa
commit eb09ba3d89
5 changed files with 26 additions and 21 deletions

View file

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

View file

@ -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<SimpleTreeNode> asSimpleTreeNodes(
List<TaskBean> taskBeans2) {
return asSimpleTreeNodes(taskBeans2, new HashSet<TaskBean>());
}
private static List<SimpleTreeNode> asSimpleTreeNodes(
List<TaskBean> taskBeans2, Set<TaskBean> alreadyIncluded) {
ArrayList<SimpleTreeNode> result = new ArrayList<SimpleTreeNode>();
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;
}

View file

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

View file

@ -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<TaskBean, DependencyRulesEnforcer> rulesEnforcersByTask = new HashMap<TaskBean, DependencyRulesEnforcer>();
private List<TaskBean> topLevelTasks = new ArrayList<TaskBean>();
private List<DependencyRulesEnforcer> getOutgoing(TaskBean task) {
ArrayList<DependencyRulesEnforcer> result = new ArrayList<DependencyRulesEnforcer>();
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<TaskBean> getTopLevelTasks() {
return Collections.unmodifiableList(topLevelTasks);
}
}

View file

@ -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,