Bug #1363: Remove visibility listeners corresponding to deleted tasks.
To do that we had to add an attribute in DependencyComponent to store the listener and a method in Task to be able to delete visibility listeners. This listener was causing that deleted tasks re-appeared when containers were closed and opened again. FEA: ItEr76S04BugFixing
This commit is contained in:
parent
4353465efe
commit
2d7ea169bc
3 changed files with 31 additions and 2 deletions
|
|
@ -56,6 +56,8 @@ public class DependencyComponent extends XulElement implements AfterCompose {
|
|||
|
||||
private IConstraintViolationListener<GanttDate> violationListener;
|
||||
|
||||
private PropertyChangeListener visibilityChangeListener;
|
||||
|
||||
private boolean violated = false;
|
||||
|
||||
public DependencyComponent(TaskComponent source, TaskComponent destination,
|
||||
|
|
@ -192,4 +194,12 @@ public class DependencyComponent extends XulElement implements AfterCompose {
|
|||
return (source.isLimiting() || destination.isLimiting());
|
||||
}
|
||||
|
||||
public PropertyChangeListener getVisibilityChangeListener() {
|
||||
return visibilityChangeListener;
|
||||
}
|
||||
|
||||
public void setVisibilityChangeListener(PropertyChangeListener visibilityChangeListener) {
|
||||
this.visibilityChangeListener = visibilityChangeListener;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,6 +149,7 @@ public class DependencyList extends XulElement implements AfterCompose {
|
|||
visibilityToggler);
|
||||
destination.getTask().addVisibilityPropertiesChangeListener(
|
||||
visibilityToggler);
|
||||
dependencyComponent.setVisibilityChangeListener(visibilityToggler);
|
||||
boolean dependencyMustBeVisible = visibilityToggler
|
||||
.dependencyMustBeVisible();
|
||||
visibilityToggler.toggleDependencyExistence(dependencyMustBeVisible);
|
||||
|
|
@ -280,7 +281,7 @@ public class DependencyList extends XulElement implements AfterCompose {
|
|||
for (DependencyComponent dependencyComponent : DependencyList.this
|
||||
.getDependencyComponents()) {
|
||||
if (dependencyComponent.contains(task)) {
|
||||
this.removeChild(dependencyComponent);
|
||||
removeDependencyComponent(dependencyComponent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -289,8 +290,21 @@ public class DependencyList extends XulElement implements AfterCompose {
|
|||
for (DependencyComponent dependencyComponent : DependencyList.this
|
||||
.getDependencyComponents()) {
|
||||
if (dependencyComponent.hasSameSourceAndDestination(dependency)) {
|
||||
this.removeChild(dependencyComponent);
|
||||
removeDependencyComponent(dependencyComponent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void removeDependencyComponent(DependencyComponent dependencyComponent) {
|
||||
//remove the visibility listener attached to the tasks
|
||||
TaskComponent source = dependencyComponent.getSource();
|
||||
TaskComponent destination = dependencyComponent.getDestination();
|
||||
PropertyChangeListener listener =
|
||||
dependencyComponent.getVisibilityChangeListener();
|
||||
source.getTask().removeVisibilityPropertiesChangeListener(listener);
|
||||
destination.getTask().removeVisibilityPropertiesChangeListener(listener);
|
||||
|
||||
//remove the dependency itself
|
||||
this.removeChild(dependencyComponent);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -309,6 +309,11 @@ public abstract class Task implements ITaskFundamentalProperties {
|
|||
.removePropertyChangeListener(listener);
|
||||
}
|
||||
|
||||
public void removeVisibilityPropertiesChangeListener(
|
||||
PropertyChangeListener listener) {
|
||||
this.visibilityProperties.removePropertyChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GanttDate getEndDate() {
|
||||
return fundamentalProperties.getEndDate();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue