OSDN Git Service

Initial revision
[pf3gnuchains/gcc-fork.git] / libjava / classpath / javax / swing / DefaultSingleSelectionModel.java
1 /* DefaultSingleSelectionModel.java --
2    Copyright (C) 2002, 2004  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., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 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
39 package javax.swing;
40
41 import java.io.Serializable;
42 import java.util.EventListener;
43
44 import javax.swing.event.ChangeEvent;
45 import javax.swing.event.ChangeListener;
46 import javax.swing.event.EventListenerList;
47
48 /**
49  * DefaultSingleSelectionModel
50  *
51  * @author Andrew Selkirk
52  */
53 public class DefaultSingleSelectionModel
54   implements SingleSelectionModel, Serializable
55 {
56   private static final long serialVersionUID = 3676229404753786004L;
57
58   /**
59    * changeEvent
60    */
61   protected transient ChangeEvent changeEvent = new ChangeEvent(this);
62
63   /**
64    * listenerList
65    */
66   protected EventListenerList listenerList = new EventListenerList();
67
68   /**
69    * index
70    */
71   private int index = -1;
72
73   /**
74    * Constructor DefaultSingleSelectionModel
75    */
76   public DefaultSingleSelectionModel()
77   {
78     // Do nothing.
79   }
80
81   /**
82    * getSelectedIndex
83    * @return int
84    */
85   public int getSelectedIndex()
86   {
87     return index;
88   }
89
90   /**
91    * setSelectedIndex
92    * @param index TODO
93    */
94   public void setSelectedIndex(int index)
95   {
96     this.index = index;
97     fireStateChanged();
98   }
99
100   /**
101    * clearSelection
102    */
103   public void clearSelection()
104   {
105     index = -1;
106     fireStateChanged();
107   }
108
109   /**
110    * isSelected
111    * @return boolean
112    */
113   public boolean isSelected()
114   {
115     return index != -1;
116   }
117
118   /**
119    * addChangeListener
120    *
121    * @param listener the listener to add
122    */
123   public void addChangeListener(ChangeListener listener)
124   {
125     listenerList.add(ChangeListener.class, listener);
126   }
127
128   /**
129    * removeChangeListener
130    *
131    * @param listener the listener to remove
132    */
133   public void removeChangeListener(ChangeListener listener)
134   {
135     listenerList.remove(ChangeListener.class, listener);
136   }
137
138   /**
139    * fireStateChanged
140    */
141   protected void fireStateChanged()
142   {
143     ChangeListener[] listeners = getChangeListeners();
144
145     for (int i = 0; i < listeners.length; i++)
146       listeners[i].stateChanged(changeEvent);
147   }
148
149   /**
150    * getListeners
151    *
152    * @param listenerClass the type fo listener
153    *
154    * @return an array of listeners
155    *
156    * @since 1.3
157    */
158   public EventListener[] getListeners(Class listenerClass)
159   {
160     return listenerList.getListeners(listenerClass);
161   }
162
163   /**
164    * getChangeListeners
165    *
166    * @since 1.4
167    */
168   public ChangeListener[] getChangeListeners()
169   {
170     return (ChangeListener[]) getListeners(ChangeListener.class);
171   }
172 }