diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/EditTaskCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/EditTaskCommand.java new file mode 100644 index 000000000..782c35bd2 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/EditTaskCommand.java @@ -0,0 +1,39 @@ +package org.navalplanner.web.planner; + +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.TaskEditFormComposer; +import org.zkoss.ganttz.extensions.IContextWithPlannerTask; + +/** + * Command to edit a {@link TaskElement}. + * + * @author Manuel Rego Casasnovas + */ +@Component +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class EditTaskCommand implements IEditTaskCommand { + + private TaskEditFormComposer taskEditFormComposer; + + @Override + public void doAction(IContextWithPlannerTask context, + TaskElement task) { + taskEditFormComposer.showEditFormFor(context.getRelativeTo(), context + .getTask()); + } + + @Override + public String getName() { + return "Edit"; + } + + @Override + public void setTaskEditFormComposer( + TaskEditFormComposer taskEditFormComposer) { + this.taskEditFormComposer = taskEditFormComposer; + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IEditTaskCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IEditTaskCommand.java new file mode 100644 index 000000000..a10a01b7b --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/IEditTaskCommand.java @@ -0,0 +1,16 @@ +package org.navalplanner.web.planner; + +import org.navalplanner.business.planner.entities.TaskElement; +import org.zkoss.ganttz.TaskEditFormComposer; +import org.zkoss.ganttz.extensions.ICommandOnTask; + +/** + * Contract for {@link EditTaskCommand}
+ * + * @author Manuel Rego Casasnovas + */ +public interface IEditTaskCommand extends ICommandOnTask { + + void setTaskEditFormComposer(TaskEditFormComposer taskEditFormComposer); + +} 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 1469da359..128debe84 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 @@ -2,6 +2,7 @@ package org.navalplanner.web.planner; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.entities.TaskElement; +import org.zkoss.ganttz.TaskEditFormComposer; import org.zkoss.ganttz.adapters.PlannerConfiguration; /** @@ -15,6 +16,7 @@ public interface IOrderPlanningModel { void createConfiguration(Order order, ResourceAllocationController resourceAllocationController, + TaskEditFormComposer taskEditFormComposer, ConfigurationOnTransaction onTransaction); } 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 9c1b0db91..f7b85fc4f 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 @@ -10,6 +10,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.TaskEditFormComposer; import org.zkoss.ganttz.adapters.PlannerConfiguration; /** @@ -27,6 +28,12 @@ public class OrderPlanningController implements return resourceAllocationController; } + private TaskEditFormComposer taskEditFormComposer = new TaskEditFormComposer(); + + public TaskEditFormComposer getTaskEditFormComposer() { + return taskEditFormComposer; + } + @Autowired private IURLHandlerRegistry urlHandlerRegistry; @@ -41,6 +48,7 @@ public class OrderPlanningController implements @Override public void showSchedule(Order order) { model.createConfiguration(order, resourceAllocationController, + taskEditFormComposer, new ConfigurationOnTransaction() { @Override 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 1bc90f38b..627dce7ea 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 @@ -15,6 +15,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.zkoss.ganttz.TaskEditFormComposer; import org.zkoss.ganttz.adapters.IStructureNavigator; import org.zkoss.ganttz.adapters.PlannerConfiguration; @@ -47,6 +48,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { @Transactional(readOnly = true) public void createConfiguration(Order order, ResourceAllocationController resourceAllocationController, + TaskEditFormComposer taskEditFormComposer, ConfigurationOnTransaction onTransaction) { Order orderReloaded = reload(order); if (!orderReloaded.isSomeTaskElementScheduled()) @@ -67,6 +69,10 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { splitCommand.setState(planningState); configuration.addCommandOnTask(splitCommand); + IEditTaskCommand editTaskCommand = getEditTaskCommand(); + editTaskCommand.setTaskEditFormComposer(taskEditFormComposer); + configuration.setEditTaskCommand(editTaskCommand); + onTransaction.use(configuration); } @@ -143,6 +149,8 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { protected abstract ISplitTaskCommand getSplitCommand(); + protected abstract IEditTaskCommand getEditTaskCommand(); + private Order reload(Order order) { try { return orderService.find(order.getId()); 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 1804443ad..0ba9f8c65 100644 --- a/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml +++ b/navalplanner-webapp/src/main/resources/navalplanner-webapp-spring-config.xml @@ -20,6 +20,7 @@ + diff --git a/navalplanner-webapp/src/main/webapp/planner/order.zul b/navalplanner-webapp/src/main/webapp/planner/order.zul index 8fe95c8de..1de5f46c6 100644 --- a/navalplanner-webapp/src/main/webapp/planner/order.zul +++ b/navalplanner-webapp/src/main/webapp/planner/order.zul @@ -18,6 +18,30 @@
+ + + + + ${c:l('task.name')} + + + + ${c:l('task.start')} + + + + ${c:l('task.end')} + + + + ${c:l('task.notes')} + + + + +