diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index 8e272763d..2c82f1c8e 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -90,6 +90,7 @@ public class FunctionalityExposedForExtensions implements IContext { T data, TaskContainer parent) { ITaskFundamentalProperties adapted = adapter.adapt(data); accumulatedDependencies.addAll(adapter.getOutcomingDependencies(data)); + accumulatedDependencies.addAll(adapter.getIncomingDependencies(data)); final Task result; if (navigator.isLeaf(data)) { result = new TaskLeaf(adapted); 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 482a32d86..b35c916b1 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 @@ -66,6 +66,8 @@ public class Planner extends XulElement { } public DependencyList getDependencyList() { + if (ganttPanel == null) + return null; List children = ganttPanel.getChildren(); List found = findComponentsOfType(DependencyList.class, children); @@ -111,6 +113,17 @@ public class Planner extends XulElement { } } + void addDependencies(Collection dependencies) { + DependencyList dependencyList = getDependencyList(); + if (dependencyList == null) { + return; + } + for (DependencyComponent d : getTaskList().asDependencyComponents( + dependencies)) { + dependencyList.addDependencyComponent(d); + } + } + private static class DependencyAdderAdapter { private final IAdapterToTaskFundamentalProperties adapter; @@ -236,7 +249,6 @@ public class Planner extends XulElement { void dependencyRemoved(DependencyComponent dependencyComponent) { diagramGraph.remove(dependencyComponent); - dependencyAdder.removeDependency(dependencyComponent - .getDependency()); + dependencyAdder.removeDependency(dependencyComponent.getDependency()); } } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java index f5174c297..49da5fe86 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskList.java @@ -7,6 +7,7 @@ package org.zkoss.ganttz; import java.lang.ref.WeakReference; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -64,7 +65,8 @@ public class TaskList extends XulElement implements AfterCompose { return result; } - public List asDependencyComponents(List dependencies) { + public List asDependencyComponents( + Collection dependencies) { List children = getChildren(); List taskComponents = Planner.findComponentsOfType(TaskComponent.class, children); Map taskComponentByTask = new HashMap(); diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 9549407b7..3e8dda38b 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -166,6 +166,10 @@ public class GanttDiagramGraph { getEnforcer(destination).enforce(); } + public boolean contains(Dependency dependency) { + return graph.containsEdge(dependency); + } + private DependencyRulesEnforcer getEnforcer(Task destination) { return rulesEnforcersByTask.get(destination); }