From 2f82025b38a215fd1b62580657beb1370489f402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Tue, 14 Feb 2012 16:35:19 +0100 Subject: [PATCH] Remove redraw listeners for dependencies once these dependencies are removed. This change should improve performance when working in a gantt in which some dependencies were removed. FEA: ItEr76S04BugFixing --- .../java/org/zkoss/ganttz/DependencyComponent.java | 13 ++++++++++++- .../main/java/org/zkoss/ganttz/DependencyList.java | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index 24a02c272..16afd3359 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -58,6 +58,8 @@ public class DependencyComponent extends XulElement implements AfterCompose { private PropertyChangeListener visibilityChangeListener; + private PropertyChangeListener listener; + private boolean violated = false; public DependencyComponent(TaskComponent source, TaskComponent destination, @@ -106,7 +108,7 @@ public class DependencyComponent extends XulElement implements AfterCompose { if (listenerAdded) { return; } - PropertyChangeListener listener = new PropertyChangeListener() { + listener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -118,6 +120,15 @@ public class DependencyComponent extends XulElement implements AfterCompose { listenerAdded = true; } + public void removeChangeListeners() { + if (!listenerAdded) { + return; + } + this.source.getTask().removePropertyChangeListener(listener); + this.destination.getTask().removePropertyChangeListener(listener); + listenerAdded = false; + } + /** * @return the idTaskOrig */ diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java index c564afeae..04ca965e3 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -304,6 +304,9 @@ public class DependencyList extends XulElement implements AfterCompose { source.getTask().removeVisibilityPropertiesChangeListener(listener); destination.getTask().removeVisibilityPropertiesChangeListener(listener); + //remove other change listeners + dependencyComponent.removeChangeListeners(); + //remove the dependency itself this.removeChild(dependencyComponent); }