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 c408b3e1b..2e29099c5 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
@@ -41,6 +41,7 @@ import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
import org.navalplanner.web.common.Util;
+import org.navalplanner.web.orders.components.TreeComponent;
import org.navalplanner.web.planner.order.IOrderPlanningGate;
import org.navalplanner.web.users.OrderAuthorizationController;
import org.springframework.beans.factory.annotation.Autowired;
@@ -173,9 +174,10 @@ public class OrderCRUDController extends GenericForwardComposer {
private void setupOrderElementTreeController(Component comp,
OrderElementController orderElementController) throws Exception {
- OrderElementTreeController controller = new OrderElementTreeController(
- orderModel, orderElementController);
- controller.doAfterCompose(editWindow.getFellowIfAny("orderElementTree"));
+ TreeComponent orderElementsTree = (TreeComponent) editWindow
+ .getFellow("orderElementTree");
+ orderElementsTree.useController(new OrderElementTreeController(
+ orderModel, orderElementController));
}
private IOrderElementModel getOrderElementModel() {
@@ -404,8 +406,9 @@ public class OrderCRUDController extends GenericForwardComposer {
}
private void clearEditWindow() {
- OrderElementTreeController controller = (OrderElementTreeController) editWindow.getVariable("orderElementTreeController", true);
- controller.clear();
+ TreeComponent treeComponent = (TreeComponent) editWindow
+ .getFellow("orderElementTree");
+ treeComponent.clear();
}
public void goToCreateForm() {
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 26c1846f2..198aee67c 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
@@ -293,7 +293,6 @@ public class OrderElementTreeController extends GenericForwardComposer {
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
messagesForUser = new MessagesForUser(messagesContainer);
- comp.setVariable("orderElementTreeController", this, true);
}
public class OrderElementTreeitemRenderer implements TreeitemRenderer,
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/components/TreeComponent.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/components/TreeComponent.java
new file mode 100644
index 000000000..559a7e78c
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/components/TreeComponent.java
@@ -0,0 +1,53 @@
+/*
+ * This file is part of ###PROJECT_NAME###
+ *
+ * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e
+ * Desenvolvemento Tecnolóxico de Galicia
+ *
+ * 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.components;
+
+import org.navalplanner.web.orders.OrderElementTreeController;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+
+/**
+ * macro component for order elements tree and similar pages
+ * @author Óscar González Fernández
+ */
+public class TreeComponent extends HtmlMacroComponent {
+
+ private static final String CONTROLLER_NAME = "treeController";
+
+ public void clear() {
+ OrderElementTreeController controller = (OrderElementTreeController) getVariable(
+ CONTROLLER_NAME, true);
+ controller.clear();
+ }
+
+ public void useController(OrderElementTreeController controller) {
+ doAfterComposeOnController(controller);
+ this.setVariable(CONTROLLER_NAME, controller, true);
+ }
+
+ private void doAfterComposeOnController(
+ OrderElementTreeController controller) {
+ try {
+ controller.doAfterCompose(this);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/navalplanner-webapp/src/main/webapp/orders/_edition.zul b/navalplanner-webapp/src/main/webapp/orders/_edition.zul
index 6519b54fd..bcdfc5b33 100644
--- a/navalplanner-webapp/src/main/webapp/orders/_edition.zul
+++ b/navalplanner-webapp/src/main/webapp/orders/_edition.zul
@@ -18,7 +18,8 @@
along with this program. If not, see .
-->
-
+
@@ -104,7 +105,7 @@
-
+
diff --git a/navalplanner-webapp/src/main/webapp/orders/_orderElementTree.zul b/navalplanner-webapp/src/main/webapp/orders/components/_orderElementTree.zul
similarity index 74%
rename from navalplanner-webapp/src/main/webapp/orders/_orderElementTree.zul
rename to navalplanner-webapp/src/main/webapp/orders/components/_orderElementTree.zul
index 5852ae1cd..2856a980b 100644
--- a/navalplanner-webapp/src/main/webapp/orders/_orderElementTree.zul
+++ b/navalplanner-webapp/src/main/webapp/orders/components/_orderElementTree.zul
@@ -18,30 +18,30 @@
along with this program. If not, see .
-->
-
+
+ onClick="treeController.addOrderElement();" />
+ onClick="treeController.createTemplate();" />
+ onClick="treeController.down();" />
+ onClick="treeController.up();" />
+ onClick="treeController.unindent();" />
+ onClick="treeController.indent();" />
+ onClick="treeController.removeOrderElement();" />
+ model="@{treeController.labels}"/>
+ onClick="treeController.onApplyFilter(event)"/>