public void childAdded(NodeChangeEvent evt) { NodeChangeListener [] listeners; Preferences childNode; synchronized (tree.treeLock()) { String childName = evt.getChild().name(); if (removed || removedChildren.contains(childName)) { return; } childNode = children.get(childName); if (childNode != null) { // swap delegates ((ProxyPreferencesImpl) childNode).changeDelegate(evt.getChild()); } else { childNode = node(evt.getChild().name()); } listeners = nodeListeners.toArray(new NodeChangeListener[nodeListeners.size()]); } NodeChangeEvent myEvt = null; for(NodeChangeListener l : listeners) { if (myEvt == null) { myEvt = new NodeChangeEvent(this, childNode); } l.childAdded(evt); } }
public void childRemoved(NodeChangeEvent evt) { NodeChangeListener [] listeners; Preferences childNode; synchronized (tree.treeLock()) { String childName = evt.getChild().name(); if (removed || removedChildren.contains(childName)) { return; } childNode = children.get(childName); if (childNode != null) { // swap delegates ((ProxyPreferencesImpl) childNode).changeDelegate(null); } else { // nobody has accessed the child yet return; } listeners = nodeListeners.toArray(new NodeChangeListener[nodeListeners.size()]); } NodeChangeEvent myEvt = null; for(NodeChangeListener l : listeners) { if (myEvt == null) { myEvt = new NodeChangeEvent(this, childNode); } l.childAdded(evt); } }
children.remove(nce.getChild().name());