OSDN Git Service

2004-11-30 Thomas Fitzsimmons <fitzsim@redhat.com>
[pf3gnuchains/gcc-fork.git] / libjava / javax / swing / InputMap.java
1 /* InputMap.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., 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.IOException;
41 import java.io.ObjectInputStream;
42 import java.io.ObjectOutputStream;
43 import java.io.Serializable;
44 import java.util.Arrays;
45 import java.util.HashMap;
46 import java.util.HashSet;
47 import java.util.Map;
48 import java.util.Set;
49
50
51 /**
52  * @author      Andrew Selkirk
53  * @author Michael Koch
54  *
55  * @since 1.3
56  */
57 public class InputMap
58   implements Serializable
59 {
60   private static final long serialVersionUID = -5429059542008604257L;
61
62         /**
63          * inputMap
64          */
65         private Map inputMap = new HashMap();
66
67         /**
68          * parent
69          */
70   private InputMap parent;
71
72         /**
73    * Creates a new <code>InputMap</code> instance.
74          */
75   public InputMap()
76   {
77                 // TODO
78   }
79
80         /**
81    * Returns the binding for keystroke.
82    *
83    * @param key the key of the enty
84    *
85    * @return the binding associated with keystroke may be null
86          */
87   public Object get(KeyStroke keystroke)
88   {
89     Object result = inputMap.get(keystroke);
90
91     if (result == null && parent != null)
92       result = parent.get(keystroke);
93     return result;
94   }
95
96         /**
97    * Puts a new entry into the <code>InputMap</code>.
98    * If actionMapKey is null an existing entry will be removed.
99    *
100    * @param keystroke the keystroke for the entry
101    * @param actionMapKey the action.
102          */
103   public void put(KeyStroke keystroke, Object actionMapKey)
104   {
105     if (actionMapKey == null)
106                         inputMap.remove(keystroke);
107     else
108                         inputMap.put(keystroke, actionMapKey);
109   }
110
111         /**
112    * Remove an entry from the <code>InputMap</code>.
113    *
114    * @param key the key of the entry to remove
115          */
116   public void remove(KeyStroke keystroke)
117   {
118                 inputMap.remove(keystroke);
119   }
120
121         /**
122    * Returns the parent of this <code>InputMap</code>.
123    *
124    * @return the parent, may be null.
125          */
126   public InputMap getParent()
127   {
128                 return parent;
129   }
130
131         /**
132    * Sets a parent for this <code>InputMap</code>.
133    *
134    * @param parentMap the new parent
135          */
136   public void setParent(InputMap parentMap)
137   {
138                 parent = parentMap;
139   }
140
141         /**
142    * Returns the number of entries in this <code>InputMap</code>.
143    *
144    * @return the number of entries
145          */
146   public int size()
147   {
148                 return inputMap.size();
149   }
150
151         /**
152    * Clears the <code>InputMap</code>.
153          */
154   public void clear()
155   {
156                 inputMap.clear();
157   }
158
159         /**
160    * Returns all keys of entries in this <code>InputMap</code>.
161    *
162    * @return an array of keys
163          */
164   public KeyStroke[] keys()
165   {
166     KeyStroke[] array = new KeyStroke[size()];
167     return (KeyStroke[]) inputMap.keySet().toArray(array);
168   }
169
170         /**
171    * Returns all keys of entries in this <code>InputMap</code>
172    * and all its parents.
173    *
174    * @return an array of keys
175          */
176   public KeyStroke[] allKeys()
177   {
178     Set set = new HashSet();
179
180     if (parent != null)
181                         set.addAll(Arrays.asList(parent.allKeys()));
182
183     set.addAll(inputMap.keySet());
184     KeyStroke[] array = new KeyStroke[size()];
185     return (KeyStroke[]) set.toArray(array);
186   }
187
188         /**
189          * writeObject
190    *
191    * @param stream the stream to write to
192    *
193    * @exception IOException If an error occurs
194          */
195   private void writeObject(ObjectOutputStream stream) throws IOException
196   {
197                 // TODO
198   }
199
200         /**
201          * readObject
202    *
203    * @param stream the stream to read from
204    *
205    * @exception ClassNotFoundException If the serialized class cannot be found
206    * @exception IOException If an error occurs
207          */
208   private void readObject(ObjectInputStream stream)
209     throws ClassNotFoundException, IOException
210   {
211                 // TODO
212   }
213 }