OSDN Git Service

2003-06-24 Michael Koch <konqueror@gmx.de>
[pf3gnuchains/gcc-fork.git] / libjava / javax / swing / AbstractListModel.java
1 /* AbstractListModel.java --
2    Copyright (C) 2002 Free Software Foundation, Inc.
3
4 This file is part of GNU Classpath.
5
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 02111-1307 USA.
20
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37
38 package javax.swing;
39
40 import java.io.Serializable;
41 import java.util.EventListener;
42 import javax.swing.event.EventListenerList;
43 import javax.swing.event.ListDataListener;
44 import javax.swing.event.ListDataEvent;
45
46 /**
47  * AbstractListModel
48  * A2uthor      Ronald Veldema
49  * @author      Andrew Selkirk
50  * @version     1.0
51  */
52 public abstract class AbstractListModel
53   implements ListModel, Serializable
54 {
55   static final long serialVersionUID = -3285184064379168730L;
56
57   /**
58    * listenerList
59    */
60   protected EventListenerList listenerList = new EventListenerList ();
61   
62   /**
63    * Constructor AbstractListModel
64    */
65   public AbstractListModel ()
66   {
67   }
68
69   /**
70    * addListDataListener
71    * @param listener TODO
72    */
73   public void addListDataListener(ListDataListener listener) 
74   {
75     listenerList.add (ListDataListener.class, listener);
76   }
77
78   /**
79    * removeListDataListener
80    * @param listener TODO
81    */
82   public void removeListDataListener(ListDataListener listener)
83   {
84     listenerList.remove (ListDataListener.class, listener);
85   }
86
87   /**
88    * fireContentsChanged
89    * @param source TODO
90    * @param startIndex TODO
91    * @param endIndex TODO
92    */
93   protected void fireContentsChanged(Object source, int startIndex, int endIndex)
94   {
95     // Variables
96     ListDataEvent event;
97     ListDataListener[] listeners;
98     ListDataListener listener;
99     int index;
100
101     // Create Event
102     event = new ListDataEvent(source, ListDataEvent.CONTENTS_CHANGED,
103     startIndex, endIndex);
104
105     // Get Listeners
106     listeners = getListDataListeners ();
107
108     // Process Listeners
109     for (index = 0; index < listeners.length; index++)
110       {
111         listener = (ListDataListener) listeners[index];
112         listener.contentsChanged(event);
113       }
114   }
115
116   /**
117    * fireIntervalAdded
118    * @param source TODO
119    * @param startIndex TODO
120    * @param endIndex TODO
121    */
122   protected void fireIntervalAdded (Object source, int startIndex, int endIndex)
123   {
124     // Variables
125     ListDataEvent event;
126     ListDataListener[] listeners;
127     ListDataListener listener;
128     int index;
129
130     // Create Event
131     event = new ListDataEvent (source, ListDataEvent.INTERVAL_ADDED, startIndex,
132                                endIndex);
133
134     // Get Listeners
135     listeners = getListDataListeners ();
136
137     // Process Listeners
138     for (index = 0; index < listeners.length; index++)
139       {
140         listener = listeners [index];
141         listener.intervalAdded (event);
142       }
143   }
144
145   /**
146    * fireIntervalRemoved
147    * @param source TODO
148    * @param startIndex TODO
149    * @param endIndex TODO
150    */
151   protected void fireIntervalRemoved (Object source, int startIndex,
152                                      int endIndex)
153   {
154     // Variables
155     ListDataEvent event;
156     ListDataListener[] listeners;
157     ListDataListener listener;
158     int index;
159
160     // Create Event
161     event = new ListDataEvent (source, ListDataEvent.INTERVAL_REMOVED,
162                                startIndex, endIndex);
163
164     // Get Listeners
165     listeners = getListDataListeners ();
166
167     // Process Listeners
168     for (index = 0; index < listeners.length; index++)
169       {
170         listener = listeners [index];
171         listener.intervalRemoved (event);
172       }
173   }
174
175   /**
176    * getListeners
177    * @param listenerType TODO
178    * @returns EventListener[]
179    */
180   public EventListener[] getListeners (Class listenerType)
181   {
182     return listenerList.getListeners (listenerType);
183   }
184
185   /**
186    * getListDataListeners
187    */
188   public ListDataListener[] getListDataListeners ()
189   {
190     return (ListDataListener[]) getListeners (ListDataListener.class);
191   }
192 }