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
This commit is contained in:
Jacobo Aragunde Pérez 2012-02-14 16:35:19 +01:00
parent 213bc063ac
commit 2f82025b38
2 changed files with 15 additions and 1 deletions

View file

@ -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
*/

View file

@ -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);
}