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 399eeb951..d0735337d 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 @@ -223,6 +223,8 @@ public class OrderCRUDController extends GenericForwardComposer { private OrderElementTreeController orderElementTreeController; + private ProjectDetailsController projectDetailsController; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); @@ -1011,16 +1013,33 @@ public class OrderCRUDController extends GenericForwardComposer { public void goToCreateForm() { try { - showOrderElementFilter(); - hideCreateButtons(); orderModel.prepareForCreate(); - prepareEditWindow(); - showEditWindow(_("Create order")); + showCreationPopup(); } catch (ConcurrentModificationException e) { messagesForUser.showMessage(Level.ERROR, e.getMessage()); } } + public void editNewCreatedOrder() { + showOrderElementFilter(); + hideCreateButtons(); + prepareEditWindow(); + showEditWindow(_("Create order")); + } + + private void showCreationPopup() { + Window window = (Window) Executions.createComponents( + "/orders/_projectDetails.zul", null, + new HashMap()); + projectDetailsController = new ProjectDetailsController(); + try { + projectDetailsController.doAfterCompose(window); + projectDetailsController.showWindow(this); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + private void hideCreateButtons() { showCreateButtons(false); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java new file mode 100644 index 000000000..d2672dd0c --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ProjectDetailsController.java @@ -0,0 +1,145 @@ +/* + * This file is part of NavalPlan + * + * Copyright (C) 2010 Wireless Galicia S.L. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.navalplanner.web.orders; + +import java.util.Date; +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.navalplanner.business.calendars.entities.BaseCalendar; +import org.navalplanner.business.externalcompanies.entities.ExternalCompany; +import org.navalplanner.business.orders.entities.Order; +import org.navalplanner.web.common.Util; +import org.navalplanner.web.planner.consolidations.AdvanceConsolidationController; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.SuspendNotAllowedException; +import org.zkoss.zk.ui.util.GenericForwardComposer; +import org.zkoss.zul.ComboitemRenderer; +import org.zkoss.zul.Grid; +import org.zkoss.zul.Window; + +/** + * Controller for the creation of an {@link order} with its principal + * properties. + * @author Susana Montes Pedreira + */ + +public class ProjectDetailsController extends GenericForwardComposer { + + private static final Log LOG = LogFactory + .getLog(AdvanceConsolidationController.class); + + private OrderCRUDController orderController; + + private Grid gridProjectDetails; + + private BaseCalendar defaultCalendar; + + private String oldCode; + + private boolean isCodeAutogeneratedInit; + private Window window; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + window = (Window) comp; + window.setVariable("projectController", this, true); + } + + public void showWindow(OrderCRUDController orderController) { + this.orderController = orderController; + this.defaultCalendar = orderController.getOrder().getCalendar(); + this.isCodeAutogeneratedInit = orderController.getOrder() + .isCodeAutogenerated(); + + try { + Util.reloadBindings(window); + Util.createBindingsFor(gridProjectDetails); + Util.reloadBindings(gridProjectDetails); + window.doModal(); + } catch (SuspendNotAllowedException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + + public void cancel() { + clearProperties(); + close(); + } + + public void accept() { + orderController.editNewCreatedOrder(); + close(); + } + + private void close() { + window.setVisible(false); + } + + public Order getOrder() { + return orderController.getOrder(); + } + + public boolean isCodeAutogenerated() { + return orderController.isCodeAutogenerated(); + } + + public void setCodeAutogenerated(boolean codeAutogenerated) { + orderController.setCodeAutogenerated(codeAutogenerated); + Util.reloadBindings(gridProjectDetails); + } + + public List getExternalCompaniesAreClient() { + return orderController.getExternalCompaniesAreClient(); + } + + public List getBaseCalendars() { + return orderController.getBaseCalendars(); + } + + public ComboitemRenderer getBaseCalendarsComboitemRenderer() { + return orderController.getBaseCalendarsComboitemRenderer(); + } + + public void setBaseCalendar(BaseCalendar calendar) { + orderController.setBaseCalendar(calendar); + } + + private void clearProperties() { + Order order = orderController.getOrder(); + order.setName(null); + // reset the code autogenerated property + if (isCodeAutogeneratedInit) { + order.setCodeAutogenerated(true); + + } else { + order.setCodeAutogenerated(false); + order.setCode(""); + } + order.setCustomer(null); + order.setDeadline(null); + order.setInitDate(new Date()); + order.setCalendar(defaultCalendar); + } +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul b/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul new file mode 100644 index 000000000..fc99d3be2 --- /dev/null +++ b/navalplanner-webapp/src/main/webapp/orders/_projectDetails.zul @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + +