diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java index 20e40d26f..b04a6b281 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderCRUDController.java @@ -209,6 +209,7 @@ public class OrderCRUDController extends GenericForwardComposer { private Button createOrderButton; private Button createOrderFromTemplateButton; private Button saveOrderAndContinueButton; + private Button cancelEditionButton; private Datebox filterStartDate; @@ -293,6 +294,34 @@ public class OrderCRUDController extends GenericForwardComposer { saveAndContinue(); } }); + + cancelEditionButton.setParent(perspectiveButtonsInsertionPoint); + cancelEditionButton.addEventListener(Events.ON_CLICK, + new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + try { + Messagebox + .show(_("Unsaved changes will be lost. Are you sure?"), + _("Confirm exit dialog"), + Messagebox.OK | Messagebox.CANCEL, + Messagebox.QUESTION, + new org.zkoss.zk.ui.event.EventListener() { + public void onEvent(Event evt) + throws InterruptedException { + if (evt.getName().equals( + "onOK")) { + Executions + .sendRedirect("/planner/index.zul;company_scheduling"); + } + } + }); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + } private void initEditOrderElementWindow() { @@ -1445,6 +1474,7 @@ public class OrderCRUDController extends GenericForwardComposer { createOrderButton.setVisible(showCreate); createOrderFromTemplateButton.setVisible(showCreate); saveOrderAndContinueButton.setVisible(!showCreate); + cancelEditionButton.setVisible(!showCreate); } public void highLight(final OrderElement orderElement) { 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 4d06d4b95..e21e80b52 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 @@ -115,6 +115,7 @@ import org.zkoss.ganttz.adapters.PlannerConfiguration.IReloadChartListener; import org.zkoss.ganttz.data.GanttDiagramGraph.IGraphChangeListener; import org.zkoss.ganttz.extensions.ICommand; import org.zkoss.ganttz.extensions.ICommandOnTask; +import org.zkoss.ganttz.extensions.IContext; import org.zkoss.ganttz.extensions.IContextWithPlannerTask; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.zoom.DetailItem; @@ -135,6 +136,7 @@ import org.zkoss.zul.Datebox; import org.zkoss.zul.Div; import org.zkoss.zul.Hbox; import org.zkoss.zul.Label; +import org.zkoss.zul.Messagebox; import org.zkoss.zul.Progressmeter; import org.zkoss.zul.Tab; import org.zkoss.zul.Tabbox; @@ -327,6 +329,7 @@ public class OrderPlanningModel implements IOrderPlanningModel { setupEditingCapabilities(configuration, writingAllowed); configuration.addGlobalCommand(buildReassigningCommand()); + configuration.addGlobalCommand(buildCancelEditionCommand()); NullSeparatorCommandOnTask separator = new NullSeparatorCommandOnTask(); @@ -1002,6 +1005,45 @@ public class OrderPlanningModel implements IOrderPlanningModel { return reassignCommand; } + private ICommand buildCancelEditionCommand() { + return new ICommand() { + + @Override + public String getName() { + return _("Cancel"); + } + + @Override + public void doAction(IContext context) { + + try { + Messagebox + .show("Are you sure to want to leave? Unsaved changes will be lost.", + "Confirm exit dialog", Messagebox.OK + | Messagebox.CANCEL, + Messagebox.QUESTION, + new org.zkoss.zk.ui.event.EventListener() { + public void onEvent(Event evt) + throws InterruptedException { + if (evt.getName().equals("onOK")) { + Executions + .sendRedirect("/planner/index.zul;company_scheduling"); + } + } + }); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + @Override + public String getImage() { + return "/common/img/ico_back.png"; + } + + }; + } + private Chart setupChart(Order orderReloaded, IChartFiller loadChartFiller, Timeplot chartComponent, Planner planner) { diff --git a/navalplanner-webapp/src/main/webapp/common/img/ico_back.png b/navalplanner-webapp/src/main/webapp/common/img/ico_back.png new file mode 100644 index 000000000..5cd434287 Binary files /dev/null and b/navalplanner-webapp/src/main/webapp/common/img/ico_back.png differ diff --git a/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul b/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul index 0ed53f206..236b6f648 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul @@ -40,6 +40,9 @@