From 3a1b50c2c22915c73dce5389bafe7dfbdf114aae Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Mon, 31 Jan 2011 15:22:43 +0100 Subject: [PATCH] [Bug #829] Don't let user change the type of a dependency between a Limiting Task and any other type of Task FEA: ItEr69S04BugFixing --- .../org/zkoss/ganttz/DependencyComponent.java | 4 +++ .../java/org/zkoss/ganttz/DependencyList.java | 29 +++++++++++++++++-- .../java/org/zkoss/ganttz/TaskComponent.java | 3 ++ .../LimitingResourceQueueModel.java | 10 ------- 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java index a385bad43..30b0b8ca8 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyComponent.java @@ -161,4 +161,8 @@ public class DependencyComponent extends XulElement implements AfterCompose { && destinationTask.equals(dependency.getDestination()); } + public boolean hasLimitingTasks() { + return (source.isLimiting() || destination.isLimiting()); + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java index 0da1e1c82..d8ca15e6f 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/DependencyList.java @@ -126,6 +126,10 @@ public class DependencyList extends XulElement implements AfterCompose { private final FunctionalityExposedForExtensions context; + private Menupopup contextMenu; + + private Menupopup limitingContextMenu; + public DependencyList(FunctionalityExposedForExtensions context) { this.context = context; } @@ -154,7 +158,10 @@ public class DependencyList extends XulElement implements AfterCompose { } private void addContextMenu(DependencyComponent dependencyComponent) { - dependencyComponent.setContext(getContextMenu()); + Menupopup contextMenu = dependencyComponent.hasLimitingTasks() ? + getLimitingContextMenu() + : getContextMenu(); + dependencyComponent.setContext(contextMenu); } private GanttPanel getGanttPanel() { @@ -202,7 +209,24 @@ public class DependencyList extends XulElement implements AfterCompose { } } - private Menupopup contextMenu; + private Menupopup getLimitingContextMenu() { + if (limitingContextMenu == null) { + MenuBuilder contextMenuBuilder = MenuBuilder + .on(getPage(), getDependencyComponents()).item(_("Erase"), + "/common/img/ico_borrar.png", + new ItemAction() { + @Override + public void onEvent( + final DependencyComponent choosen, + Event event) { + context + .removeDependency(choosen.getDependency()); + } + }); + limitingContextMenu = contextMenuBuilder.create(); + } + return limitingContextMenu; + } private Menupopup getContextMenu() { if (contextMenu == null) { @@ -218,6 +242,7 @@ public class DependencyList extends XulElement implements AfterCompose { .removeDependency(choosen.getDependency()); } }); + contextMenuBuilder.item(_("Set End-Start"), null, new ChangeTypeAction( DependencyType.END_START)); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index 1a6ce40de..0757d1590 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -253,6 +253,9 @@ public class TaskComponent extends Div implements AfterCompose { return cssClass; } + public boolean isLimiting() { + return task.isLimiting(); + } protected void updateClass() { response(null, new AuInvoke(this, "setClass", diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index a6787caf8..3bf802d24 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -240,19 +240,9 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { } for (Dependency each: task.getDependenciesWithThisOrigin()) { Hibernate.initialize(each); - TaskElement destination = each.getDestination(); - if (destination instanceof Task - && !Hibernate.isInitialized(destination)) { - initializeTask((Task) destination); - } } for (Dependency each: task.getDependenciesWithThisDestination()) { Hibernate.initialize(each); - TaskElement origin = each.getOrigin(); - if (origin instanceof Task - && !Hibernate.isInitialized(origin)) { - initializeTask((Task) origin); - } } initializeTaskSource(task.getTaskSource()); initializeRootOrder(task);