From 1370ffcd98e9c9bc3c95536614bab9ee8f582f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 29 Apr 2009 13:30:02 +0200 Subject: [PATCH] Fixing bug: When a dependency is removed, it kept enforcing the end-start rule. --- .../java/org/zkoss/ganttz/DependencyList.java | 23 ++++++++++++++++++- .../ganttz/DependencyRemovedListener.java | 17 ++++++++++++++ .../main/java/org/zkoss/ganttz/Planner.java | 11 +++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java index 34aa0aa44..17367273a 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -10,7 +10,9 @@ import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.zkoss.ganttz.util.MenuBuilder; +import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.MenuBuilder.ItemAction; +import org.zkoss.ganttz.util.WeakReferencedListeners.ListenerNotification; import org.zkoss.ganttz.util.zoom.ZoomLevel; import org.zkoss.ganttz.util.zoom.ZoomLevelChangedListener; import org.zkoss.zk.ui.event.Event; @@ -31,6 +33,9 @@ public class DependencyList extends XulElement implements AfterCompose { private ZoomLevelChangedListener listener; + private final WeakReferencedListeners dependencyRemovedListeners = WeakReferencedListeners + .create(); + public DependencyList() { } @@ -115,14 +120,30 @@ public class DependencyList extends XulElement implements AfterCompose { contextMenu = MenuBuilder.on(getPage(), getDependencies()).item( "Erase", new ItemAction() { @Override - public void onEvent(Dependency choosen, Event event) { + public void onEvent(final Dependency choosen, + Event event) { removeChild(choosen); + dependencyRemovedListeners + .fireEvent(new ListenerNotification() { + + @Override + public void doNotify( + DependencyRemovedListener listener) { + listener.dependenceRemoved(choosen); + + } + }); } }).create(); } return contextMenu; } + public void addDependencyRemovedListener( + DependencyRemovedListener removedListener) { + dependencyRemovedListeners.addListener(removedListener); + } + private TimeTracker getTimeTracker() { return getGanttPanel().getTimeTracker(); } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java new file mode 100644 index 000000000..fa60788f9 --- /dev/null +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/DependencyRemovedListener.java @@ -0,0 +1,17 @@ +/** + * + */ +package org.zkoss.ganttz; + +/** + * An object that listens to the removing of a dependency.
+ * Created at Apr 29, 2009 + * + * @author Óscar González Fernández + * + */ +public interface DependencyRemovedListener { + + public void dependenceRemoved(Dependency dependency); + +} 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 730dd3d05..da2920eee 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 @@ -18,6 +18,8 @@ public class Planner extends XulElement implements AfterCompose { private DependencyRegistry dependencyRegistry = new DependencyRegistry(); + private DependencyRemovedListener dependencyRemovedListener; + public Planner() { } @@ -89,6 +91,15 @@ public class Planner extends XulElement implements AfterCompose { dependencyRegistry.remove(taskRemoved.getTaskBean()); } }); + dependencyRemovedListener = new DependencyRemovedListener() { + + @Override + public void dependenceRemoved(Dependency dependency) { + dependencyRegistry.remove(dependency); + } + }; + getDependencyList().addDependencyRemovedListener( + dependencyRemovedListener); } public void addTask(Task task) {