diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index acfd827cb..283299b71 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -97,8 +97,13 @@ public class DependencyComponent extends XulElement implements AfterCompose { return violated ? "violated-dependency" : "dependency"; } + private boolean listenerAdded = false; + @Override public void afterCompose() { + if (listenerAdded) { + return; + } PropertyChangeListener listener = new PropertyChangeListener() { @Override @@ -108,6 +113,7 @@ public class DependencyComponent extends XulElement implements AfterCompose { }; this.source.getTask().addFundamentalPropertiesChangeListener(listener); this.destination.getTask().addFundamentalPropertiesChangeListener(listener); + listenerAdded = true; } /** diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java index d8ca15e6f..025d23bd2 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -25,7 +25,6 @@ import static org.zkoss.ganttz.i18n.I18nHelper._; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; @@ -105,6 +104,7 @@ public class DependencyList extends XulElement implements AfterCompose { void toggleDependencyExistence(boolean visible) { if (visible) { appendChild(dependencyComponent); + dependencyComponent.afterCompose(); addContextMenu(dependencyComponent); } else { removeChild(dependencyComponent); @@ -265,24 +265,6 @@ public class DependencyList extends XulElement implements AfterCompose { return getGanttPanel().getTimeTrackerComponent(); } - public void redrawDependenciesConnectedTo(TaskComponent taskComponent) { - redrawDependencyComponents(getDependencyComponentsConnectedTo(taskComponent)); - } - - private List getDependencyComponentsConnectedTo( - TaskComponent taskComponent) { - ArrayList result = new ArrayList(); - List dependencies = getDependencyComponents(); - for (DependencyComponent dependencyComponent : dependencies) { - if (dependencyComponent.getSource().equals(taskComponent) - || dependencyComponent.getDestination().equals( - taskComponent)) { - result.add(dependencyComponent); - } - } - return result; - } - public void redrawDependencies() { redrawDependencyComponents(getDependencyComponents()); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index aa50d3739..851c3e439 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -446,10 +446,6 @@ public class TaskComponent extends Div implements AfterCompose { setLeft(this.task.getBeginDate().toPixels(getMapper()) + "px"); updateWidth(); smartUpdate("name", this.task.getName()); - DependencyList dependencyList = getDependencyList(); - if (dependencyList != null) { - dependencyList.redrawDependenciesConnectedTo(this); - } updateDeadline(); updateCompletionIfPossible(); updateClass();