diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index c22f0696f..22f28859c 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -100,8 +100,8 @@ public class DependencyComponent extends XulElement implements AfterCompose { } public Dependency getDependency() { - return new Dependency(source.getTask(), destination - .getTask(), DependencyType.END_START); + return context.getDiagramGraph().getDependencyFrom(source.getTask(), + destination.getTask()); } public DependencyType getDependencyType() { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index 20e55ae00..6f750e7ec 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -243,15 +243,19 @@ public class FunctionalityExposedForExtensions implements IContext { return dep; } - public void addDependency(DependencyComponent dependencyComponent) { - Dependency dependency = dependencyComponent.getDependency(); + public void addDependency(Dependency dependency) { if (!canAddDependency(dependency)) return; - getDependencyList().addDependencyComponent(dependencyComponent); diagramGraph.add(dependency); + getDependencyList().addDependencyComponent( + getTaskList().asDependencyComponent(dependency)); adapter.addDependency(toDomainDependency(dependency)); } + private TaskList getTaskList() { + return planner.getTaskList(); + } + private boolean canAddDependency(Dependency dependency) { return adapter.canAddDependency(toDomainDependency(dependency)); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java index 746f2c0c1..8d34775a4 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java @@ -1,12 +1,14 @@ package org.zkoss.ganttz; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.zkoss.ganttz.data.Dependency; +import org.zkoss.ganttz.data.DependencyType; import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.util.MenuBuilder; @@ -80,6 +82,10 @@ public class TaskList extends XulElement implements AfterCompose { return result; } + public DependencyComponent asDependencyComponent(Dependency dependency) { + return asDependencyComponents(Arrays.asList(dependency)).get(0); + } + public synchronized void addTaskComponent(Component beforeThis, final TaskComponent taskComponent, boolean relocate) { final boolean isFirst = getFirstTopTaskComponent() == null @@ -290,9 +296,7 @@ public class TaskList extends XulElement implements AfterCompose { } public void addDependency(TaskComponent source, TaskComponent destination) { - DependencyComponent dependencyComponent = new DependencyComponent( - context, - source, destination); - context.addDependency(dependencyComponent); + context.addDependency(new Dependency(source.getTask(), destination + .getTask(), DependencyType.END_START)); } } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 8541fa039..94f88f897 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -225,4 +225,8 @@ public class GanttDiagramGraph { parentShrinkingEnforcer.enforce(); } + public Dependency getDependencyFrom(Task from, Task to) { + return graph.getEdge(from, to); + } + }