/[schmitzm]/trunk/src/skrueger/geotools/XMapPaneTool.java
ViewVC logotype

Contents of /trunk/src/skrueger/geotools/XMapPaneTool.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 654 - (show annotations)
Mon Feb 1 18:13:14 2010 UTC (15 years, 1 month ago) by alfonx
Original Path: branches/2.0-RC2/src/skrueger/geotools/XMapPaneTool.java
File MIME type: text/plain
File size: 8982 byte(s)
* GP-Cleanup: Moved SelectionTOol to new XMapTool concept.
* GPAV-Feature: Added keyboard stroke support to XMapPane
1 package skrueger.geotools;
2
3 import java.awt.Cursor;
4 import java.awt.event.InputEvent;
5 import java.awt.event.KeyEvent;
6 import java.util.HashMap;
7 import java.util.Locale;
8 import java.util.Map;
9
10 import javax.swing.Icon;
11 import javax.swing.ImageIcon;
12 import javax.swing.KeyStroke;
13
14 import schmitzm.lang.LangUtil;
15 import schmitzm.lang.ResourceProvider;
16 import schmitzm.swing.SwingUtil;
17 import schmitzm.swing.event.MouseInputType;
18
19 /**
20 * This class combines the mapping of mouse-inputs and keyboard inputs to
21 * {@link XMapPaneAction}s and provides a tool icon and a default mouse cursor.
22 */
23 public class XMapPaneTool {
24
25 public XMapPaneTool() {
26 addDefaultKeyboardAssignments(this);
27 }
28
29 public static ResourceProvider RESOURCE = new ResourceProvider(LangUtil
30 .extendPackagePath(MapPaneToolBar.class,
31 "resource.locales.mapPaneToolbar"), Locale.ENGLISH);
32
33 public static String R(String key, Object... values) {
34 return RESOURCE.getString(key, values);
35 }
36
37 /** The cursor of the mouse if the tool is active **/
38 Cursor cursor = null;
39
40 /** A tool-tip for the tool , optional **/
41 String toolTip = null;
42
43 /** The icon for the button **/
44 Icon icon = null;
45
46 /**
47 * Defines which {@link XMapPaneAction} should be should be called when a
48 * {@link MouseInputType} is triggered
49 **/
50 Map<MouseInputType, XMapPaneAction> mouseActions = new HashMap<MouseInputType, XMapPaneAction>();
51
52 /**
53 * Defines which {@link XMapPaneAction#performKeyboard(XMapPane, Object)}
54 * should be called when a {@link KeyStroke} is triggered
55 **/
56 Map<KeyStroke, XMapPaneAction> keyAction = new HashMap<KeyStroke, XMapPaneAction>();
57
58 /**
59 * Defines which optional parameter should be passed to
60 * {@link XMapPaneAction#performKeyboard(XMapPane, Object)} if a
61 * {@link KeyStroke} is triggered
62 **/
63 Map<KeyStroke, Object> keyActionParams = new HashMap<KeyStroke, Object>();
64
65 /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/
66 public static XMapPaneTool ZOOM_IN = new XMapPaneTool();
67 static {
68 ZOOM_IN.icon = new ImageIcon(MapView.class
69 .getResource("resource/icons/zoom_in.png"));
70 ZOOM_IN.toolTip = R("MapPaneButtons.ZoomIn.TT");
71 ZOOM_IN.cursor = SwingUtil.ZOOMIN_CURSOR;
72
73 // Left mouse click & drag zoom in
74 ZOOM_IN.mouseActions.put(MouseInputType.LClick,
75 XMapPaneAction_Zoom.ZOOM_IN);
76 ZOOM_IN.mouseActions.put(MouseInputType.LDrag,
77 XMapPaneAction_Zoom.ZOOM_IN);
78
79 // Right mouse click & drag zoom out
80 ZOOM_IN.mouseActions.put(MouseInputType.RClick,
81 XMapPaneAction_Zoom.ZOOM_OUT);
82 ZOOM_IN.mouseActions.put(MouseInputType.RDrag,
83 XMapPaneAction_Zoom.ZOOM_OUT);
84
85 // Mousewheel can zoom too
86 ZOOM_IN.mouseActions.put(MouseInputType.Wheel,
87 XMapPaneAction_Zoom.ZOOM_IN);
88
89 }
90
91 /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/
92 public static XMapPaneTool ZOOM_OUT = new XMapPaneTool();
93 static {
94 ZOOM_OUT.icon = new ImageIcon(MapView.class
95 .getResource("resource/icons/zoom_out.png"));
96 ZOOM_OUT.toolTip = R("MapPaneButtons.ZoomOut.TT");
97 ZOOM_OUT.cursor = SwingUtil.ZOOMOUT_CURSOR;
98
99 // Left mouse click & drag zoom in
100 ZOOM_OUT.mouseActions.put(MouseInputType.LClick,
101 XMapPaneAction_Zoom.ZOOM_OUT);
102 ZOOM_OUT.mouseActions.put(MouseInputType.LDrag,
103 XMapPaneAction_Zoom.ZOOM_OUT);
104
105 // Right mouse click & drag zoom out
106 ZOOM_OUT.mouseActions.put(MouseInputType.RClick,
107 XMapPaneAction_Zoom.ZOOM_IN);
108 ZOOM_OUT.mouseActions.put(MouseInputType.RDrag,
109 XMapPaneAction_Zoom.ZOOM_IN);
110
111 // Mousewheel can zoom
112 ZOOM_OUT.mouseActions.put(MouseInputType.Wheel,
113 XMapPaneAction_Zoom.ZOOM_IN);
114
115 }
116
117 /** The configuration of the PAN {@link XMapPaneTool} **/
118 public static final XMapPaneTool PAN = new XMapPaneTool();
119 static {
120 PAN.icon = new ImageIcon(MapView.class
121 .getResource("resource/icons/pan.png"));
122 PAN.toolTip = R("MapPaneButtons.Pan.TT");
123 PAN.cursor = SwingUtil.PAN_CURSOR;
124
125 // Left mouse click & drag zoom in
126 PAN.mouseActions.put(MouseInputType.LClick, XMapPaneAction.PAN);
127 PAN.mouseActions.put(MouseInputType.LDrag, XMapPaneAction.PAN);
128
129 // Right mouse click & drag zoom out
130 PAN.mouseActions.put(MouseInputType.RClick, XMapPaneAction.PAN);
131 PAN.mouseActions.put(MouseInputType.RDrag, XMapPaneAction.PAN);
132
133 // Mousewheel can zoom
134 PAN.mouseActions.put(MouseInputType.Wheel, XMapPaneAction_Zoom.ZOOM_IN);
135
136 }
137
138 /** The configuration of the INFO {@link XMapPaneTool} **/
139 public static final XMapPaneTool INFO = new XMapPaneTool();
140
141 static {
142 INFO.icon = new ImageIcon(MapView.class
143 .getResource("resource/icons/info.png"));
144 INFO.toolTip = R("MapPaneButtons.Info.TT");
145 INFO.cursor = SwingUtil.INFO_CURSOR;
146
147 // Left mouse click & drag zoom in
148 INFO.mouseActions.put(MouseInputType.LClick,
149 XMapPaneAction.SELECT_ONE_FROM_TOP);
150 // INFO.mouseActions.put(MouseInputType.LDrag,
151 // XMapPaneAction.SELECT_ONE_FROM_TOP);
152
153 INFO.mouseActions.put(MouseInputType.RDrag, XMapPaneAction.PAN);
154
155 // Mousewheel can zoom
156 INFO.mouseActions
157 .put(MouseInputType.Wheel, XMapPaneAction_Zoom.ZOOM_IN);
158
159 }
160
161 public static final XMapPaneTool SELECTION_ADD = new XMapPaneTool();
162 static {
163 SELECTION_ADD.icon = new ImageIcon(MapView.class
164 .getResource("resource/icons/selection_add.png"));
165 SELECTION_ADD.toolTip = R("MapPaneButtons.Selection.AddSelection.TT"); // TODO
166 // move
167 // to
168 // schmitzm
169
170 SELECTION_ADD.cursor = SwingUtil.SELECTION_ADD_CURSOR;
171
172 // Left mouse click & drag zoom in
173 SELECTION_ADD.mouseActions.put(MouseInputType.LClick,
174 XMapPaneAction.SELECT_ALL);
175 SELECTION_ADD.mouseActions.put(MouseInputType.LDrag,
176 XMapPaneAction.SELECT_ALL);
177
178 SELECTION_ADD.mouseActions
179 .put(MouseInputType.RDrag, XMapPaneAction.PAN);
180
181 // Mousewheel can zoom
182 SELECTION_ADD.mouseActions.put(MouseInputType.Wheel,
183 XMapPaneAction_Zoom.ZOOM_IN);
184
185 // TODO Strg-A shoud select all
186 }
187
188 public static final XMapPaneTool SELECTION_REMOVE = new XMapPaneTool();
189 static {
190 SELECTION_REMOVE.icon = new ImageIcon(MapView.class
191 .getResource("resource/icons/selection_remove.png"));
192 SELECTION_REMOVE.toolTip = R("MapPaneButtons.Selection.RemoveSelection.TT"); // TODO
193 // move
194 // to
195 // schmitzm
196
197 SELECTION_REMOVE.cursor = SwingUtil.SELECTION_REMOVE_CURSOR;
198
199 // Left mouse click & drag zoom in
200 SELECTION_REMOVE.mouseActions.put(MouseInputType.LClick,
201 XMapPaneAction.SELECT_ALL);
202 SELECTION_REMOVE.mouseActions.put(MouseInputType.LDrag,
203 XMapPaneAction.SELECT_ALL);
204
205 SELECTION_REMOVE.mouseActions.put(MouseInputType.RDrag,
206 XMapPaneAction.PAN);
207
208 // Mousewheel can zoom
209 SELECTION_REMOVE.mouseActions.put(MouseInputType.Wheel,
210 XMapPaneAction_Zoom.ZOOM_IN);
211
212 // TODO Strg-A shoud select all
213 }
214
215 public static final XMapPaneTool SELECTION_SET = new XMapPaneTool();
216 static {
217 SELECTION_SET.icon = new ImageIcon(MapView.class
218 .getResource("resource/icons/selection_set.png"));
219 SELECTION_SET.toolTip = R("MapPaneButtons.Selection.SetSelection.TT"); // TODO
220 // move
221 // to
222 // schmitzm
223
224 SELECTION_SET.cursor = SwingUtil.SELECTION_SET_CURSOR;
225
226 // Left mouse click & drag zoom in
227 SELECTION_SET.mouseActions.put(MouseInputType.LClick,
228 XMapPaneAction.SELECT_ALL);
229 SELECTION_SET.mouseActions.put(MouseInputType.LDrag,
230 XMapPaneAction.SELECT_ALL);
231
232 SELECTION_SET.mouseActions
233 .put(MouseInputType.RDrag, XMapPaneAction.PAN);
234
235 // Mousewheel can zoom
236 SELECTION_SET.mouseActions.put(MouseInputType.Wheel,
237 XMapPaneAction_Zoom.ZOOM_IN);
238
239 // TODO Strg-A shoud select all
240 }
241
242 /**
243 * Adds default Keyboard actions to a given {@link XMapPaneTool}
244 */
245 public static void addDefaultKeyboardAssignments(XMapPaneTool tool) {
246
247 // + and - keys zoom
248 tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),
249 XMapPaneAction_Zoom.ZOOM_IN);
250 tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),
251 XMapPaneAction_Zoom.ZOOM_OUT);
252
253 KeyStroke keyStroke;
254
255 for (int modifier : new int[] { InputEvent.ALT_DOWN_MASK,
256 InputEvent.ALT_GRAPH_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
257 InputEvent.SHIFT_DOWN_MASK, InputEvent.META_DOWN_MASK }) {
258
259 // RIGHT button pan
260 keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, modifier);
261 tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
262 tool.keyActionParams.put(keyStroke,
263 XMapPaneAction_Pan.Direction.RIGHT);
264
265 // LEFT button pan
266 keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, modifier);
267 tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
268 tool.keyActionParams.put(keyStroke,
269 XMapPaneAction_Pan.Direction.LEFT);
270
271 // UP button pan
272 keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, modifier);
273 tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
274 tool.keyActionParams
275 .put(keyStroke, XMapPaneAction_Pan.Direction.UP);
276
277 // DOWN button pan
278 keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_UP, modifier);
279 tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
280 tool.keyActionParams.put(keyStroke,
281 XMapPaneAction_Pan.Direction.DOWN);
282 }
283
284 }
285 }

Properties

Name Value
svn:eol-style native
svn:keywords Id URL
svn:mime-type text/plain

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26