001 /*
002 * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025 package javax.swing.text;
026
027 import javax.swing.Action;
028 import javax.swing.KeyStroke;
029
030 /**
031 * A collection of bindings of KeyStrokes to actions. The
032 * bindings are basically name-value pairs that potentially
033 * resolve in a hierarchy.
034 *
035 * @author Timothy Prinzing
036 * @version 1.25 05/05/07
037 */
038 public interface Keymap {
039
040 /**
041 * Fetches the name of the set of key-bindings.
042 *
043 * @return the name
044 */
045 public String getName();
046
047 /**
048 * Fetches the default action to fire if a
049 * key is typed (i.e. a KEY_TYPED KeyEvent is received)
050 * and there is no binding for it. Typically this
051 * would be some action that inserts text so that
052 * the keymap doesn't require an action for each
053 * possible key.
054 *
055 * @return the default action
056 */
057 public Action getDefaultAction();
058
059 /**
060 * Set the default action to fire if a key is typed.
061 *
062 * @param a the action
063 */
064 public void setDefaultAction(Action a);
065
066 /**
067 * Fetches the action appropriate for the given symbolic
068 * event sequence. This is used by JTextController to
069 * determine how to interpret key sequences. If the
070 * binding is not resolved locally, an attempt is made
071 * to resolve through the parent keymap, if one is set.
072 *
073 * @param key the key sequence
074 * @return the action associated with the key
075 * sequence if one is defined, otherwise <code>null</code>
076 */
077 public Action getAction(KeyStroke key);
078
079 /**
080 * Fetches all of the keystrokes in this map that
081 * are bound to some action.
082 *
083 * @return the list of keystrokes
084 */
085 public KeyStroke[] getBoundKeyStrokes();
086
087 /**
088 * Fetches all of the actions defined in this keymap.
089 *
090 * @return the list of actions
091 */
092 public Action[] getBoundActions();
093
094 /**
095 * Fetches the keystrokes that will result in
096 * the given action.
097 *
098 * @param a the action
099 * @return the list of keystrokes
100 */
101 public KeyStroke[] getKeyStrokesForAction(Action a);
102
103 /**
104 * Determines if the given key sequence is locally defined.
105 *
106 * @param key the key sequence
107 * @return true if the key sequence is locally defined else false
108 */
109 public boolean isLocallyDefined(KeyStroke key);
110
111 /**
112 * Adds a binding to the keymap.
113 *
114 * @param key the key sequence
115 * @param a the action
116 */
117 public void addActionForKeyStroke(KeyStroke key, Action a);
118
119 /**
120 * Removes a binding from the keymap.
121 *
122 * @param keys the key sequence
123 */
124 public void removeKeyStrokeBinding(KeyStroke keys);
125
126 /**
127 * Removes all bindings from the keymap.
128 */
129 public void removeBindings();
130
131 /**
132 * Fetches the parent keymap used to resolve key-bindings.
133 *
134 * @return the keymap
135 */
136 public Keymap getResolveParent();
137
138 /**
139 * Sets the parent keymap, which will be used to
140 * resolve key-bindings.
141 *
142 * @param parent the parent keymap
143 */
144 public void setResolveParent(Keymap parent);
145
146 }
|