From 50507413c251d611af10986526bc2f7f1f24d409 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 18 Jun 2009 13:04:01 +0200 Subject: [PATCH] ItEr13S13CUConfiguracionDeOrganizacionsDeTraballoConUnidadesTraballo: Added a listener to modify hours cell on parent nodes. --- .../web/workorders/TaskTreeModel.java | 12 +++++++++ .../workorders/TaskWorksTreeController.java | 27 ++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java index c38b4d1b0..8b6dcbb3d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskTreeModel.java @@ -103,6 +103,18 @@ public class TaskTreeModel extends SimpleTreeModel { return getRootAsNode(); } + public List getParents(SimpleTreeNode node) { + List parents = new ArrayList(); + 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); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java index 75fed8b6a..5a6528563 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/workorders/TaskWorksTreeController.java @@ -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 map = new HashMap(); + 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() { @Override @@ -282,11 +289,25 @@ public class TaskWorksTreeController extends GenericForwardComposer { @Override public void set(Integer value) { ((TaskWorkLeaf) taskWork).setWorkHours(value); + + List 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() { @Override