diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java index 17367273a..4647ebc5b 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -5,6 +5,7 @@ package org.zkoss.ganttz; +import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; @@ -148,8 +149,27 @@ public class DependencyList extends XulElement implements AfterCompose { return getGanttPanel().getTimeTracker(); } - public void redrawDependencies() { + public void redrawDependenciesConnectedTo(Task task) { + redrawDependencies(getDependenciesConnectedTo(task)); + } + + private List getDependenciesConnectedTo(Task task) { + ArrayList result = new ArrayList(); for (Dependency dependency : getDependencies()) { + if (dependency.getSource().equals(task) + || dependency.getDestination().equals(task)) { + result.add(dependency); + } + } + return result; + } + + public void redrawDependencies() { + redrawDependencies(getDependencies()); + } + + public void redrawDependencies(List dependencies) { + for (Dependency dependency : dependencies) { dependency.redrawDependency(); } } 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 cfe16b510..1ac89b278 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 @@ -72,9 +72,13 @@ public class Planner extends XulElement implements AfterCompose { return findOneComponentOfType(GanttPanel.class); } - private DependencyList getDependencyList() { + public DependencyList getDependencyList() { List children = getGanntPanel().getChildren(); - return findComponentsOfType(DependencyList.class, children).get(0); + List found = findComponentsOfType(DependencyList.class, + children); + if (found.isEmpty()) + return null; + return found.get(0); } private ListDetails getDetails() { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java index 58a6aa9ec..c71b2c5bd 100755 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/Task.java @@ -283,19 +283,20 @@ public class Task extends Div { } private void updateProperties() { - /* - * It is set to another value, so the smart update is forced. If the new - * value is equal to the previous, the smart update wouldn't be sent and - * it would keep the same position in the client. This position could be - * the result of dragging the task, so it would seem that the dependency - * is not enforced. - */ setLeft("0"); setLeft(getMapper().toPixels(this.taskBean.getBeginDate()) + "px"); setWidth("0"); setWidth(getMapper().toPixels(this.taskBean.getLengthMilliseconds()) + "px"); smartUpdate("name", this.taskBean.getName()); + DependencyList dependencyList = getDependencyList(); + if (dependencyList != null) { + dependencyList.redrawDependenciesConnectedTo(this); + } + } + + private DependencyList getDependencyList() { + return getPlanner().getDependencyList(); } public void remove() {