From b1b6c105ddc3a5fe732ad04aa0312032e87dd06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 1 Mar 2010 19:20:36 +0100 Subject: [PATCH] ItEr49S04ValidacionEProbasFuncionaisItEr48S04: [Bug #357] Fixing bug. The problem was that when children are added or removed, the parent was not being redrawn at the tree. Stale date was being shown. --- .../main/java/org/zkoss/ganttz/util/MutableTreeModel.java | 8 ++++++++ .../main/java/org/navalplanner/web/tree/EntitiesTree.java | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/MutableTreeModel.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/MutableTreeModel.java index 1a62fc520..e408a1756 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/MutableTreeModel.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/MutableTreeModel.java @@ -278,6 +278,14 @@ public class MutableTreeModel extends AbstractTreeModel { add(parent, children); } + public void sendContentsChangedEventFor(T object) { + Node node = find(object); + T parent = getParent(object); + Node parentNode = find(parent); + int position = parentNode.getIndexOf(node); + fireEvent(parent, position, position, TreeDataEvent.CONTENTS_CHANGED); + } + public void add(T parent, int position, Collection children) { add(find(parent), position, wrap(children)); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/tree/EntitiesTree.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/tree/EntitiesTree.java index 7aee35022..26aa7badb 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/tree/EntitiesTree.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/tree/EntitiesTree.java @@ -147,6 +147,11 @@ public abstract class EntitiesTree> { ITreeParentNode container = turnIntoContainerIfNeeded(destinationNode); container.add(position, elementToAdd.getThis()); addToTree(container, position, elementToAdd); + if (!tree.isRoot(container.getThis())) { + // the destination node might have data that depends on its + // children, so it should be redrawn + tree.sendContentsChangedEventFor(container.getThis()); + } added(destinationNode, elementToAdd, container); } @@ -204,6 +209,9 @@ public abstract class EntitiesTree> { T destination = tree.getParent(parent); move(nodeToUnindent, destination, getChildren(destination).indexOf( parent) + 1); + if (!tree.isRoot(parent)) { + tree.sendContentsChangedEventFor(parent); + } } private class WithPosition {