Fixing bug: When a dependency is removed, it kept enforcing the end-start rule.

This commit is contained in:
Óscar González Fernández 2009-04-29 13:30:02 +02:00 committed by Javier Moran Rua
parent 8c9d2707d6
commit 1370ffcd98
3 changed files with 50 additions and 1 deletions

View file

@ -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<DependencyRemovedListener> 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<Dependency>() {
@Override
public void onEvent(Dependency choosen, Event event) {
public void onEvent(final Dependency choosen,
Event event) {
removeChild(choosen);
dependencyRemovedListeners
.fireEvent(new ListenerNotification<DependencyRemovedListener>() {
@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();
}

View file

@ -0,0 +1,17 @@
/**
*
*/
package org.zkoss.ganttz;
/**
* An object that listens to the removing of a dependency. <br />
* Created at Apr 29, 2009
*
* @author Óscar González Fernández <ogonzalez@igalia.com>
*
*/
public interface DependencyRemovedListener {
public void dependenceRemoved(Dependency dependency);
}

View file

@ -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) {