diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java index a48f67753..9661eaa86 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/IOrderPlanningModel.java @@ -41,6 +41,7 @@ public interface IOrderPlanningModel { ResourceAllocationController resourceAllocationController, TaskPropertiesController taskPropertiesController, CalendarAllocationController calendarAllocationController, + SubcontractController subcontractController, List> additional); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/ISubcontractCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/ISubcontractCommand.java new file mode 100644 index 000000000..687138608 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/ISubcontractCommand.java @@ -0,0 +1,35 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.navalplanner.web.planner.order; + +import org.navalplanner.business.planner.entities.TaskElement; +import org.zkoss.ganttz.extensions.ICommandOnTask; + +/** + * Contract for {@link SubcontractCommand}. + * + * @author Manuel Rego Casasnovas + */ +public interface ISubcontractCommand extends ICommandOnTask { + + void setSubcontractController(SubcontractController subcontractController); + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java index ccf259aad..8c3d0d908 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningController.java @@ -75,6 +75,9 @@ public class OrderPlanningController implements Composer { @Autowired private CalendarAllocationController calendarAllocationController; + @Autowired + private SubcontractController subcontractController; + private Order order; private List> additional = new ArrayList>(); @@ -120,7 +123,12 @@ public class OrderPlanningController implements Composer { private void updateConfiguration() { model.setConfigurationToPlanner(planner, order, viewSwitcher, resourceAllocationController, taskPropertiesController, - calendarAllocationController, additional); + calendarAllocationController, subcontractController, + additional); + } + + public SubcontractController getSubcontractController() { + return subcontractController; } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index f6484e3a7..a580cfbde 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -183,6 +183,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { ResourceAllocationController resourceAllocationController, TaskPropertiesController taskPropertiesController, CalendarAllocationController calendarAllocationController, + SubcontractController subcontractController, List> additional) { Order orderReloaded = reload(order); if (!orderReloaded.isSomeTaskElementScheduled()) { @@ -202,6 +203,8 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { .addCommandOnTask(buildCalendarAllocationCommand(calendarAllocationController)); configuration .addCommandOnTask(buildTaskPropertiesCommand(taskPropertiesController)); + configuration + .addCommandOnTask(buildSubcontractCommand(subcontractController)); configuration.setDoubleClickCommand(resourceAllocationCommand); addPrintSupport(configuration, order); Tabbox chartComponent = new Tabbox(); @@ -976,4 +979,13 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { } + private ISubcontractCommand buildSubcontractCommand( + SubcontractController subcontractController) { + ISubcontractCommand subcontractCommand = getSubcontractCommand(); + subcontractCommand.setSubcontractController(subcontractController); + return subcontractCommand; + } + + protected abstract ISubcontractCommand getSubcontractCommand(); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractCommand.java new file mode 100644 index 000000000..37ce7f7ae --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractCommand.java @@ -0,0 +1,72 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.navalplanner.web.planner.order; + +import static org.navalplanner.web.I18nHelper._; + +import org.navalplanner.business.planner.entities.Task; +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.IContextWithPlannerTask; + +/** + * Command to subcontract a {@link TaskElement} as XML. + * + * @author Manuel Rego Casasnovas + */ +@Component +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class SubcontractCommand implements ISubcontractCommand { + + private SubcontractController subcontractController; + + @Override + public String getName() { + return _("Subcontract"); + } + + @Override + public String getIcon() { + return null; + } + + @Override + public boolean isApplicableTo(TaskElement task) { + return (task instanceof Task); + } + + @Override + public void doAction(IContextWithPlannerTask context, + final TaskElement task) { + if (isApplicableTo(task)) { + subcontractController.showWindow((Task) task, context.getTask()); + } + } + + @Override + public void setSubcontractController( + SubcontractController subcontractController) { + this.subcontractController = subcontractController; + } + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractController.java new file mode 100644 index 000000000..9b6c24ecf --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/SubcontractController.java @@ -0,0 +1,66 @@ +/* + * This file is part of ###PROJECT_NAME### + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.navalplanner.web.planner.order; + +import org.navalplanner.business.planner.entities.Task; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.SuspendNotAllowedException; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.Window; + +/** + * Controller for subcontract a task. + * + * @author Manuel Rego Casasnovas + */ +@org.springframework.stereotype.Component("subcontractController") +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class SubcontractController extends GenericForwardComposer { + + private Window window; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + window = (Window) comp; + } + + public void showWindow(Task task, org.zkoss.ganttz.data.Task task2) { + try { + window.doModal(); + } catch (SuspendNotAllowedException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + public void accept() { + window.setVisible(false); + } + + public void cancel() { + window.setVisible(false); + } + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml index 19f800ca3..fd3b1675e 100644 --- a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml +++ b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml @@ -31,6 +31,7 @@ + diff --git a/navalplanner-webapp/src/main/webapp/planner/order.zul b/navalplanner-webapp/src/main/webapp/planner/order.zul index 9f0851301..64bdafad8 100644 --- a/navalplanner-webapp/src/main/webapp/planner/order.zul +++ b/navalplanner-webapp/src/main/webapp/planner/order.zul @@ -32,6 +32,7 @@ calendarController = planningController.calendarAllocationController; switcher = planningController.viewSwitcher; allocationController.switcher = switcher; + subController = planningController.subcontractController; ]]>
@@ -225,5 +226,26 @@ + + + + + +