From 3260623d7eb6f309a60d82d98a1fbeb6e1e840af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Wed, 14 Dec 2011 19:17:37 +0100 Subject: [PATCH] [Bug #1073] Add dependencies with its parent when a milestone is added. A new operation in the Adapter was implemented. Also the Milestone class was modified to store a reference to its parent. FEA: ItEr75S04BugFixing --- .../FunctionalityExposedForExtensions.java | 3 +++ .../zkoss/ganttz/data/GanttDiagramGraph.java | 19 +++++++++++++++++++ .../java/org/zkoss/ganttz/data/Milestone.java | 10 ++++++++++ .../web/common/TemplateModelAdapter.java | 5 +++++ 4 files changed, 37 insertions(+) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java index a8979f9de..7f946b4c0 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/FunctionalityExposedForExtensions.java @@ -221,6 +221,9 @@ public class FunctionalityExposedForExtensions implements IContext { accumulatedDependencies, child)); i++; } + } else if (navigator.isMilestone(data)) { + Milestone milestone = (Milestone) data; + milestone.setOwner(position.getParent()); } result.setShowingReportedHours(planner.showReportedHoursRightNow()); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java index 7c8322897..822dd56f2 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/GanttDiagramGraph.java @@ -91,6 +91,8 @@ public class GanttDiagramGraph> implements public interface IAdapter> { List getChildren(V task); + V getOwner(V task); + boolean isContainer(V task); void registerDependenciesEnforcerHookOn(V task, @@ -135,6 +137,15 @@ public class GanttDiagramGraph> implements return task.getTasks(); } + @Override + public Task getOwner(Task task) { + if (task instanceof Milestone) { + Milestone milestone = (Milestone) task; + return milestone.getOwner(); + } + return null; + } + @Override public Task getDestination(Dependency dependency) { return dependency.getDestination(); @@ -529,6 +540,14 @@ public class GanttDiagramGraph> implements dependenciesToAdd.add(adapter.createInvisibleDependency( task, child, DependencyType.START_START)); } + } else { + V owner = adapter.getOwner(task); + if(owner != null) { + dependenciesToAdd.add(adapter.createInvisibleDependency( + task, owner, DependencyType.END_END)); + dependenciesToAdd.add(adapter.createInvisibleDependency( + owner, task, DependencyType.START_START)); + } } } for (D each : dependenciesToAdd) { diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java index c3b0483a6..3d2ef1c63 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Milestone.java @@ -35,6 +35,8 @@ public class Milestone extends Task { private List tasks = new ArrayList(); + private TaskContainer owner; + private boolean expanded = false; @Override @@ -73,4 +75,12 @@ public class Milestone extends Task { return true; } + public void setOwner(TaskContainer owner) { + this.owner = owner; + } + + public TaskContainer getOwner() { + return this.owner; + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/TemplateModelAdapter.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/TemplateModelAdapter.java index 6d2c63238..bca4b73b1 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/TemplateModelAdapter.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/TemplateModelAdapter.java @@ -93,6 +93,11 @@ public class TemplateModelAdapter implements } } + @Override + public TaskElement getOwner(TaskElement task) { + return task.getParent(); + } + @Override public Class getDependencyType() { return DependencyWithVisibility.class;