diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AsignedHoursToOrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AsignedHoursToOrderElementController.java index a835b6018..90d51de6b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AsignedHoursToOrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AsignedHoursToOrderElementController.java @@ -22,6 +22,7 @@ package org.navalplanner.web.orders; import java.util.List; +import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.workreports.entities.WorkReportLine; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; @@ -66,12 +67,22 @@ public class AsignedHoursToOrderElementController extends return asignedHoursToOrderElementModel.getProgressWork(); } + IOrderElementModel orderElementModel; + public void openWindow(IOrderElementModel orderElementModel) { - this.asignedHoursToOrderElementModel.initOrderElement(orderElementModel - .getOrderElement()); + setOrderElementModel(orderElementModel); + asignedHoursToOrderElementModel.initOrderElement(getOrderElement()); viewPercentage(); } + public void setOrderElementModel(IOrderElementModel orderElementModel) { + this.orderElementModel = orderElementModel; + } + + private OrderElement getOrderElement() { + return orderElementModel.getOrderElement(); + } + Progressmeter hoursProgressBar; Progressmeter exceedHoursProgressBar; diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedLabelsToOrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedLabelsToOrderElementController.java index d9e08d5bd..b0b0e6fed 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedLabelsToOrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedLabelsToOrderElementController.java @@ -57,21 +57,18 @@ public class AssignedLabelsToOrderElementController extends private BandboxSearch bdLabels; - public OrderElement getOrderElement() { - return assignedLabelsToOrderElementModel.getOrderElement(); - } - - public void setOrderElement(OrderElement orderElement) { - assignedLabelsToOrderElementModel.setOrderElement(orderElement); + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + comp.setVariable("assignedLabelsController", this, true); } public void openWindow(IOrderElementModel orderElementModel) { - assignedLabelsToOrderElementModel.setOrderModel(orderElementModel - .getOrderModel()); - openWindow(orderElementModel.getOrderElement()); + setOrderElementModel(orderElementModel); + openWindow(getOrderElement()); } - public void openWindow(OrderElement orderElement) { + private void openWindow(OrderElement orderElement) { assignedLabelsToOrderElementModel.init(orderElement); // Clear components @@ -82,10 +79,28 @@ public class AssignedLabelsToOrderElementController extends Util.reloadBindings(directLabels); } - @Override - public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); - comp.setVariable("assignedLabelsController", this, true); + IOrderElementModel orderElementModel; + + public void setOrderElementModel(IOrderElementModel orderElementModel) { + this.orderElementModel = orderElementModel; + setOrderElement(orderElementModel.getOrderElement()); + setOrderModel(orderElementModel.getOrderModel()); + } + + private void setOrderModel(IOrderModel orderModel) { + if (assignedLabelsToOrderElementModel != null) { + assignedLabelsToOrderElementModel.setOrderModel(orderModel); + } + } + + public OrderElement getOrderElement() { + return orderElementModel.getOrderElement(); + } + + public void setOrderElement(OrderElement orderElement) { + if (assignedLabelsToOrderElementModel != null) { + assignedLabelsToOrderElementModel.setOrderElement(orderElement); + } } /** diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/DetailsOrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/DetailsOrderElementController.java index 0d665789f..da94c0ced 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/DetailsOrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/DetailsOrderElementController.java @@ -529,7 +529,7 @@ public class DetailsOrderElementController extends public void openWindow(IOrderElementModel model) { setOrderElementModel(model); - final OrderElement orderElement = model.getOrderElement(); + final OrderElement orderElement = getOrderElement(); // If is a container if (orderElement instanceof OrderLineGroup) { // Disable fields just used in the OrderLine 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 3f1e8ffcd..3ab6a3ac9 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 @@ -39,6 +39,7 @@ import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment; import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException; import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; +import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -131,14 +132,24 @@ public class ManageOrderElementAdvancesController extends } } + IOrderElementModel orderElementModel; + public void openWindow(IOrderElementModel orderElementModel) { - this.manageOrderElementAdvancesModel.init(orderElementModel - .getOrderElement()); + setOrderElementModel(orderElementModel); + manageOrderElementAdvancesModel.init(getOrderElement()); this.indexSelectedItem = -1; selectedAdvances.clear(); Util.reloadBindings(self); } + public void setOrderElementModel(IOrderElementModel orderElementModel) { + this.orderElementModel = orderElementModel; + } + + private OrderElement getOrderElement() { + return orderElementModel.getOrderElement(); + } + private Listbox editAdvances; public void prepareEditAdvanceMeasurements(AdvanceAssignment advanceAssignment) { 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 71bbe1d08..803a1914a 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 @@ -30,6 +30,7 @@ import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.orders.entities.IOrderLineGroup; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.orders.entities.OrderElement; +import org.navalplanner.business.orders.entities.OrderLineGroup; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; @@ -43,7 +44,6 @@ import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Label; import org.zkoss.zul.Messagebox; -import org.zkoss.zul.Tab; import org.zkoss.zul.api.Window; /** @@ -72,6 +72,68 @@ public class OrderCRUDController extends GenericForwardComposer { private IOrderPlanningGate planningControllerEntryPoints; + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + messagesForUser = new MessagesForUser(messagesContainer); + comp.setVariable("controller", this, true); + getVisibility().showOnly(listWindow); + + OrderElementController orderElementController = new OrderElementController(); + orderElementController.doAfterCompose(comp + .getFellow("editOrderElement")); + setupOrderElementTreeController(comp, orderElementController); + setupDetailsOrderElementController(comp); + setupAsignedHoursToOrderElementController(comp); + setupManageOrderElementAdvancesController(comp); + setupAssignedLabelsToOrderElementController(comp); + } + + private void setupOrderElementTreeController(Component comp, + OrderElementController orderElementController) throws Exception { + OrderElementTreeController controller = new OrderElementTreeController( + orderModel, orderElementController); + controller.doAfterCompose(editWindow.getFellowIfAny("orderElementTree")); + } + + private DetailsOrderElementController detailsController; + + private void setupDetailsOrderElementController(Component comp) throws Exception { + Component orderElementDetails = editWindow.getFellowIfAny("orderElementDetails"); + detailsController = (DetailsOrderElementController) + orderElementDetails.getVariable("detailsController", true); + } + + private IOrderElementModel getOrderElementModel() { + final Order order = (Order) orderModel.getOrder(); + return orderModel.getOrderElementModel(order); + } + + private AsignedHoursToOrderElementController assignedHoursController; + + private void setupAsignedHoursToOrderElementController(Component comp) throws Exception{ + Component orderElementHours = editWindow.getFellowIfAny("orderElementHours"); + assignedHoursController = (AsignedHoursToOrderElementController) + orderElementHours.getVariable("asignedHoursToOrderElementController", true); + } + + private ManageOrderElementAdvancesController manageOrderElementAdvancesController; + + private void setupManageOrderElementAdvancesController(Component comp) throws Exception { + Component orderElementAdvances = editWindow.getFellowIfAny("orderElementAdvances"); + manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) + orderElementAdvances.getVariable("manageOrderElementAdvancesController", true); + } + + private AssignedLabelsToOrderElementController assignedLabelsController; + + private void setupAssignedLabelsToOrderElementController(Component comp) + throws Exception { + Component orderElementLabels = editWindow.getFellowIfAny("orderElementLabels"); + assignedLabelsController = (AssignedLabelsToOrderElementController) + orderElementLabels.getVariable("assignedLabelsController", true); + } + public List getOrders() { return orderModel.getOrders(); } @@ -192,6 +254,12 @@ public class OrderCRUDController extends GenericForwardComposer { public void goToEditForm(Order order) { orderModel.prepareEditFor(order); + + final IOrderElementModel orderElementModel = getOrderElementModel(); + detailsController.openWindow(orderElementModel); + assignedHoursController.openWindow(orderElementModel); + manageOrderElementAdvancesController.openWindow(orderElementModel); + assignedLabelsController.openWindow(orderElementModel); showEditWindow(_("Edit order")); } @@ -212,28 +280,6 @@ public class OrderCRUDController extends GenericForwardComposer { showEditWindow(_("Create order")); } - @Override - public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); - messagesForUser = new MessagesForUser(messagesContainer); - comp.setVariable("controller", this, true); - getVisibility().showOnly(listWindow); - - OrderElementController orderElementController = new OrderElementController(); - orderElementController.doAfterCompose(comp - .getFellow("editOrderElement")); - setupOrderElementTreeController(comp, "editWindow", - orderElementController); - } - - private void setupOrderElementTreeController(Component comp, String window, - OrderElementController orderElementController) throws Exception { - OrderElementTreeController controller = new OrderElementTreeController( - orderModel, orderElementController); - controller.doAfterCompose(comp.getFellow(window).getFellow( - "orderElementTree")); - } - public void setPlanningControllerEntryPoints( IOrderPlanningGate planningControllerEntryPoints) { this.planningControllerEntryPoints = planningControllerEntryPoints;