From dd30fff6e80ec43bf05dc39f5bff08bef1ea8864 Mon Sep 17 00:00:00 2001 From: Diego Pino Garcia Date: Sun, 24 Oct 2010 18:17:48 +0200 Subject: [PATCH] [Bug #688] Fix bug 'Not unique in the new ID space: expandAllButton' FEA: ItEr62S05BugFixing --- .../zkoss/ganttz/util/ComponentsFinder.java | 12 +++++ .../orders/OrderElementTreeController.java | 51 ++++++++++++------- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/ComponentsFinder.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/ComponentsFinder.java index 6c2542066..85313b7e3 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/ComponentsFinder.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/ComponentsFinder.java @@ -23,6 +23,8 @@ package org.zkoss.ganttz.util; import java.util.ArrayList; import java.util.List; +import org.zkoss.zk.ui.Component; + /** * Utility methods to find components * @author Óscar González Fernández @@ -43,4 +45,14 @@ public class ComponentsFinder { return result; } + public static Component findById(String id, + List children) { + for (Component child : children) { + if (child.getId().equals(id)) { + return child; + } + } + return null; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java index eace649dc..4236b8d1d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementTreeController.java @@ -55,6 +55,7 @@ import org.navalplanner.web.orders.assigntemplates.TemplateFinderPopup.IOnResult import org.navalplanner.web.templates.IOrderTemplatesControllerEntryPoints; import org.navalplanner.web.tree.TreeController; import org.zkoss.ganttz.IPredicate; +import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.WrongValueException; @@ -234,25 +235,7 @@ public class OrderElementTreeController extends TreeController { public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); orderElementFilter.getChildren().clear(); - // Add the expand/collapse button to the tool bar - final Button expandAllButton = new Button(); - expandAllButton.setId("expandAllButton"); - expandAllButton.setClass("planner-command"); - expandAllButton.setTooltiptext(_("Expand/Collapse all")); - expandAllButton.setImage("/common/img/ico_expand.png"); - expandAllButton.addEventListener("onClick", new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - if (expandAllButton.getSclass().equals("planner-command")) { - expandAll(); - expandAllButton.setSclass("planner-command clicked"); - } else { - collapseAll(); - expandAllButton.setSclass("planner-command"); - } - } - }); - orderElementFilter.getParent().getChildren().add(expandAllButton); + appendExpandCollapseButton(); // Configuration of the order elements filter Component filterComponent = Executions.createComponents( @@ -272,6 +255,36 @@ public class OrderElementTreeController extends TreeController { .getFellow("templateFinderPopupAtTree"); } + private void appendExpandCollapseButton() { + List children = orderElementFilter.getParent().getChildren(); + + // Is already added? + Button button = (Button) ComponentsFinder.findById("expandAllButton", children); + if (button != null) { + return; + } + + // Append expand/collapse button + final Button expandAllButton = new Button(); + expandAllButton.setId("expandAllButton"); + expandAllButton.setClass("planner-command"); + expandAllButton.setTooltiptext(_("Expand/Collapse all")); + expandAllButton.setImage("/common/img/ico_expand.png"); + expandAllButton.addEventListener("onClick", new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + if (expandAllButton.getSclass().equals("planner-command")) { + expandAll(); + expandAllButton.setSclass("planner-command clicked"); + } else { + collapseAll(); + expandAllButton.setSclass("planner-command"); + } + } + }); + children.add(expandAllButton); + } + public void expandAll() { Set childrenSet = new HashSet(); Treechildren children = tree.getTreechildren();