source: josm/trunk/src/org/openstreetmap/josm/actions/mapmode/MapMode.java@ 6084

Last change on this file since 6084 was 6084, checked in by bastiK, 11 years ago

see #8902 - add missing @Override annotations (patch by shinigami)

  • Property svn:eol-style set to native
File size: 3.9 KB
Line 
1// License: GPL. See LICENSE file for details.
2package org.openstreetmap.josm.actions.mapmode;
3
4import java.awt.Cursor;
5import java.awt.event.ActionEvent;
6import java.awt.event.InputEvent;
7import java.awt.event.MouseEvent;
8import java.awt.event.MouseListener;
9import java.awt.event.MouseMotionListener;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.actions.JosmAction;
13import org.openstreetmap.josm.gui.MapFrame;
14import org.openstreetmap.josm.gui.layer.Layer;
15import org.openstreetmap.josm.tools.ImageProvider;
16import org.openstreetmap.josm.tools.Shortcut;
17
18/**
19 * A class implementing MapMode is able to be selected as an mode for map editing.
20 * As example scrolling the map is a MapMode, connecting Nodes to new Ways
21 * is another.
22 *
23 * MapModes should register/deregister all necessary listeners on the map's view
24 * control.
25 */
26abstract public class MapMode extends JosmAction implements MouseListener, MouseMotionListener {
27 protected final Cursor cursor;
28 protected boolean ctrl;
29 protected boolean alt;
30 protected boolean shift;
31
32 /**
33 * Constructor for mapmodes without an menu
34 */
35 public MapMode(String name, String iconName, String tooltip, Shortcut shortcut, MapFrame mapFrame, Cursor cursor) {
36 super(name, "mapmode/"+iconName, tooltip, shortcut, false);
37 this.cursor = cursor;
38 putValue("active", false);
39 }
40
41 /**
42 * Constructor for mapmodes with an menu (no shortcut will be registered)
43 */
44 public MapMode(String name, String iconName, String tooltip, MapFrame mapFrame, Cursor cursor) {
45 putValue(NAME, name);
46 putValue(SMALL_ICON, ImageProvider.get("mapmode", iconName));
47 putValue(SHORT_DESCRIPTION, tooltip);
48 this.cursor = cursor;
49 }
50
51 /**
52 * Makes this map mode active.
53 */
54 public void enterMode() {
55 putValue("active", true);
56 Main.map.mapView.setNewCursor(cursor, this);
57 updateStatusLine();
58 }
59
60 /**
61 * Makes this map mode inactive.
62 */
63 public void exitMode() {
64 putValue("active", false);
65 Main.map.mapView.resetCursor(this);
66 }
67
68 protected void updateStatusLine() {
69 Main.map.statusLine.setHelpText(getModeHelpText());
70 Main.map.statusLine.repaint();
71 }
72
73 public String getModeHelpText() {
74 return "";
75 }
76 /**
77 * Call selectMapMode(this) on the parent mapFrame.
78 */
79 @Override
80 public void actionPerformed(ActionEvent e) {
81 if (Main.isDisplayingMapView()) {
82 Main.map.selectMapMode(this);
83 }
84 }
85
86 // By default, all tools will work with all layers. Can be overwritten to require
87 // a special type of layer
88 public boolean layerIsSupported(Layer l) {
89 return true;
90 }
91
92 protected void updateKeyModifiers(InputEvent e) {
93 updateKeyModifiers(e.getModifiers());
94 }
95
96 protected void updateKeyModifiers(MouseEvent e) {
97 updateKeyModifiers(e.getModifiers());
98 }
99
100 protected void updateKeyModifiers(int modifiers) {
101 ctrl = (modifiers & ActionEvent.CTRL_MASK) != 0;
102 alt = (modifiers & (ActionEvent.ALT_MASK|InputEvent.ALT_GRAPH_MASK)) != 0;
103 shift = (modifiers & ActionEvent.SHIFT_MASK) != 0;
104 }
105
106 protected void requestFocusInMapView() {
107 if (isEnabled()) {
108 // request focus in order to enable the expected keyboard shortcuts (see #8710)
109 Main.map.mapView.requestFocus();
110 }
111 }
112
113 @Override
114 public void mouseReleased(MouseEvent e) {requestFocusInMapView();}
115 @Override
116 public void mouseExited(MouseEvent e) {}
117 @Override
118 public void mousePressed(MouseEvent e) {requestFocusInMapView();}
119 @Override
120 public void mouseClicked(MouseEvent e) {}
121 @Override
122 public void mouseEntered(MouseEvent e) {}
123 @Override
124 public void mouseMoved(MouseEvent e) {}
125 @Override
126 public void mouseDragged(MouseEvent e) {}
127}
Note: See TracBrowser for help on using the repository browser.