From 0e418ad9ae55bc543790196bbe8c6a9d2ad1e052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 29 Apr 2009 14:02:32 +0200 Subject: [PATCH] Fixing bug: When a task is removed, it kept enforcing the dependecies that came from it. --- .../src/main/java/org/zkoss/ganttz/Planner.java | 7 +++++-- .../java/org/zkoss/ganttz/util/DependencyRegistry.java | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) 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 da2920eee..62073b6ab 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 @@ -20,6 +20,8 @@ public class Planner extends XulElement implements AfterCompose { private DependencyRemovedListener dependencyRemovedListener; + private TaskRemovedListener taskRemovedListener; + public Planner() { } @@ -85,12 +87,13 @@ public class Planner extends XulElement implements AfterCompose { } }; taskList.addDependencyListener(dependencyAddedListener); - taskList.addTaskRemovedListener(new TaskRemovedListener() { + taskRemovedListener = new TaskRemovedListener() { @Override public void taskRemoved(Task taskRemoved) { dependencyRegistry.remove(taskRemoved.getTaskBean()); } - }); + }; + taskList.addTaskRemovedListener(taskRemovedListener); dependencyRemovedListener = new DependencyRemovedListener() { @Override diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java index 7aadad658..2980a5ffc 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/DependencyRegistry.java @@ -76,13 +76,18 @@ public class DependencyRegistry { } public void remove(TaskBean task) { + List outgoing = getOutgoing(task); graph.removeVertex(task); rulesEnforcersByTask.remove(task); - updateOutgoing(task); + update(outgoing); } private void updateOutgoing(TaskBean task) { - for (RulesEnforcer rulesEnforcer : getOutgoing(task)) { + update(getOutgoing(task)); + } + + private void update(List outgoing) { + for (RulesEnforcer rulesEnforcer : outgoing) { rulesEnforcer.update(); } }