From 95cb196bd7be44efa5a22aaf0dea7d50f19dcd44 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 27 May 2010 19:07:52 +0200 Subject: [PATCH] ItEr58S20RFMellorasAvances: Adds some improvements in the advances screen. it updates the advances of the order when it is changes the selected tab. this permit to validate correctly the error that occurs when it is introduced advances with same type. --- .../web/orders/OrderCRUDController.java | 86 +++++++++++++++++-- .../src/main/webapp/orders/_edition.zul | 2 +- 2 files changed, 79 insertions(+), 9 deletions(-) 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 2fcfb1221..03d5ce8c8 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 @@ -274,6 +274,10 @@ public class OrderCRUDController extends GenericForwardComposer { } public void setupOrderElementTreeController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + if (orderElementTreeController == null) { OrderElementController orderElementController = new OrderElementController(); orderElementController.doAfterCompose(self @@ -290,6 +294,23 @@ public class OrderCRUDController extends GenericForwardComposer { } } + /* + * Operations to do before to change the selected tab + */ + private boolean confirmLastTab() { + if (getCurrentTab() != null) { + // Confirm advances tab. + if (getCurrentTab().getId().equals("tabAdvances")) { + if (!manageOrderElementAdvancesController.save()) { + resetSelectedTab(); + selectTab("tabAdvances"); + return false; + } + } + } + return true; + } + private void redraw(Component comp) { Util.createBindingsFor(comp); Util.reloadBindings(comp); @@ -303,6 +324,10 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedHoursToOrderElementController assignedHoursController; public void setupAssignedHoursToOrderElementController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + if (assignedHoursController == null) { Component orderElementHours = editWindow .getFellowIfAny("orderElementHours"); @@ -317,6 +342,10 @@ public class OrderCRUDController extends GenericForwardComposer { private ManageOrderElementAdvancesController manageOrderElementAdvancesController; public void setupManageOrderElementAdvancesController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + Component orderElementAdvances = editWindow .getFellowIfAny("orderElementAdvances"); if (manageOrderElementAdvancesController == null) { @@ -335,6 +364,10 @@ public class OrderCRUDController extends GenericForwardComposer { public void setupAssignedLabelsToOrderElementController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + if (assignedLabelsController == null) { LabelsAssignmentToOrderElementComponent labelsAssignment = (LabelsAssignmentToOrderElementComponent) editWindow .getFellow("orderElementLabels"); @@ -349,6 +382,10 @@ public class OrderCRUDController extends GenericForwardComposer { public void setupAssignedCriterionRequirementsToOrderElementController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + if (assignedCriterionRequirementController == null) { Component orderElementCriterionRequirements = editWindow .getFellowIfAny("orderElementCriterionRequirements"); @@ -367,6 +404,10 @@ public class OrderCRUDController extends GenericForwardComposer { public void setupAssignedMaterialsToOrderElementController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + if (assignedMaterialsController == null) { OrderElementMaterialAssignmentsComponent assignmentsComponent = (OrderElementMaterialAssignmentsComponent) editWindow .getFellowIfAny("orderElementMaterials"); @@ -381,6 +422,10 @@ public class OrderCRUDController extends GenericForwardComposer { private AssignedTaskQualityFormsToOrderElementController assignedTaskQualityFormController; public void setupAssignedTaskQualityFormsToOrderElementController() throws Exception { + if (!confirmLastTab()) + return; + setCurrentTab(); + Component orderElementTaskQualityForms = editWindow .getFellowIfAny("orderElementTaskQualityForms"); if (assignedTaskQualityFormController == null) { @@ -397,6 +442,10 @@ public class OrderCRUDController extends GenericForwardComposer { private OrderAuthorizationController orderAuthorizationController; public void setupOrderAuthorizationController() { + if (!confirmLastTab()) + return; + setCurrentTab(); + Component orderElementAuthorizations = editWindow .getFellowIfAny("orderElementAuthorizations"); if (orderAuthorizationController == null) { @@ -445,9 +494,10 @@ public class OrderCRUDController extends GenericForwardComposer { } public void saveAndContinue() { - setCurrentTab(); Order order = (Order) orderModel.getOrder(); final boolean isNewObject = order.isNewObject(); + setCurrentTab(); + Tab previousTab = getCurrentTab(); final boolean couldSave = save(); if (couldSave) { if(orderModel.userCanRead(order, SecurityUtils.getSessionUserLoginName())) { @@ -463,13 +513,15 @@ public class OrderCRUDController extends GenericForwardComposer { showWindow(editWindow); // come back to the current tab after initialize all tabs. - selectTab(getCurrentTab().getId()); - Events.sendEvent(new SelectEvent(Events.ON_SELECT, - getCurrentTab(), null)); + resetSelectedTab(); + selectTab(previousTab.getId()); + Events.sendEvent(new SelectEvent(Events.ON_SELECT, previousTab, + null)); if (isNewObject) { this.planningControllerEntryPoints.goToOrderDetails(order); } + } else { try { @@ -495,26 +547,31 @@ public class OrderCRUDController extends GenericForwardComposer { if (manageOrderElementAdvancesController != null) { selectTab("tabAdvances"); if (!manageOrderElementAdvancesController.save()) { + setCurrentTab(); return false; } } if (assignedCriterionRequirementController != null) { selectTab("tabRequirements"); if (!assignedCriterionRequirementController.close()) { + setCurrentTab(); return false; } } if (assignedTaskQualityFormController != null) { selectTab("tabTaskQualityForm"); if (!assignedTaskQualityFormController.confirm()) { - return false; + setCurrentTab(); + return false; } } createPercentageAdvances(); - // come back to the current tab after validate other tabs. - selectTab(getCurrentTab().getId()); + // come back to the default tab. + if (getCurrentTab() != null) { + selectTab(getCurrentTab().getId()); + } try { orderModel.save(); @@ -530,6 +587,7 @@ public class OrderCRUDController extends GenericForwardComposer { } catch (ValidationException e) { messagesForUser.showInvalidValues(e, new LabelCreatorForInvalidValues()); } + setCurrentTab(); return false; } @@ -569,6 +627,10 @@ public class OrderCRUDController extends GenericForwardComposer { selectTab("tabGeneralData"); } + private void resetSelectedTab() { + selectedTab = null; + } + private void setCurrentTab() { Tabbox tabboxOrder = (Tabbox) editWindow.getFellowIfAny("tabboxOrder"); if (tabboxOrder != null) { @@ -601,7 +663,9 @@ public class OrderCRUDController extends GenericForwardComposer { } public void reloadHoursGroupOrder() { - assignedCriterionRequirementController.reload(); + if (getCurrentTab().getId().equals("tabRequirements")) { + assignedCriterionRequirementController.reload(); + } } private void showWindow(Window window) { @@ -731,6 +795,12 @@ public class OrderCRUDController extends GenericForwardComposer { loadCustomerComponent(); } + public void setupOrderDetails() { + confirmLastTab(); + setCurrentTab(); + reloadDefaultTab(); + } + public void reloadDefaultTab() { Tabpanel tabPanel = (Tabpanel) editWindow .getFellow("tabPanelGeneralData"); diff --git a/navalplanner-webapp/src/main/webapp/orders/_edition.zul b/navalplanner-webapp/src/main/webapp/orders/_edition.zul index 5154ab594..d71aa6b05 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_edition.zul @@ -37,7 +37,7 @@ + onSelect = "controller.setupOrderDetails();"/>