KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > kawa > models > Model


1 package gnu.kawa.models;
2
3 /** Abstract class for Viewable objects, with notification/listener support. */
4
5 public abstract class Model implements Viewable
6 {
7   transient WeakListener listeners;
8
9   /*
10   public abstract Object getProperty (Object key);
11
12   public abstract void setProperty (Object key, Object value);
13   */

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 JavaDoc key)
27   {
28     WeakListener prev = null;
29     WeakListener wlistener = listeners;
30     while (wlistener != null)
31       {
32         Object JavaDoc 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