1 package gnu.kawa.models; 2 3 4 5 public abstract class Model implements Viewable 6 { 7 transient WeakListener listeners; 8 9 14 15 public void addListener (ModelListener listener) 16 { 17 listeners = new WeakListener(listener, listeners); 18 } 19 20 public void addListener (WeakListener listener) 21 { 22 listener.next = listeners; 23 listeners = listener; 24 } 25 26 public void notifyListeners (String key) 27 { 28 WeakListener prev = null; 29 WeakListener wlistener = listeners; 30 while (wlistener != null) 31 { 32 Object listener = wlistener.get(); 33 WeakListener next = wlistener.next; 34 if (listener == null) 35 { 36 if (prev != null) 37 prev.next = next; 38 } 39 else 40 { 41 prev = wlistener; 42 wlistener.update(listener, this, key); 43 } 44 wlistener = next; 45 } 46 } 47 } 48 | Popular Tags |