ItEr41S20CUGravacionModelosUnidadesTraballoItEr40S25: Introducing macro component for order elements tree

This commit is contained in:
Óscar González Fernández 2010-01-03 17:18:36 +01:00
parent 028c26afb9
commit 0d8250e6b0
5 changed files with 79 additions and 23 deletions

View file

@ -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() {

View file

@ -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,

View file

@ -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 <http://www.gnu.org/licenses/>.
*/
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<br />
* @author Óscar González Fernández <ogonzalez@igalia.com>
*/
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);
}
}
}

View file

@ -18,7 +18,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<?component name="orderElementTree" inline="true" macroURI="_orderElementTree.zul"?>
<?component name="orderElementTree" macroURI="components/_orderElementTree.zul"
class="org.navalplanner.web.orders.components.TreeComponent"?>
<?component name="listOrderElementHours" inline="true" macroURI="_listOrderElementHours.zul"?>
<?component name="listOrderElementAdvances" inline="true" macroURI="_listOrderElementAdvances.zul"?>
<?component name="listOrderElementLabels" inline="true" macroURI="_listOrderElementLabels.zul"?>
@ -104,7 +105,7 @@
</grid>
</tabpanel>
<tabpanel sclass="orderelements-tab">
<orderElementTree />
<orderElementTree id="orderElementTree"/>
</tabpanel>
<tabpanel>
<listOrderElementHours id="orderElementHours" />

View file

@ -18,30 +18,30 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<vbox id="orderElementTree">
<vbox>
<vbox>
<hbox>
<button id="btnNew" label="${i18n:_('New order element')}"
onClick="orderElementTreeController.addOrderElement();" />
onClick="treeController.addOrderElement();" />
<button label="${i18n:_('Create Template')}"
onClick="orderElementTreeController.createTemplate();" />
onClick="treeController.createTemplate();" />
<button id="btnDown" label="${i18n:_('Down')}"
onClick="orderElementTreeController.down();" />
onClick="treeController.down();" />
<button id="btnUp" label="${i18n:_('Up')}"
onClick="orderElementTreeController.up();" />
onClick="treeController.up();" />
<button id="btnUnindent" label="${i18n:_('Unindent')}"
onClick="orderElementTreeController.unindent();" />
onClick="treeController.unindent();" />
<button id="btnIndent" label="${i18n:_('Indent')}"
onClick="orderElementTreeController.indent();" />
onClick="treeController.indent();" />
<button id="btnDelete" label="${i18n:_('Delete order element')}"
onClick="orderElementTreeController.removeOrderElement();" />
onClick="treeController.removeOrderElement();" />
</hbox>
</vbox>
<vbox>
<hbox>
<!-- Filter by label -->
<combobox id="cbFilterType" value="${i18n:_('Show all')}"
onChange="orderElementTreeController.onShowAll(event)"
onChange="treeController.onShowAll(event)"
constraint="no empty:${i18n:_('cannot be null or empty')}"
readonly="true" >
<comboitem label="${i18n:_('Show all')}"
@ -50,17 +50,17 @@
description="${i18n:_('Filter all order elements by label')}" />
</combobox>
<bandboxSearch id="bdFilter" finder="LabelBandboxFinder"
model="@{orderElementTreeController.labels}"/>
model="@{treeController.labels}"/>
<button label="${i18n:_('Filter')}" style="margin-top: -4px"
onClick="orderElementTreeController.onApplyFilter(event)"/>
onClick="treeController.onApplyFilter(event)"/>
</hbox>
</vbox>
<vbox>
<tree id="tree" width="1050" multiple="true" droppable="true"
onDrop="orderElementTreeController.move(self, event.dragged)"
onSelect="orderElementTreeController.updateControlButtons(event)"
model="@{orderElementTreeController.orderElementTreeModel}"
treeitemRenderer="@{orderElementTreeController.renderer}" pageSize="10"
onDrop="treeController.move(self, event.dragged)"
onSelect="treeController.updateControlButtons(event)"
model="@{treeController.orderElementTreeModel}"
treeitemRenderer="@{treeController.renderer}" pageSize="10"
sclass="orderTree"
zclass="z-dottree">
<treecols sizable="true">