From 4b0422eb783dbed41551d17d03fd58bf074d3adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 8 Dec 2009 18:03:04 +0100 Subject: [PATCH] ItEr38S05ValidacionEProbasFuncionaisItEr37S06: Optimizing load of orders perspective. Edit part is not loaded until needed. --- .../web/orders/OrderCRUDController.java | 37 ++++++++++++++++++- .../src/main/webapp/orders/_ordersTab.zul | 4 -- 2 files changed, 36 insertions(+), 5 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 86b5c584b..58b760ed6 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 @@ -22,7 +22,9 @@ package org.navalplanner.web.orders; import static org.navalplanner.web.I18nHelper._; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.commons.logging.LogFactory; import org.hibernate.validator.InvalidValue; @@ -41,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; @@ -110,8 +113,38 @@ public class OrderCRUDController extends GenericForwardComposer { super.doAfterCompose(comp); messagesForUser = new MessagesForUser(messagesContainer); comp.setVariable("controller", this, true); - getVisibility().showOnly(listWindow); + } + private void addEditWindowIfNeeded() { + if (editWindow != null) { + return; + } + Map editWindowArgs = new HashMap(); + editWindowArgs.put("top_id", editWindowArgs); + Component parent = listWindow.getParent(); + listWindow.setVisible(false); + cachedOnlyOneVisible = null; + editWindow = (Window) Executions.createComponents( + "/orders/_edition.zul", + parent, editWindowArgs); + Map editOrderElementArgs = new HashMap(); + editOrderElementArgs.put("top_id", "editOrderElement"); + Component editOrderElement = Executions.createComponents( + "/orders/_editOrderElement.zul", + parent, editOrderElementArgs); + try { + setupEditControllers(); + } catch (Exception e) { + throw new RuntimeException(e); + } + Util.createBindingsFor(editWindow); + Util.reloadBindings(editWindow); + Util.createBindingsFor(editOrderElement); + Util.reloadBindings(editOrderElement); + } + + private void setupEditControllers() throws Exception { + Component comp = self; OrderElementController orderElementController = new OrderElementController(); orderElementController.doAfterCompose(comp .getFellow("editOrderElement")); @@ -196,6 +229,7 @@ public class OrderCRUDController extends GenericForwardComposer { private OnlyOneVisible getVisibility() { if (cachedOnlyOneVisible == null) { + addEditWindowIfNeeded(); cachedOnlyOneVisible = new OnlyOneVisible(listWindow, editWindow); } return cachedOnlyOneVisible; @@ -315,6 +349,7 @@ public class OrderCRUDController extends GenericForwardComposer { } private void showEditWindow(String title) { + addEditWindowIfNeeded(); clearEditWindow(); initializeTabs(); editWindow.setTitle(title); diff --git a/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul b/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul index 38ebc49e7..b358a0fed 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_ordersTab.zul @@ -19,8 +19,6 @@ --> - - - -