From 09fcfa6f00b161cc1f3c16d5f1dd617da4a0fe03 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Mon, 15 Feb 2010 14:00:24 +0100 Subject: [PATCH] ItEr47S04ValidacionEProbasFuncionaisItEr46S04 : [Bug #304]Creates and reloads the bindings of the Advances tab. And fixes the --- .../orders/entities/OrderElement.java | 10 +++++---- .../ManageOrderElementAdvancesController.java | 3 +++ .../ManageOrderElementAdvancesModel.java | 7 ++++++ .../web/orders/OrderCRUDController.java | 19 +++++----------- .../web/orders/OrderElementController.java | 22 ++++++++++++++----- .../main/webapp/orders/_editOrderElement.zul | 5 +++-- 6 files changed, 40 insertions(+), 26 deletions(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java index 9e64dcda0..396ab834c 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/orders/entities/OrderElement.java @@ -383,10 +383,12 @@ public abstract class OrderElement extends BaseEntity implements protected abstract Set getAllDirectAdvanceAssignmentsReportGlobal(); public void removeAdvanceAssignment(AdvanceAssignment advanceAssignment) { - directAdvanceAssignments.remove(advanceAssignment); - if (this.getParent() != null) { - this.getParent().removeIndirectAdvanceAssignment(advanceAssignment - .getAdvanceType()); + if (directAdvanceAssignments.contains(advanceAssignment)) { + directAdvanceAssignments.remove(advanceAssignment); + if (this.getParent() != null) { + this.getParent().removeIndirectAdvanceAssignment( + advanceAssignment.getAdvanceType()); + } } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java index 9d97e718e..a28144a37 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesController.java @@ -148,7 +148,10 @@ public class ManageOrderElementAdvancesController extends manageOrderElementAdvancesModel.initEdit(getOrderElement()); this.indexSelectedItem = -1; selectedAdvances.clear(); + createAndLoadBindings(); + } + public void createAndLoadBindings() { Util.createBindingsFor(self); Util.reloadBindings(self); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java index ce888b3fb..81632a888 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java @@ -136,7 +136,14 @@ public class ManageOrderElementAdvancesModel implements @Override public void refreshChangesFromOrderElement() { + List listAdvanceAssignmentsCopy = new ArrayList( + listAdvanceAssignments); fillVariables(); + for (AdvanceAssignment advance : listAdvanceAssignmentsCopy) { + if (!listAdvanceAssignments.contains(advance)) { + listAdvanceAssignments.add(advance); + } + } } @Override 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 b3e8e61ab..39272d44b 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 @@ -46,10 +46,8 @@ import org.navalplanner.business.users.entities.UserRole; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; -import org.navalplanner.web.common.OnTabSelection; import org.navalplanner.web.common.OnlyOneVisible; import org.navalplanner.web.common.Util; -import org.navalplanner.web.common.OnTabSelection.IOnSelectingTab; import org.navalplanner.web.common.components.bandboxsearch.BandboxMultipleSearch; import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch; import org.navalplanner.web.common.components.finders.FilterPair; @@ -256,16 +254,6 @@ public class OrderCRUDController extends GenericForwardComposer { Util.reloadBindings(editWindow); Util.createBindingsFor(editOrderElement); Util.reloadBindings(editOrderElement); - final Tabbox tabBox = (Tabbox) editWindow.getFellow("tabboxOrder"); - Component tabAdvances = editWindow.getFellow("tabAdvances"); - OnTabSelection.createFor(tabBox).onSelectingTab(tabAdvances, - new IOnSelectingTab() { - @Override - public void tabSelected() { - manageOrderElementAdvancesController.refreshChangesFromOrderElement(); - Util.reloadBindings(tabBox.getSelectedPanel()); - } - }); } private void setupEditControllers() throws Exception { @@ -315,13 +303,16 @@ public class OrderCRUDController extends GenericForwardComposer { private ManageOrderElementAdvancesController manageOrderElementAdvancesController; public void setupManageOrderElementAdvancesController() throws Exception { + Component orderElementAdvances = editWindow + .getFellowIfAny("orderElementAdvances"); if (manageOrderElementAdvancesController == null) { final IOrderElementModel orderElementModel = getOrderElementModel(); - Component orderElementAdvances = editWindow - .getFellowIfAny("orderElementAdvances"); manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) orderElementAdvances .getVariable("manageOrderElementAdvancesController", true); manageOrderElementAdvancesController.openWindow(orderElementModel); + } else { + manageOrderElementAdvancesController.refreshChangesFromOrderElement(); + manageOrderElementAdvancesController.createAndLoadBindings(); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java index 3b4350c8e..0cd11a28a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java @@ -82,7 +82,6 @@ public class OrderElementController extends GenericForwardComposer { comp.setVariable("orderElementController", this, true); setupDetailsOrderElementController(comp); setupAssignedHoursToOrderElementController(comp); - setupManageOrderElementAdvancesController(comp); setupAssignedLabelsToOrderElementController(comp); setupAssignedCriterionRequirementToOrderElementController(comp); setupAssignedMaterialsToOrderElementController(comp); @@ -100,9 +99,17 @@ public class OrderElementController extends GenericForwardComposer { .getVariable("assignedHoursToOrderElementController", true); } - private void setupManageOrderElementAdvancesController(Component comp) throws Exception { - manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) - orderElementAdvances.getVariable("manageOrderElementAdvancesController", true); + public void setupManageOrderElementAdvancesController() + throws Exception { + if (manageOrderElementAdvancesController == null) { + manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) orderElementAdvances + .getVariable("manageOrderElementAdvancesController", true); + manageOrderElementAdvancesController.openWindow(orderElementModel); + } else { + manageOrderElementAdvancesController + .refreshChangesFromOrderElement(); + manageOrderElementAdvancesController.createAndLoadBindings(); + } } private void setupAssignedLabelsToOrderElementController(Component comp) @@ -144,9 +151,11 @@ public class OrderElementController extends GenericForwardComposer { clearAll(); setOrderElementModel(model); + // initialize the controllers + manageOrderElementAdvancesController = null; + detailsController.openWindow(model); assignedHoursToOrderElementController.openWindow(model); - manageOrderElementAdvancesController.openWindow(model); assignedLabelsController.openWindow(model); assignedCriterionRequirementController.openWindow(model); assignedMaterialsController.openWindow(model.getOrderElement()); @@ -190,7 +199,8 @@ public class OrderElementController extends GenericForwardComposer { } private void closeAll() { - if (!manageOrderElementAdvancesController.close()) { + if ((manageOrderElementAdvancesController != null) + && (!manageOrderElementAdvancesController.close())) { selectTab("tabAdvances"); return; } diff --git a/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul b/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul index 60b81eb3d..63b428b1f 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul @@ -34,7 +34,8 @@ - + @@ -48,7 +49,7 @@ - +