ItEr42S17CUGravacionModelosUnidadesTraballoItEr41S20: Template tree is rendered now
This commit is contained in:
parent
9fdfc305e9
commit
474085dc1c
3 changed files with 171 additions and 14 deletions
|
|
@ -24,7 +24,9 @@ import static org.navalplanner.web.I18nHelper._;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
import org.navalplanner.business.trees.ITreeNode;
|
||||
import org.navalplanner.web.templates.TemplatesTreeController.TemplatesTreeRenderer;
|
||||
import org.navalplanner.web.tree.TreeComponent;
|
||||
import org.navalplanner.web.tree.TreeController;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
|
|
@ -35,6 +37,28 @@ import org.zkoss.zul.Treeitem;
|
|||
*/
|
||||
public class TemplatesTreeComponent extends TreeComponent {
|
||||
|
||||
private abstract class TemplatesTreeColumn extends Column {
|
||||
|
||||
TemplatesTreeColumn(String label, String cssClass, String tooltip) {
|
||||
super(label, cssClass, tooltip);
|
||||
}
|
||||
|
||||
TemplatesTreeColumn(String label, String cssClass) {
|
||||
super(label, cssClass);
|
||||
}
|
||||
|
||||
public final <T extends ITreeNode<T>> void doCell(
|
||||
TreeController<T>.Renderer renderer,
|
||||
Treeitem item, T currentElement) {
|
||||
doCell(TemplatesTreeRenderer.class.cast(renderer), item,
|
||||
OrderElementTemplate.class.cast(currentElement));
|
||||
}
|
||||
|
||||
protected abstract void doCell(TemplatesTreeRenderer renderer,
|
||||
Treeitem item, OrderElementTemplate currentElement);
|
||||
|
||||
}
|
||||
|
||||
public String getAddElementLabel() {
|
||||
return _("New Template element");
|
||||
}
|
||||
|
|
@ -50,23 +74,38 @@ public class TemplatesTreeComponent extends TreeComponent {
|
|||
@Override
|
||||
public List<Column> getColumns() {
|
||||
List<Column> result = new ArrayList<Column>();
|
||||
result.add(new TemplatesTreeColumn("", "") {
|
||||
|
||||
@Override
|
||||
protected void doCell(TemplatesTreeRenderer renderer,
|
||||
Treeitem item, OrderElementTemplate currentElement) {
|
||||
renderer.addFirstCell(currentElement);
|
||||
}
|
||||
|
||||
});
|
||||
result.add(codeColumn);
|
||||
result.add(nameAndDescriptionColumn);
|
||||
result.add(new Column(_("Must start after"), "estimated_init") {
|
||||
result.add(new TemplatesTreeColumn(
|
||||
_("Must start after (days since beginning project)"),
|
||||
"estimated_init") {
|
||||
|
||||
@Override
|
||||
public <T extends ITreeNode<T>> void doCell(
|
||||
TreeController<T>.Renderer renderer,
|
||||
Treeitem item, T currentElement) {
|
||||
protected void doCell(TemplatesTreeRenderer renderer,
|
||||
Treeitem item, OrderElementTemplate currentElement) {
|
||||
renderer.addInitCell(currentElement);
|
||||
}
|
||||
|
||||
});
|
||||
result.add(new Column(_("Deadline"), "estimated_end") {
|
||||
result.add(new TemplatesTreeColumn(
|
||||
_("Deadline (days since beggining project)"),
|
||||
"estimated_end") {
|
||||
|
||||
@Override
|
||||
public <T extends ITreeNode<T>> void doCell(
|
||||
TreeController<T>.Renderer renderer,
|
||||
Treeitem item, T currentElement) {
|
||||
protected void doCell(TemplatesTreeRenderer renderer,
|
||||
Treeitem item, OrderElementTemplate currentElement) {
|
||||
renderer.addEndCell(currentElement);
|
||||
}
|
||||
|
||||
});
|
||||
result.add(operationsColumn);
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -19,9 +19,16 @@
|
|||
*/
|
||||
package org.navalplanner.web.templates;
|
||||
|
||||
import org.hibernate.validator.ClassValidator;
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.common.Util.Getter;
|
||||
import org.navalplanner.web.common.Util.Setter;
|
||||
import org.navalplanner.web.tree.EntitiesTree;
|
||||
import org.navalplanner.web.tree.TreeController;
|
||||
import org.zkoss.zul.Intbox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Textbox;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.TreeitemRenderer;
|
||||
|
||||
|
|
@ -32,6 +39,106 @@ import org.zkoss.zul.TreeitemRenderer;
|
|||
public class TemplatesTreeController extends
|
||||
TreeController<OrderElementTemplate> {
|
||||
|
||||
final class TemplatesTreeRenderer extends Renderer {
|
||||
|
||||
private final ClassValidator<OrderElementTemplate> validator = new ClassValidator<OrderElementTemplate>(
|
||||
OrderElementTemplate.class);
|
||||
|
||||
void addFirstCell(OrderElementTemplate currentElement) {
|
||||
int[] path = getModel().getPath(currentElement);
|
||||
String cssClass = "depth_" + path.length;
|
||||
Label label = new Label();
|
||||
label.setValue("");
|
||||
label.setSclass(cssClass);
|
||||
addCell(label);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addOperationsCell(Treeitem item,
|
||||
OrderElementTemplate currentElement) {
|
||||
addCell(new Label());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addDescriptionCell(final OrderElementTemplate element) {
|
||||
Textbox textBox = Util.bind(new Textbox(),
|
||||
new Util.Getter<String>() {
|
||||
|
||||
@Override
|
||||
public String get() {
|
||||
return element.getName();
|
||||
}
|
||||
}, new Util.Setter<String>() {
|
||||
|
||||
@Override
|
||||
public void set(String value) {
|
||||
element.setName(value);
|
||||
}
|
||||
});
|
||||
|
||||
addCell(textBox);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addCodeCell(final OrderElementTemplate element) {
|
||||
Textbox textBoxCode = new Textbox();
|
||||
Util.bind(textBoxCode, new Util.Getter<String>() {
|
||||
@Override
|
||||
public String get() {
|
||||
return element.getCode();
|
||||
}
|
||||
}, new Util.Setter<String>() {
|
||||
|
||||
@Override
|
||||
public void set(String value) {
|
||||
element.setCode(value);
|
||||
}
|
||||
});
|
||||
addCell(textBoxCode);
|
||||
}
|
||||
|
||||
void addInitCell(final OrderElementTemplate currentElement) {
|
||||
final Intbox intbox = new Intbox();
|
||||
Util.bind(intbox, new Getter<Integer>() {
|
||||
|
||||
@Override
|
||||
public Integer get() {
|
||||
return currentElement.getStartAsDaysFromBeginning();
|
||||
}
|
||||
}, new Setter<Integer>() {
|
||||
|
||||
@Override
|
||||
public void set(Integer value) {
|
||||
checkInvalidValues(validator, "startAsDaysFromBeginning",
|
||||
value, intbox);
|
||||
currentElement.setStartAsDaysFromBeginning(value);
|
||||
}
|
||||
});
|
||||
addCell(intbox);
|
||||
}
|
||||
|
||||
void addEndCell(final OrderElementTemplate currentElement) {
|
||||
final Intbox intbox = new Intbox();
|
||||
Util.bind(intbox, new Getter<Integer>() {
|
||||
|
||||
@Override
|
||||
public Integer get() {
|
||||
return currentElement.getDeadlineAsDaysFromBeginning();
|
||||
}
|
||||
}, new Setter<Integer>() {
|
||||
|
||||
@Override
|
||||
public void set(Integer value) {
|
||||
checkInvalidValues(validator,
|
||||
"deadlineAsDaysFromBeginning", value, intbox);
|
||||
currentElement.setDeadlineAsDaysFromBeginning(value);
|
||||
}
|
||||
});
|
||||
addCell(intbox);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private final IOrderTemplatesModel model;
|
||||
|
||||
public TemplatesTreeController(IOrderTemplatesModel model) {
|
||||
|
|
@ -50,12 +157,7 @@ public class TemplatesTreeController extends
|
|||
|
||||
@Override
|
||||
public TreeitemRenderer getRenderer() {
|
||||
return new TreeitemRenderer() {
|
||||
|
||||
@Override
|
||||
public void render(Treeitem item, Object data) throws Exception {
|
||||
}
|
||||
};
|
||||
return new TemplatesTreeRenderer();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -26,16 +26,21 @@ import java.util.Set;
|
|||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.ClassValidator;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.templates.entities.OrderElementTemplate;
|
||||
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.WrongValueException;
|
||||
import org.zkoss.zk.ui.event.DropEvent;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Intbox;
|
||||
import org.zkoss.zul.RendererCtrl;
|
||||
import org.zkoss.zul.Tree;
|
||||
import org.zkoss.zul.TreeModel;
|
||||
|
|
@ -290,6 +295,17 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
onDropMoveFromDraggedToTarget();
|
||||
}
|
||||
|
||||
protected void checkInvalidValues(
|
||||
ClassValidator<OrderElementTemplate> validator,
|
||||
String property, Integer value, final Intbox component) {
|
||||
InvalidValue[] invalidValues = validator.getPotentialInvalidValues(
|
||||
property, value);
|
||||
if (invalidValues.length > 0) {
|
||||
throw new WrongValueException(component, invalidValues[0]
|
||||
.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void createCells(Treeitem item, T currentElement) {
|
||||
for (Column each : columns) {
|
||||
each.doCell(this, item, currentElement);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue