ItEr13S13CUConfiguracionDeOrganizacionsDeTraballoConUnidadesTraballo: Added a listener to modify hours cell on parent nodes.

This commit is contained in:
Manuel Rego Casasnovas 2009-06-18 13:04:01 +02:00 committed by Javier Moran Rua
parent c8505ce369
commit 50507413c2
2 changed files with 36 additions and 3 deletions

View file

@ -103,6 +103,18 @@ public class TaskTreeModel extends SimpleTreeModel {
return getRootAsNode();
}
public List<SimpleTreeNode> getParents(SimpleTreeNode node) {
List<SimpleTreeNode> parents = new ArrayList<SimpleTreeNode>();
SimpleTreeNode current = node;
while (!current.equals(getRootAsNode())) {
current = getParent(current);
parents.add(current);
}
return parents;
}
public void indent(SimpleTreeNode nodeToIndent) {
SimpleTreeNode parentOfSelected = getParent(nodeToIndent);
int position = parentOfSelected.getChildren().indexOf(nodeToIndent);

View file

@ -1,8 +1,11 @@
package org.navalplanner.web.workorders;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.navalplanner.business.workorders.entities.ProjectWork;
@ -240,12 +243,14 @@ public class TaskWorksTreeController extends GenericForwardComposer {
public class TaskWorkTreeitemRenderer implements TreeitemRenderer {
private Map<SimpleTreeNode, Intbox> map = new HashMap<SimpleTreeNode, Intbox>();
public void TaskWorkTreeitemRenderer() {
}
@Override
public void render(Treeitem item, Object data) throws Exception {
SimpleTreeNode t = (SimpleTreeNode) data;
final SimpleTreeNode t = (SimpleTreeNode) data;
item.setValue(data);
final TaskWork taskWork = (TaskWork) t.getData();
if (snapshotOfOpenedNodes != null) {
@ -268,9 +273,11 @@ public class TaskWorksTreeController extends GenericForwardComposer {
}
}));
Treecell cellForHours = new Treecell();
Intbox intboxHours = new Intbox();
map.put(t, intboxHours);
if (taskWork instanceof TaskWorkLeaf) {
// If it's a leaf hours cell is editable
cellForHours.appendChild(bind(new Intbox(),
cellForHours.appendChild(bind(intboxHours,
new Getter<Integer>() {
@Override
@ -282,11 +289,25 @@ public class TaskWorksTreeController extends GenericForwardComposer {
@Override
public void set(Integer value) {
((TaskWorkLeaf) taskWork).setWorkHours(value);
List<SimpleTreeNode> parentNodes = getTasksTreeModel()
.getParents(t);
// Remove the last element becuase it's a
// ProjectWork node, not a TaskWork
parentNodes.remove(parentNodes.size() - 1);
for (SimpleTreeNode node : parentNodes) {
Intbox intbox = map.get(node);
TaskWork parentTaskWork = (TaskWork) node
.getData();
intbox.setValue(parentTaskWork
.getWorkHours());
}
}
}));
} else {
// If it's a container hours cell is not editable
cellForHours.appendChild(bind(new Intbox(),
cellForHours.appendChild(bind(intboxHours,
new Getter<Integer>() {
@Override