1 19 package org.netbeans.modules.xml.tax.beans; 20 21 import java.beans.*; 22 import java.util.*; 23 24 import org.netbeans.tax.*; 25 26 39 public class TreeObjectListProxyListener implements PropertyChangeListener { 40 41 private final TreeObjectList list; 42 private PropertyChangeSupport changeSupport; 43 44 45 public TreeObjectListProxyListener(TreeObjectList list) { 46 this.list = list; 47 list.addPropertyChangeListener(this); 48 for (Iterator it = list.iterator(); it.hasNext();) { 49 TreeObject next = (TreeObject) it.next(); 50 if (next != null) next.addPropertyChangeListener(this); 51 } 52 } 53 54 57 public void propertyChange(final PropertyChangeEvent e) { 58 String name = e.getPropertyName(); 59 Object source = e.getSource(); 60 61 if (source == list) { 62 if (TreeObjectList.PROP_CONTENT_INSERT.equals(name)) { 63 TreeObject newObject = (TreeObject)e.getNewValue(); 64 if (newObject != null) newObject.addPropertyChangeListener(this); 65 } else if (TreeObjectList.PROP_CONTENT_REMOVE.equals(name)) { 66 TreeObject oldObject = (TreeObject)e.getOldValue(); 67 if (oldObject != null) oldObject.removePropertyChangeListener(this); 68 } 69 } 70 71 forward(e); 72 } 73 74 76 private void forward(final PropertyChangeEvent e) { 77 if (changeSupport != null) 78 changeSupport.firePropertyChange(e); 79 } 80 81 public void addPropertyChangeListener(PropertyChangeListener l) { 82 synchronized (this) { 83 if (changeSupport == null) 84 changeSupport = new PropertyChangeSupport(this); 85 } 86 changeSupport.addPropertyChangeListener(l); 87 } 88 89 public void removePropertyChangeListener(PropertyChangeListener l) { 90 if (changeSupport != null) 91 changeSupport.removePropertyChangeListener(l); 92 } 93 } 94 | Popular Tags |