/[schmitzm]/branches/2.0-RC2/src/skrueger/geotools/XMapPaneTool.java
ViewVC logotype

Annotation of /branches/2.0-RC2/src/skrueger/geotools/XMapPaneTool.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 654 - (hide annotations)
Mon Feb 1 18:13:14 2010 UTC (15 years, 1 month ago) by alfonx
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 alfonx 653 package skrueger.geotools;
2    
3     import java.awt.Cursor;
4 alfonx 654 import java.awt.event.InputEvent;
5 alfonx 653 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 alfonx 654 public XMapPaneTool() {
26     addDefaultKeyboardAssignments(this);
27     }
28 alfonx 653
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 alfonx 654 /** A tool-tip for the tool , optional **/
41 alfonx 653 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 alfonx 654
117 alfonx 653 /** 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 alfonx 654 PAN.mouseActions.put(MouseInputType.LClick, XMapPaneAction.PAN);
127     PAN.mouseActions.put(MouseInputType.LDrag, XMapPaneAction.PAN);
128 alfonx 653
129     // Right mouse click & drag zoom out
130 alfonx 654 PAN.mouseActions.put(MouseInputType.RClick, XMapPaneAction.PAN);
131     PAN.mouseActions.put(MouseInputType.RDrag, XMapPaneAction.PAN);
132 alfonx 653
133     // Mousewheel can zoom
134 alfonx 654 PAN.mouseActions.put(MouseInputType.Wheel, XMapPaneAction_Zoom.ZOOM_IN);
135 alfonx 653
136     }
137    
138     /** The configuration of the INFO {@link XMapPaneTool} **/
139     public static final XMapPaneTool INFO = new XMapPaneTool();
140 alfonx 654
141 alfonx 653 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 alfonx 654 // INFO.mouseActions.put(MouseInputType.LDrag,
151     // XMapPaneAction.SELECT_ONE_FROM_TOP);
152 alfonx 653
153 alfonx 654 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 alfonx 653 XMapPaneAction.PAN);
207    
208     // Mousewheel can zoom
209 alfonx 654 SELECTION_REMOVE.mouseActions.put(MouseInputType.Wheel,
210 alfonx 653 XMapPaneAction_Zoom.ZOOM_IN);
211    
212 alfonx 654 // 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 alfonx 653 // + and - keys zoom
248 alfonx 654 tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),
249 alfonx 653 XMapPaneAction_Zoom.ZOOM_IN);
250 alfonx 654 tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),
251 alfonx 653 XMapPaneAction_Zoom.ZOOM_OUT);
252 alfonx 654
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 alfonx 653 }
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