1 package rero.client; 2 3 import javax.swing.event.*; 4 import java.util.*; 5 6 import java.lang.ref.*; 7 8 public class WatchableData 9 { 10 protected LinkedList listeners; 11 protected ChangeEvent eventObject; 12 13 public WatchableData() 14 { 15 listeners = new LinkedList(); 16 eventObject = new ChangeEvent(this); 17 } 18 19 public void addChangeListener(ChangeListener l) 20 { 21 listeners.add(new WeakReference(l)); 22 } 23 24 public void removeChangeListener(ChangeListener l) 25 { 26 listeners.remove(l); 27 } 28 29 public void fireEvent() 30 { 31 ListIterator i = listeners.listIterator(); 32 while (i.hasNext()) 33 { 34 ChangeListener temp = (ChangeListener)(((WeakReference)i.next()).get()); 35 36 if (temp == null) 37 i.remove(); 38 else 39 temp.stateChanged(eventObject); 40 } 41 } 42 } 43 | Popular Tags |