ItEr30S15RFVisualizacionMultiplesProxectosItEr29S18: Support for adding extra commands when setting the order

This commit is contained in:
Óscar González Fernández 2009-10-14 00:57:18 +02:00
parent 2eb575ab17
commit 5a93e8010f
3 changed files with 32 additions and 5 deletions

View file

@ -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 <ogonzalez@igalia.com>
@ -35,6 +39,7 @@ public interface IOrderPlanningModel {
ResourceAllocationController resourceAllocationController,
EditTaskController editTaskController,
SplittingController splittingController,
CalendarAllocationController calendarAllocationController);
CalendarAllocationController calendarAllocationController,
List<ICommand<TaskElement>> additional);
}

View file

@ -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<ICommand<TaskElement>> additional = new ArrayList<ICommand<TaskElement>>();
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<TaskElement>... 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);
}
}

View file

@ -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<ICommand<TaskElement>> additional) {
Order orderReloaded = reload(order);
if (!orderReloaded.isSomeTaskElementScheduled())
throw new IllegalArgumentException(_(
"The order {0} must be scheduled", orderReloaded));
PlannerConfiguration<TaskElement> 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<ICommand<TaskElement>> additional,
PlannerConfiguration<TaskElement> configuration) {
for (ICommand<TaskElement> c : additional) {
configuration.addGlobalCommand(c);
}
}
private ICalendarAllocationCommand buildCalendarAllocationCommand(
CalendarAllocationController calendarAllocationController) {
ICalendarAllocationCommand calendarAllocationCommand = getCalendarAllocationCommand();