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 {