ItEr42S17CUGravacionModelosUnidadesTraballoItEr41S20: The Columns decide what is rendered.

This commit is contained in:
Óscar González Fernández 2010-01-05 20:22:05 +01:00
parent 29d6e7a886
commit 97767af969
5 changed files with 150 additions and 28 deletions

View file

@ -147,15 +147,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
}
@Override
protected void createCells(Treeitem item,
OrderElement currentOrderElement) {
addSchedulingStateCell(currentOrderElement);
addCodeCell(currentOrderElement);
addHoursCell(currentOrderElement);
addTaskNumberCell(currentOrderElement);
addInitDateCell(currentOrderElement);
addEndDateCell(currentOrderElement);
addOperationsCell(item, currentOrderElement);
protected void addDescriptionCell(OrderElement element) {
addTaskNumberCell(element);
}
private void addTaskNumberCell(final OrderElement orderElementForThisRow) {
@ -207,8 +200,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
return cssclass;
}
private void addSchedulingStateCell(
final OrderElement currentOrderElement) {
void addSchedulingStateCell(final OrderElement currentOrderElement) {
SchedulingStateToggler schedulingStateToggler = new SchedulingStateToggler(currentOrderElement
.getSchedulingState());
final Treecell cell = addCell(
@ -235,7 +227,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
schedulingStateToggler.afterCompose();
}
private void addCodeCell(final OrderElement orderElement) {
protected void addCodeCell(final OrderElement orderElement) {
Textbox textBoxCode = new Textbox();
Util.bind(textBoxCode, new Util.Getter<String>() {
@Override
@ -268,7 +260,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
addCell(textBoxCode);
}
private void addInitDateCell(final OrderElement currentOrderElement) {
void addInitDateCell(final OrderElement currentOrderElement) {
addCell(Util.bind(new Datebox(), new Util.Getter<Date>() {
@Override
@ -284,7 +276,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
}));
}
private void addEndDateCell(final OrderElement currentOrderElement) {
void addEndDateCell(final OrderElement currentOrderElement) {
addCell(Util.bind(new Datebox(), new Util.Getter<Date>() {
@Override
@ -300,7 +292,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
}));
}
private void addHoursCell(final OrderElement currentOrderElement) {
void addHoursCell(final OrderElement currentOrderElement) {
Intbox intboxHours = buildHoursIntboxFor(currentOrderElement);
hoursIntBoxByOrderElement.put(currentOrderElement, intboxHours);
addCell(intboxHours);
@ -363,7 +355,8 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
};
}
private void addOperationsCell(final Treeitem item,
@Override
protected void addOperationsCell(final Treeitem item,
final OrderElement currentOrderElement) {
addCell(createEditButton(currentOrderElement),
createTemplateButton(currentOrderElement),

View file

@ -24,7 +24,12 @@ import static org.navalplanner.web.I18nHelper._;
import java.util.ArrayList;
import java.util.List;
import org.navalplanner.business.orders.entities.OrderElement;
import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.web.orders.OrderElementTreeController.OrderElementTreeitemRenderer;
import org.navalplanner.web.tree.TreeComponent;
import org.navalplanner.web.tree.TreeController;
import org.zkoss.zul.Treeitem;
/**
* @author Óscar González Fernández <ogonzalez@igalia.com>
@ -32,15 +37,72 @@ import org.navalplanner.web.tree.TreeComponent;
*/
public class OrdersTreeComponent extends TreeComponent {
abstract class OrdersTreeColumn extends Column {
OrdersTreeColumn(String label, String cssClass, String tooltip) {
super(label, cssClass, tooltip);
}
OrdersTreeColumn(String label, String cssClass) {
super(label, cssClass);
}
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
OrderElementTreeitemRenderer treeRenderer = OrderElementTreeitemRenderer.class
.cast(renderer);
doCell(treeRenderer, OrderElement.class.cast(currentElement));
}
protected abstract void doCell(
OrderElementTreeitemRenderer treeRenderer,
OrderElement currentElement);
}
public List<Column> getColumns() {
List<Column> columns = new ArrayList<Column>();
columns.add(new Column(_("Scheduling state"), "scheduling_state"));
columns.add(new OrdersTreeColumn(_("Scheduling state"),
"scheduling_state") {
@Override
protected void doCell(OrderElementTreeitemRenderer treeRenderer,
OrderElement currentElement) {
treeRenderer.addSchedulingStateCell(currentElement);
}
});
columns.add(codeColumn);
columns.add(new Column(_("Hours"), "hours",
_("Total order element hours")));
columns.add(new OrdersTreeColumn(_("Hours"), "hours",
_("Total order element hours")) {
@Override
protected void doCell(OrderElementTreeitemRenderer treeRenderer,
OrderElement currentElement) {
treeRenderer.addHoursCell(currentElement);
}
});
columns.add(nameAndDescriptionColumn);
columns.add(new Column(_("Must start after"), "estimated_init"));
columns.add(new Column(_("Deadline"), "estimated_end"));
columns.add(new OrdersTreeColumn(_("Must start after"),
"estimated_init") {
@Override
protected void doCell(OrderElementTreeitemRenderer treeRenderer,
OrderElement currentElement) {
treeRenderer.addInitDateCell(currentElement);
}
});
columns.add(new OrdersTreeColumn(_("Deadline"), "estimated_end") {
@Override
protected void doCell(OrderElementTreeitemRenderer treeRenderer,
OrderElement currentElement) {
treeRenderer.addEndDateCell(currentElement);
}
});
columns.add(operationsColumn);
return columns;
}

View file

@ -24,7 +24,10 @@ import static org.navalplanner.web.I18nHelper._;
import java.util.ArrayList;
import java.util.List;
import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.web.tree.TreeComponent;
import org.navalplanner.web.tree.TreeController;
import org.zkoss.zul.Treeitem;
/**
* Tree component for templates <br />
@ -49,8 +52,22 @@ public class TemplatesTreeComponent extends TreeComponent {
List<Column> result = new ArrayList<Column>();
result.add(codeColumn);
result.add(nameAndDescriptionColumn);
result.add(new Column(_("Must start after"), "estimated_init"));
result.add(new Column(_("Deadline"), "estimated_end"));
result.add(new Column(_("Must start after"), "estimated_init") {
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
}
});
result.add(new Column(_("Deadline"), "estimated_end") {
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
}
});
result.add(operationsColumn);
return result;
}

View file

@ -23,9 +23,11 @@ import static org.navalplanner.web.I18nHelper._;
import java.util.List;
import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.web.orders.OrderElementTreeController;
import org.zkoss.zk.ui.HtmlMacroComponent;
import org.zkoss.zk.ui.util.Composer;
import org.zkoss.zul.Treeitem;
/**
* macro component for order elements tree and similar pages<br />
@ -35,7 +37,7 @@ public abstract class TreeComponent extends HtmlMacroComponent {
private static final String CONTROLLER_NAME = "treeController";
public static class Column {
public static abstract class Column {
private String label;
private String cssClass;
@ -63,13 +65,41 @@ public abstract class TreeComponent extends HtmlMacroComponent {
public String getTooltip() {
return tooltip;
}
public abstract <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement);
}
protected final Column codeColumn = new Column(_("Code"), "code");
protected final Column codeColumn = new Column(_("Code"), "code") {
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
renderer.addCodeCell(currentElement);
}
};
protected final Column nameAndDescriptionColumn = new Column(
_("Name and description"), "name");
_("Name and description"), "name") {
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
renderer.addDescriptionCell(currentElement);
}
};
protected final Column operationsColumn = new Column(_("Operations"),
"operations");
"operations") {
@Override
public <T extends ITreeNode<T>> void doCell(
TreeController<T>.Renderer renderer,
Treeitem item, T currentElement) {
renderer.addOperationsCell(item, currentElement);
}
};
public abstract List<Column> getColumns();
@ -81,6 +111,7 @@ public abstract class TreeComponent extends HtmlMacroComponent {
public void useController(TreeController<?> controller) {
doAfterComposeOnController(controller);
controller.setColumns(getColumns());
this.setVariable(CONTROLLER_NAME, controller, true);
}

View file

@ -21,6 +21,7 @@ package org.navalplanner.web.tree;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
@ -29,6 +30,7 @@ import org.navalplanner.business.trees.ITreeNode;
import org.navalplanner.web.common.IMessagesForUser;
import org.navalplanner.web.common.Level;
import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.tree.TreeComponent.Column;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.DropEvent;
import org.zkoss.zk.ui.event.EventListener;
@ -227,6 +229,8 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
protected Button btnNew, btnDown, btnUp, btnUnindent, btnIndent, btnDelete;
private List<Column> columns;
protected TreeViewStateSnapshot getSnapshotOfOpenedNodes() {
return snapshotOfOpenedNodes;
@ -286,7 +290,11 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
onDropMoveFromDraggedToTarget();
}
protected abstract void createCells(Treeitem item, T currentElement);
private void createCells(Treeitem item, T currentElement) {
for (Column each : columns) {
each.doCell(this, item, currentElement);
}
}
private void applySnapshot(final Treeitem item) {
if (snapshotOfOpenedNodes != null) {
@ -336,6 +344,13 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
});
}
protected abstract void addCodeCell(final T element);
protected abstract void addDescriptionCell(final T element);
protected abstract void addOperationsCell(final Treeitem item,
final T currentElement);
@Override
public void doCatch(Throwable ex) throws Throwable {
@ -352,4 +367,8 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
}
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
}