diff -r e6026e9752ae openide.explorer/src/org/openide/explorer/view/VisualizerChildren.java --- a/openide.explorer/src/org/openide/explorer/view/VisualizerChildren.java Tue Aug 05 14:06:00 2008 +0200 +++ b/openide.explorer/src/org/openide/explorer/view/VisualizerChildren.java Thu Aug 07 14:18:55 2008 +0200 @@ -75,6 +75,11 @@ * and fires info to all listeners. */ public void added(VisualizerEvent.Added ev) { + if (this != parent.getVisChildren()) { + // children were replaced (e.g. VisualizerNode.naturalOrder()), quit processing event + return; + } + ListIterator it = list.listIterator(); boolean empty = !it.hasNext(); @@ -125,6 +130,11 @@ * and fires info to all listeners. */ public void removed(VisualizerEvent.Removed ev) { + if (this != parent.getVisChildren()) { + // children were replaced (e.g. VisualizerNode.naturalOrder()), quit processing event + return; + } + List remList = Arrays.asList(ev.getRemovedNodes()); Iterator it = list.iterator(); @@ -199,6 +209,11 @@ * and fires info to all listeners. */ public void reordered(VisualizerEvent.Reordered ev) { + if (this != parent.getVisChildren()) { + // children were replaced (e.g. VisualizerNode.naturalOrder()), quit processing event + return; + } + if (ev.getComparator() != null) { //#37802 ev.array = reorderByComparator(ev.getComparator()); diff -r e6026e9752ae openide.explorer/src/org/openide/explorer/view/VisualizerNode.java --- a/openide.explorer/src/org/openide/explorer/view/VisualizerNode.java Tue Aug 05 14:06:00 2008 +0200 +++ b/openide.explorer/src/org/openide/explorer/view/VisualizerNode.java Thu Aug 07 14:18:55 2008 +0200 @@ -236,6 +236,11 @@ * @return list of VisualizerNode objects */ public List getChildren() { + VisualizerChildren ch = getVisChildren(); + return (ch == null) ? Collections.emptyList() : ch.list; + } + + VisualizerChildren getVisChildren() { VisualizerChildren ch = children.get(); if ((ch == null) && !node.isLeaf()) { @@ -263,8 +268,7 @@ // this assert is too expensive during the performance tests: assert (ch == null) || !ch.list.contains(null) : ch.list + " from " + node; } - - return (ch == null) ? Collections.emptyList() : ch.list; + return ch; } //