diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java b/ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java index e9b98b2ef..23db9e97b 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TabsRegistry.java @@ -65,10 +65,23 @@ public class TabsRegistry { show(tab, DO_NOTHING); } + public void showWithoutAfterCreate(ITab tab) { + show(tab, DO_NOTHING, false); + } + public void show(ITab tab, IBeforeShowAction beforeShowAction) { + show(tab, beforeShowAction, true); + } + + private void show(ITab tab, IBeforeShowAction beforeShowAction, + boolean afterCreate) { hideAllExcept(tab); beforeShowAction.doAction(); - tab.show(); + if (afterCreate) { + tab.show(); + } else { + tab.showWithoutAfterCreate(); + } parent.invalidate(); activateMenuIfRegistered(tab); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ITab.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ITab.java index 7645a8047..d822d2fa5 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ITab.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/ITab.java @@ -37,6 +37,8 @@ public interface ITab { void show(); + void showWithoutAfterCreate(); + void hide(); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/TabProxy.java b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/TabProxy.java index 2fbd04ce7..096d92fa5 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/extensions/TabProxy.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/extensions/TabProxy.java @@ -53,6 +53,11 @@ public class TabProxy implements ITab { proxiedTab.show(); } + @Override + public void showWithoutAfterCreate() { + proxiedTab.showWithoutAfterCreate(); + } + @Override public String getCssClass() { return proxiedTab.getCssClass(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java index 3e33a3591..8bfad383c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java @@ -111,20 +111,28 @@ public class Util { return (DataBinder) component.getVariable("binder", false); } - @SuppressWarnings("unchecked") public static void createBindingsFor(org.zkoss.zk.ui.Component result) { + createBindingsFor(result, true); + } + + @SuppressWarnings("unchecked") + public static void createBindingsFor(org.zkoss.zk.ui.Component result, + boolean loadBindings) { List children = new ArrayList( result.getChildren()); for (org.zkoss.zk.ui.Component child : children) { createBindingsFor(child); } - setBinderFor(result); + setBinderFor(result, loadBindings); } - private static void setBinderFor(org.zkoss.zk.ui.Component result) { + private static void setBinderFor(org.zkoss.zk.ui.Component result, + boolean loadBindings) { AnnotateDataBinder binder = new AnnotateDataBinder(result, true); result.setVariable("binder", binder, true); - binder.loadAll(); + if (loadBindings) { + binder.loadAll(); + } } /** diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/CreatedOnDemandTab.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/CreatedOnDemandTab.java index ebba95f83..b7ef835fd 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/CreatedOnDemandTab.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/CreatedOnDemandTab.java @@ -72,9 +72,21 @@ public class CreatedOnDemandTab implements ITab { @Override public void show() { + show(true); + } + + @Override + public void showWithoutAfterCreate() { + show(false); + } + + private void show(boolean afterCreate) { beforeShowAction(); if (component == null) { component = componentCreator.create(parent); + if (afterCreate) { + afterCreateAction(component); + } } component.setParent(parent); afterShowAction(); @@ -90,6 +102,9 @@ public class CreatedOnDemandTab implements ITab { protected void beforeShowAction() { } + protected void afterCreateAction(Component component) { + } + protected void afterShowAction() { } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java index 9cc20d977..824245410 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/MultipleTabsPlannerController.java @@ -472,7 +472,7 @@ public class MultipleTabsPlannerController implements Composer, @Override public void goToOrdersList() { // ordersTab.show(); - getTabsRegistry().show(ordersTab); + getTabsRegistry().showWithoutAfterCreate(ordersTab); } public void goToCreateForm() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java index 15ecc5a39..956e273e9 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/OrdersTabCreator.java @@ -68,8 +68,6 @@ public class OrdersTabCreator { args.put("orderController", setupOrderCrudController()); result = Executions.createComponents("/orders/_ordersTab.zul", parent, args); - Util.createBindingsFor(result); - Util.reloadBindings(result); return result; } @@ -110,6 +108,11 @@ public class OrdersTabCreator { } } + @Override + protected void afterCreateAction(org.zkoss.zk.ui.Component component) { + Util.createBindingsFor(component, false); + } + @Override protected void afterShowAction() { orderCRUDController.goToList(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/TabOnModeType.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/TabOnModeType.java index 6f92e1880..f56f08168 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/TabOnModeType.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/tabs/TabOnModeType.java @@ -140,4 +140,13 @@ public class TabOnModeType implements ITab { } } + @Override + public void showWithoutAfterCreate() { + beingShown = true; + ITab currentTab = getCurrentTab(); + if (currentTab != null) { + currentTab.showWithoutAfterCreate(); + } + } + }