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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 653 by alfonx, Mon Feb 1 15:09:18 2010 UTC revision 655 by alfonx, Wed Feb 3 11:47:44 2010 UTC
# Line 1  Line 1 
1  package skrueger.geotools;  package skrueger.geotools;
2    
3  import java.awt.Cursor;  import java.awt.Cursor;
4    import java.awt.event.InputEvent;
5  import java.awt.event.KeyEvent;  import java.awt.event.KeyEvent;
6  import java.util.HashMap;  import java.util.HashMap;
7  import java.util.Locale;  import java.util.Locale;
# Line 10  import javax.swing.Icon; Line 11  import javax.swing.Icon;
11  import javax.swing.ImageIcon;  import javax.swing.ImageIcon;
12  import javax.swing.KeyStroke;  import javax.swing.KeyStroke;
13    
 import com.sun.org.apache.bcel.internal.generic.NEW;  
   
14  import schmitzm.lang.LangUtil;  import schmitzm.lang.LangUtil;
15  import schmitzm.lang.ResourceProvider;  import schmitzm.lang.ResourceProvider;
16  import schmitzm.swing.SwingUtil;  import schmitzm.swing.SwingUtil;
# Line 23  import schmitzm.swing.event.MouseInputTy Line 22  import schmitzm.swing.event.MouseInputTy
22   */   */
23  public class XMapPaneTool {  public class XMapPaneTool {
24    
25            public Cursor getCursor() {
26                    return cursor;
27            }
28    
29            public void setCursor(Cursor cursor) {
30                    this.cursor = cursor;
31            }
32    
33            public String getToolTip() {
34                    return toolTip;
35            }
36    
37            public void setToolTip(String toolTip) {
38                    this.toolTip = toolTip;
39            }
40    
41            public Icon getIcon() {
42                    return icon;
43            }
44    
45            public void setIcon(Icon icon) {
46                    this.icon = icon;
47            }
48    
49            public XMapPaneAction getMouseAction(MouseInputType type) {
50                    return mouseActions.get(type);
51            }
52    
53            public void setMouseAction(MouseInputType type, XMapPaneAction mouseAction) {
54                    this.mouseActions.put(type, mouseAction);;
55            }
56    
57            public XMapPaneAction getKeyAction(KeyStroke keyStroke) {
58                    return keyAction.get(keyStroke);
59            }
60    
61            public void setKeyAction(KeyStroke keyStroke, XMapPaneAction keyAction) {
62                    this.keyAction.put(keyStroke,keyAction);
63            }
64    
65            public Object getKeyActionParam(KeyStroke keyStroke) {
66                    return keyActionParams.get(keyStroke);
67            }
68    
69            public void setKeyActionParam(KeyStroke keyStroke, Object param) {
70                    this.keyActionParams.put(keyStroke, param);
71            }
72    
73            public XMapPaneTool() {
74                    addDefaultKeyboardAssignments(this);
75            }
76    
77          public static ResourceProvider RESOURCE = new ResourceProvider(LangUtil          public static ResourceProvider RESOURCE = new ResourceProvider(LangUtil
78                          .extendPackagePath(MapPaneToolBar.class,                          .extendPackagePath(MapPaneToolBar.class,
# Line 35  public class XMapPaneTool { Line 85  public class XMapPaneTool {
85          /** The cursor of the mouse if the tool is active **/          /** The cursor of the mouse if the tool is active **/
86          Cursor cursor = null;          Cursor cursor = null;
87    
88          /** A tool-tip for the tool , optinal **/          /** A tool-tip for the tool , optional **/
89          String toolTip = null;          String toolTip = null;
90    
91          /** The icon for the button **/          /** The icon for the button **/
# Line 59  public class XMapPaneTool { Line 109  public class XMapPaneTool {
109           * {@link KeyStroke} is triggered           * {@link KeyStroke} is triggered
110           **/           **/
111          Map<KeyStroke, Object> keyActionParams = new HashMap<KeyStroke, Object>();          Map<KeyStroke, Object> keyActionParams = new HashMap<KeyStroke, Object>();
112            
113            /** This {@link XMapPaneTool} does nothing **/
114            public static XMapPaneTool NO_ACTION = new XMapPaneTool() ;
115            static {
116                    // Remove the keyboard mapping that are defined by the default constructor
117                    NO_ACTION.keyAction.clear();
118                    NO_ACTION.keyActionParams.clear();
119            }
120            
121          /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/          /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/
122          public static XMapPaneTool ZOOM_IN = new XMapPaneTool();          public static XMapPaneTool ZOOM_IN = new XMapPaneTool();
123          static {          static {
# Line 84  public class XMapPaneTool { Line 142  public class XMapPaneTool {
142                  ZOOM_IN.mouseActions.put(MouseInputType.Wheel,                  ZOOM_IN.mouseActions.put(MouseInputType.Wheel,
143                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
144    
                 // + and - keys zoom too  
                 ZOOM_IN.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),  
                                 XMapPaneAction_Zoom.ZOOM_IN);  
                 ZOOM_IN.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),  
                                 XMapPaneAction_Zoom.ZOOM_OUT);  
145          }          }
146    
147          /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/          /** The configuration of the default ZOOM IN {@link XMapPaneTool} **/
# Line 115  public class XMapPaneTool { Line 168  public class XMapPaneTool {
168                  ZOOM_OUT.mouseActions.put(MouseInputType.Wheel,                  ZOOM_OUT.mouseActions.put(MouseInputType.Wheel,
169                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
170    
                 // + and - keys zoom  
                 ZOOM_OUT.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),  
                                 XMapPaneAction_Zoom.ZOOM_IN);  
                 ZOOM_OUT.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),  
                                 XMapPaneAction_Zoom.ZOOM_OUT);  
171          }          }
172            
173          /** The configuration of the PAN {@link XMapPaneTool} **/          /** The configuration of the PAN {@link XMapPaneTool} **/
174          public static final XMapPaneTool PAN = new XMapPaneTool();          public static final XMapPaneTool PAN = new XMapPaneTool();
175          static {          static {
# Line 131  public class XMapPaneTool { Line 179  public class XMapPaneTool {
179                  PAN.cursor = SwingUtil.PAN_CURSOR;                  PAN.cursor = SwingUtil.PAN_CURSOR;
180    
181                  // Left mouse click & drag zoom in                  // Left mouse click & drag zoom in
182                  PAN.mouseActions.put(MouseInputType.LClick,                  PAN.mouseActions.put(MouseInputType.LClick, XMapPaneAction.PAN);
183                                  XMapPaneAction.PAN);                  PAN.mouseActions.put(MouseInputType.LDrag, XMapPaneAction.PAN);
                 PAN.mouseActions.put(MouseInputType.LDrag,  
                                 XMapPaneAction.PAN);  
184    
185                  // Right mouse click & drag zoom out                  // Right mouse click & drag zoom out
186                  PAN.mouseActions.put(MouseInputType.RClick,                  PAN.mouseActions.put(MouseInputType.RClick, XMapPaneAction.PAN);
187                                  XMapPaneAction.PAN);                  PAN.mouseActions.put(MouseInputType.RDrag, XMapPaneAction.PAN);
                 PAN.mouseActions.put(MouseInputType.RDrag,  
                                 XMapPaneAction.PAN);  
188    
189                  // Mousewheel can zoom                  // Mousewheel can zoom
190                  PAN.mouseActions.put(MouseInputType.Wheel,                  PAN.mouseActions.put(MouseInputType.Wheel, XMapPaneAction_Zoom.ZOOM_IN);
191    
192            }
193            
194            
195    
196            /** A tool that will do a select_top action on the left mouse button **/
197            public static final XMapPaneTool SELECTION_TOP_LAYER = new XMapPaneTool();
198            static {
199    //              SELECTION_TOP_LAYER.icon = new ImageIcon(MapView.class
200    //                              .getResource("resource/icons/selection_add.png"));
201    //              SELECTION_TOP_LAYER.toolTip = R("MapPaneButtons.Selection.AddSelection.TT"); // TODO
202                    // move
203                    // to
204                    // schmitzm
205    
206                    SELECTION_TOP_LAYER.cursor = SwingUtil.SELECTION_SET_CURSOR;
207    
208                    // Left mouse click & drag zoom in
209                    SELECTION_TOP_LAYER.mouseActions.put(MouseInputType.LClick,
210                                    XMapPaneAction.SELECT_TOP);
211                    SELECTION_TOP_LAYER.mouseActions.put(MouseInputType.LDrag,
212                                    XMapPaneAction.SELECT_TOP);
213    
214                    SELECTION_TOP_LAYER.mouseActions
215                                    .put(MouseInputType.RDrag, XMapPaneAction.PAN);
216    
217                    // Mousewheel can zoom
218                    SELECTION_TOP_LAYER.mouseActions.put(MouseInputType.Wheel,
219                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
220    
221                  // + and - keys zoom                  // TODO Strg-A shoud select all
222                  PAN.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),          }
223            
224    
225            /** A tool that will do a select_top action on the left mouse button **/
226            public static final XMapPaneTool SELECTION_ONE_FROM_TOP_LAYER = new XMapPaneTool();
227            static {
228    //              SELECTION_ONE_FROM_TOP.icon = new ImageIcon(MapView.class
229    //                              .getResource("resource/icons/selection_add.png"));
230    //              SELECTION_ONE_FROM_TOP.toolTip = R("MapPaneButtons.Selection.AddSelection.TT"); // TODO
231                    // move
232                    // to
233                    // schmitzm
234    
235                    SELECTION_ONE_FROM_TOP_LAYER.cursor = SwingUtil.SELECTION_SET_CURSOR;
236    
237                    // Left mouse click & drag zoom in
238                    SELECTION_ONE_FROM_TOP_LAYER.mouseActions.put(MouseInputType.LClick,
239                                    XMapPaneAction.SELECT_ONE_FROM_TOP);
240                    SELECTION_ONE_FROM_TOP_LAYER.mouseActions.put(MouseInputType.LDrag,
241                                    XMapPaneAction.SELECT_ONE_FROM_TOP);
242    
243                    SELECTION_ONE_FROM_TOP_LAYER.mouseActions
244                                    .put(MouseInputType.RDrag, XMapPaneAction.PAN);
245    
246                    // Mousewheel can zoom
247                    SELECTION_ONE_FROM_TOP_LAYER.mouseActions.put(MouseInputType.Wheel,
248                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
249                  PAN.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),  
250                                  XMapPaneAction_Zoom.ZOOM_OUT);                  // TODO Strg-A shoud select all
251          }          }
252    
253                    
254    
255            /** A tool that will do a select_top action on the left mouse button **/
256            public static final XMapPaneTool SELECTION_ALL_LAYERS = new XMapPaneTool();
257            static {
258    //              SELECTION_ALL_LAYERS.icon = new ImageIcon(MapView.class
259    //                              .getResource("resource/icons/selection_add.png"));
260    //              SELECTION_ALL_LAYERS.toolTip = R("MapPaneButtons.Selection.AddSelection.TT"); // TODO
261                    // move
262                    // to
263                    // schmitzm
264    
265                    SELECTION_ALL_LAYERS.cursor = SwingUtil.SELECTION_SET_CURSOR;
266    
267                    // Left mouse click & drag zoom in
268                    SELECTION_ALL_LAYERS.mouseActions.put(MouseInputType.LClick,
269                                    XMapPaneAction.SELECT_ALL);
270                    SELECTION_ALL_LAYERS.mouseActions.put(MouseInputType.LDrag,
271                                    XMapPaneAction.SELECT_ALL);
272    
273                    SELECTION_ALL_LAYERS.mouseActions
274                                    .put(MouseInputType.RDrag, XMapPaneAction.PAN);
275    
276                    // Mousewheel can zoom
277                    SELECTION_ALL_LAYERS.mouseActions.put(MouseInputType.Wheel,
278                                    XMapPaneAction_Zoom.ZOOM_IN);
279    
280                    // TODO Strg-A shoud select all
281            }
282    
283    
284          /** The configuration of the INFO {@link XMapPaneTool} **/          /** The configuration of the INFO {@link XMapPaneTool} **/
285          public static final XMapPaneTool INFO = new XMapPaneTool();          public static final XMapPaneTool INFO = new XMapPaneTool();
286    
287          static {          static {
288                  INFO.icon = new ImageIcon(MapView.class                  INFO.icon = new ImageIcon(MapView.class
289                                  .getResource("resource/icons/info.png"));                                  .getResource("resource/icons/info.png"));
# Line 165  public class XMapPaneTool { Line 293  public class XMapPaneTool {
293                  // Left mouse click & drag zoom in                  // Left mouse click & drag zoom in
294                  INFO.mouseActions.put(MouseInputType.LClick,                  INFO.mouseActions.put(MouseInputType.LClick,
295                                  XMapPaneAction.SELECT_ONE_FROM_TOP);                                  XMapPaneAction.SELECT_ONE_FROM_TOP);
296  //              INFO.mouseActions.put(MouseInputType.LDrag,                  // INFO.mouseActions.put(MouseInputType.LDrag,
297  //                              XMapPaneAction.SELECT_ONE_FROM_TOP);                  // XMapPaneAction.SELECT_ONE_FROM_TOP);
298    
299                    INFO.mouseActions.put(MouseInputType.RDrag, XMapPaneAction.PAN);
300    
301                    // Mousewheel can zoom
302                    INFO.mouseActions
303                                    .put(MouseInputType.Wheel, XMapPaneAction_Zoom.ZOOM_IN);
304    
305            }
306    
307            public static final XMapPaneTool SELECTION_ADD = new XMapPaneTool();
308            static {
309                    SELECTION_ADD.icon = new ImageIcon(MapView.class
310                                    .getResource("resource/icons/selection_add.png"));
311                    SELECTION_ADD.toolTip = R("MapPaneButtons.Selection.AddSelection.TT"); // TODO
312                    // move
313                    // to
314                    // schmitzm
315    
316                    SELECTION_ADD.cursor = SwingUtil.SELECTION_ADD_CURSOR;
317    
318                    // Left mouse click & drag zoom in
319                    SELECTION_ADD.mouseActions.put(MouseInputType.LClick,
320                                    XMapPaneAction.SELECT_ALL);
321                    SELECTION_ADD.mouseActions.put(MouseInputType.LDrag,
322                                    XMapPaneAction.SELECT_ALL);
323    
324                  INFO.mouseActions.put(MouseInputType.RDrag,                  SELECTION_ADD.mouseActions
325                                    .put(MouseInputType.RDrag, XMapPaneAction.PAN);
326    
327                    // Mousewheel can zoom
328                    SELECTION_ADD.mouseActions.put(MouseInputType.Wheel,
329                                    XMapPaneAction_Zoom.ZOOM_IN);
330    
331                    // TODO Strg-A shoud select all
332            }
333    
334            public static final XMapPaneTool SELECTION_REMOVE = new XMapPaneTool();
335            static {
336                    SELECTION_REMOVE.icon = new ImageIcon(MapView.class
337                                    .getResource("resource/icons/selection_remove.png"));
338                    SELECTION_REMOVE.toolTip = R("MapPaneButtons.Selection.RemoveSelection.TT"); // TODO
339                    // move
340                    // to
341                    // schmitzm
342    
343                    SELECTION_REMOVE.cursor = SwingUtil.SELECTION_REMOVE_CURSOR;
344    
345                    // Left mouse click & drag zoom in
346                    SELECTION_REMOVE.mouseActions.put(MouseInputType.LClick,
347                                    XMapPaneAction.SELECT_ALL);
348                    SELECTION_REMOVE.mouseActions.put(MouseInputType.LDrag,
349                                    XMapPaneAction.SELECT_ALL);
350    
351                    SELECTION_REMOVE.mouseActions.put(MouseInputType.RDrag,
352                                  XMapPaneAction.PAN);                                  XMapPaneAction.PAN);
353    
354                  // Mousewheel can zoom                  // Mousewheel can zoom
355                  INFO.mouseActions.put(MouseInputType.Wheel,                  SELECTION_REMOVE.mouseActions.put(MouseInputType.Wheel,
356                                    XMapPaneAction_Zoom.ZOOM_IN);
357    
358                    // TODO Strg-A shoud select all
359            }
360    
361            public static final XMapPaneTool SELECTION_SET = new XMapPaneTool();
362            static {
363                    SELECTION_SET.icon = new ImageIcon(MapView.class
364                                    .getResource("resource/icons/selection_set.png"));
365                    SELECTION_SET.toolTip = R("MapPaneButtons.Selection.SetSelection.TT"); // TODO
366                    // move
367                    // to
368                    // schmitzm
369    
370                    SELECTION_SET.cursor = SwingUtil.SELECTION_SET_CURSOR;
371    
372                    // Left mouse click & drag zoom in
373                    SELECTION_SET.mouseActions.put(MouseInputType.LClick,
374                                    XMapPaneAction.SELECT_ALL);
375                    SELECTION_SET.mouseActions.put(MouseInputType.LDrag,
376                                    XMapPaneAction.SELECT_ALL);
377    
378                    SELECTION_SET.mouseActions
379                                    .put(MouseInputType.RDrag, XMapPaneAction.PAN);
380    
381                    // Mousewheel can zoom
382                    SELECTION_SET.mouseActions.put(MouseInputType.Wheel,
383                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
384    
385                    // TODO Strg-A shoud select all
386            }
387    
388            /**
389             * Adds default Keyboard actions to a given {@link XMapPaneTool}
390             */
391            public static void addDefaultKeyboardAssignments(XMapPaneTool tool) {
392    
393                  // + and - keys zoom                  // + and - keys zoom
394                  INFO.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),                  tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0),
395                                  XMapPaneAction_Zoom.ZOOM_IN);                                  XMapPaneAction_Zoom.ZOOM_IN);
396                  INFO.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),                  tool.keyAction.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0),
397                                  XMapPaneAction_Zoom.ZOOM_OUT);                                  XMapPaneAction_Zoom.ZOOM_OUT);
                   
         }  
398    
399                    KeyStroke keyStroke;
400    
401                    for (int modifier : new int[] { InputEvent.ALT_DOWN_MASK,
402                                    InputEvent.ALT_GRAPH_DOWN_MASK, InputEvent.CTRL_DOWN_MASK,
403                                    InputEvent.SHIFT_DOWN_MASK, InputEvent.META_DOWN_MASK }) {
404    
405                            // RIGHT button pan
406                            keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, modifier);
407                            tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
408                            tool.keyActionParams.put(keyStroke,
409                                            XMapPaneAction_Pan.Direction.RIGHT);
410    
411                            // LEFT button pan
412                            keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, modifier);
413                            tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
414                            tool.keyActionParams.put(keyStroke,
415                                            XMapPaneAction_Pan.Direction.LEFT);
416    
417                            // UP button pan
418                            keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, modifier);
419                            tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
420                            tool.keyActionParams
421                                            .put(keyStroke, XMapPaneAction_Pan.Direction.UP);
422    
423                            // DOWN button pan
424                            keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_UP, modifier);
425                            tool.keyAction.put(keyStroke, XMapPaneAction.PAN);
426                            tool.keyActionParams.put(keyStroke,
427                                            XMapPaneAction_Pan.Direction.DOWN);
428                    }
429    
430            }
431  }  }

Legend:
Removed from v.653  
changed lines
  Added in v.655

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26