From 5a93e8010f3e8caabcc9f502f0a01ffbbd885fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 14 Oct 2009 00:57:18 +0200 Subject: [PATCH] ItEr30S15RFVisualizacionMultiplesProxectosItEr29S18: Support for adding extra commands when setting the order --- .../web/planner/IOrderPlanningModel.java | 7 ++++++- .../web/planner/OrderPlanningController.java | 17 +++++++++++++++-- .../web/planner/OrderPlanningModel.java | 13 +++++++++++-- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java index b1ffb6f12..6ad4ddc88 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IOrderPlanningModel.java @@ -20,10 +20,14 @@ package org.navalplanner.web.planner; +import java.util.List; + import org.navalplanner.business.orders.entities.Order; +import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.web.common.ViewSwitcher; import org.navalplanner.web.planner.allocation.ResourceAllocationController; import org.zkoss.ganttz.Planner; +import org.zkoss.ganttz.extensions.ICommand; /** * @author Óscar González Fernández @@ -35,6 +39,7 @@ public interface IOrderPlanningModel { ResourceAllocationController resourceAllocationController, EditTaskController editTaskController, SplittingController splittingController, - CalendarAllocationController calendarAllocationController); + CalendarAllocationController calendarAllocationController, + List> additional); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java index 901874f36..3193c7881 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningController.java @@ -20,7 +20,13 @@ package org.navalplanner.web.planner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.apache.commons.lang.Validate; import org.navalplanner.business.orders.entities.Order; +import org.navalplanner.business.planner.entities.TaskElement; import org.navalplanner.web.common.ViewSwitcher; import org.navalplanner.web.planner.allocation.ResourceAllocationController; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +34,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.zkoss.ganttz.Planner; +import org.zkoss.ganttz.extensions.ICommand; import org.zkoss.ganttz.resourceload.ScriptsRequiredByResourceLoadPanel; import org.zkoss.ganttz.util.OnZKDesktopRegistry; import org.zkoss.ganttz.util.script.IScriptsRegister; @@ -71,6 +78,8 @@ public class OrderPlanningController implements Composer { private Order order; + private List> additional = new ArrayList>(); + public OrderPlanningController() { getScriptsRegister().register(ScriptsRequiredByResourceLoadPanel.class); ResourceAllocationController.registerNeededScripts(); @@ -81,8 +90,12 @@ public class OrderPlanningController implements Composer { .retrieve(); } - public void setOrder(Order order) { + public void setOrder(Order order, + ICommand... additionalCommands) { + Validate.notNull(additionalCommands); + Validate.noNullElements(additionalCommands); this.order = order; + this.additional = Arrays.asList(additionalCommands); if (planner != null) { updateConfiguration(); } @@ -112,7 +125,7 @@ public class OrderPlanningController implements Composer { private void updateConfiguration() { model.setConfigurationToPlanner(planner, order, viewSwitcher, resourceAllocationController, editTaskController, - splittingController, calendarAllocationController); + splittingController, calendarAllocationController, additional); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index ec78b964b..2e9b1f93d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -66,6 +66,7 @@ import org.zkforge.timeplot.geometry.ValueGeometry; import org.zkoss.ganttz.Planner; import org.zkoss.ganttz.adapters.IStructureNavigator; import org.zkoss.ganttz.adapters.PlannerConfiguration; +import org.zkoss.ganttz.extensions.ICommand; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener; import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; @@ -116,13 +117,14 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { ResourceAllocationController resourceAllocationController, EditTaskController editTaskController, SplittingController splittingController, - CalendarAllocationController calendarAllocationController) { + CalendarAllocationController calendarAllocationController, + List> additional) { Order orderReloaded = reload(order); if (!orderReloaded.isSomeTaskElementScheduled()) throw new IllegalArgumentException(_( "The order {0} must be scheduled", orderReloaded)); PlannerConfiguration configuration = createConfiguration(orderReloaded); - + addAdditional(additional, configuration); configuration.addGlobalCommand(buildSaveCommand()); configuration.addCommandOnTask(buildResourceAllocationCommand(resourceAllocationController)); @@ -142,6 +144,13 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { setupChart(orderReloaded, chartComponent, planner.getTimeTracker()); } + private void addAdditional(List> additional, + PlannerConfiguration configuration) { + for (ICommand c : additional) { + configuration.addGlobalCommand(c); + } + } + private ICalendarAllocationCommand buildCalendarAllocationCommand( CalendarAllocationController calendarAllocationController) { ICalendarAllocationCommand calendarAllocationCommand = getCalendarAllocationCommand();