KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > rero > client > WatchableData


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