From 1a3b0a755ecb964b35f53bc928278efeee7eb3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 28 Jul 2009 11:11:52 +0200 Subject: [PATCH] ItEr19S08CUCreacionProxectoPlanificacionItEr18S08: Changing ICommandOnTask interface. --- .../ganttz/CommandOnTaskContextualized.java | 17 ++++++- .../ganttz/adapters/PlannerConfiguration.java | 23 ++++++++-- .../extensions/ContextWithPlannerTask.java | 45 +++++++++++++++++++ .../ganttz/extensions/ICommandOnTask.java | 2 +- .../extensions/IContextWithPlannerTask.java | 17 +++++++ .../web/planner/DataForPlanner.java | 5 ++- .../planner/ResourceAllocationCommand.java | 6 ++- 7 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java create mode 100644 navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/IContextWithPlannerTask.java diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java index 1df326ce9..af5f264bc 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/CommandOnTaskContextualized.java @@ -2,8 +2,10 @@ package org.zkoss.ganttz; import org.zkoss.ganttz.adapters.IDomainAndBeansMapper; import org.zkoss.ganttz.data.Task; +import org.zkoss.ganttz.extensions.ContextWithPlannerTask; import org.zkoss.ganttz.extensions.ICommandOnTask; import org.zkoss.ganttz.extensions.IContext; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; import org.zkoss.ganttz.util.MenuBuilder.ItemAction; import org.zkoss.zk.ui.event.Event; @@ -30,11 +32,22 @@ public class CommandOnTaskContextualized { } public void doAction(Task task) { - doAction(mapper.findAssociatedDomainObject(task)); + doAction(domainObjectFor(task)); + } + + private T domainObjectFor(Task task) { + return mapper.findAssociatedDomainObject(task); + } + + private void doAction(IContext context, T domainObject) { + IContextWithPlannerTask contextWithTask = ContextWithPlannerTask + .create(context, mapper + .findAssociatedBean(domainObject)); + commandOnTask.doAction(contextWithTask, domainObject); } public void doAction(T task) { - commandOnTask.doAction(context, task); + doAction(context, task); } public String getName() { diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java index af8041f34..12e375aef 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/adapters/PlannerConfiguration.java @@ -5,8 +5,9 @@ import java.util.Collections; import java.util.List; import org.zkoss.ganttz.extensions.ICommand; -import org.zkoss.ganttz.extensions.IContext; import org.zkoss.ganttz.extensions.ICommandOnTask; +import org.zkoss.ganttz.extensions.IContext; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; /** * A object that defines several extension points for gantt planner @@ -28,6 +29,20 @@ public class PlannerConfiguration { } + private static class NullCommandOnTask implements ICommandOnTask { + + @Override + public void doAction(IContextWithPlannerTask context, T task) { + // do nothing + } + + @Override + public String getName() { + return ""; + } + + } + private IAdapterToTaskFundamentalProperties adapter; private IStructureNavigator navigator; @@ -40,7 +55,6 @@ public class PlannerConfiguration { private ICommand goingDownInLastArrowCommand = new NullCommand(); - public PlannerConfiguration(IAdapterToTaskFundamentalProperties adapter, IStructureNavigator navigator, List data) { this.adapter = adapter; @@ -60,7 +74,7 @@ public class PlannerConfiguration { return data; } - public void addCommandOnTask(ICommandOnTask commandOnTask){ + public void addCommandOnTask(ICommandOnTask commandOnTask) { this.commandsOnTasks.add(commandOnTask); } @@ -68,9 +82,10 @@ public class PlannerConfiguration { this.globalCommands.add(command); } - public List> getCommandsOnTasks(){ + public List> getCommandsOnTasks() { return Collections.unmodifiableList(commandsOnTasks); } + public List> getGlobalCommands() { return Collections.unmodifiableList(globalCommands); } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java new file mode 100644 index 000000000..32156a1d3 --- /dev/null +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ContextWithPlannerTask.java @@ -0,0 +1,45 @@ +package org.zkoss.ganttz.extensions; + +import org.zkoss.ganttz.adapters.PlannerConfiguration; +import org.zkoss.ganttz.data.Task; + +/** + * An implementation of {@link IContextWithPlannerTask} that wraps another + * context and specifies the task to be returned by + * {@link IContextWithPlannerTask#getTask()} + * @author Óscar González Fernández + */ +public class ContextWithPlannerTask implements IContextWithPlannerTask { + + private final IContext context; + private final Task task; + + public static IContextWithPlannerTask create(IContext context, + Task task) { + return new ContextWithPlannerTask(context, task); + } + + public ContextWithPlannerTask(IContext context, Task task) { + this.context = context; + this.task = task; + + } + + public void add(T domainObject) { + context.add(domainObject); + } + + public void reload(PlannerConfiguration configuration) { + context.reload(configuration); + } + + public void remove(T domainObject) { + context.remove(domainObject); + } + + @Override + public Task getTask() { + return task; + } + +} diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java index 857141b64..caca06945 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/ICommandOnTask.java @@ -4,6 +4,6 @@ public interface ICommandOnTask { public String getName(); - public void doAction(IContext context, T task); + public void doAction(IContextWithPlannerTask context, T task); } diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/IContextWithPlannerTask.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/IContextWithPlannerTask.java new file mode 100644 index 000000000..de2fb9069 --- /dev/null +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/extensions/IContextWithPlannerTask.java @@ -0,0 +1,17 @@ +package org.zkoss.ganttz.extensions; + +import org.zkoss.ganttz.data.Task; + +/** + * A context that adds a method to retrieve the task associated to the action + * performed. + * @author Óscar González Fernández + */ +public interface IContextWithPlannerTask extends IContext { + + /** + * @return the task associated to the action + */ + public Task getTask(); + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java index 7269fb430..0ee4e130c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/DataForPlanner.java @@ -19,6 +19,7 @@ import org.zkoss.ganttz.data.TaskLeaf; import org.zkoss.ganttz.extensions.ICommand; import org.zkoss.ganttz.extensions.ICommandOnTask; import org.zkoss.ganttz.extensions.IContext; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; /** * Some test data for planner
@@ -65,10 +66,9 @@ public class DataForPlanner { }); configuration .addCommandOnTask(new ICommandOnTask() { - @Override public void doAction( - IContext context, + IContextWithPlannerTask context, ITaskFundamentalProperties task) { context.remove(task); } @@ -77,6 +77,7 @@ public class DataForPlanner { public String getName() { return "Remove"; } + }); return configuration; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ResourceAllocationCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ResourceAllocationCommand.java index fc3a364c5..06129ba83 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ResourceAllocationCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ResourceAllocationCommand.java @@ -5,7 +5,7 @@ import org.navalplanner.business.planner.entities.TaskElement; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import org.zkoss.ganttz.extensions.IContext; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; /** * A command that opens a window to make the resource allocation of a task. @@ -22,7 +22,8 @@ public class ResourceAllocationCommand implements IResourceAllocationCommand { } @Override - public void doAction(IContext context, TaskElement task) { + public void doAction(IContextWithPlannerTask context, + TaskElement task) { if (task instanceof Task) { this.resourceAllocationController.showWindow((Task) task); } @@ -39,4 +40,5 @@ public class ResourceAllocationCommand implements IResourceAllocationCommand { this.resourceAllocationController = resourceAllocationController; } + }