source: osm/applications/editors/josm/plugins/touchscreenhelper/src/touchscreenhelper/BrowseAction.java

Last change on this file was 33832, checked in by donvip, 6 years ago

update to JOSM 12630

File size: 3.5 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package touchscreenhelper;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Cursor;
7import java.awt.event.KeyEvent;
8import java.awt.event.MouseEvent;
9import java.awt.event.MouseListener;
10import java.awt.event.MouseMotionListener;
11
12import org.openstreetmap.josm.actions.mapmode.MapMode;
13import org.openstreetmap.josm.data.coor.EastNorth;
14import org.openstreetmap.josm.gui.MainApplication;
15import org.openstreetmap.josm.gui.MapFrame;
16import org.openstreetmap.josm.tools.Shortcut;
17
18public class BrowseAction extends MapMode implements MouseListener,
19 MouseMotionListener, MapFrame.MapModeChangeListener {
20
21 private MapMode oldMapMode;
22 private TimedKeyReleaseListener listener;
23
24 public BrowseAction() {
25 super(tr("Browse"), "browse", tr("Browse map with left button"),
26 Shortcut.registerShortcut("touchscreenhelper:browse", tr("Mode: {0}", tr("Browse map with left button")),
27 KeyEvent.VK_T, Shortcut.DIRECT),
28 Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
29 MapFrame.addMapModeChangeListener(this);
30 }
31
32 @Override
33 public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) {
34 this.oldMapMode = oldMapMode;
35 }
36
37 @Override public void enterMode() {
38 super.enterMode();
39 MainApplication.getMap().mapView.addMouseListener(this);
40 MainApplication.getMap().mapView.addMouseMotionListener(this);
41
42 listener = new TimedKeyReleaseListener() {
43 @Override
44 protected void doKeyReleaseEvent(KeyEvent evt) {
45 if (evt.getKeyCode() == getShortcut().getKeyStroke().getKeyCode()) {
46 if (oldMapMode != null && !(oldMapMode instanceof BrowseAction))
47 MainApplication.getMap().selectMapMode(oldMapMode);
48 }
49 }
50 };
51 }
52
53 @Override public void exitMode() {
54 super.exitMode();
55
56 MainApplication.getMap().mapView.removeMouseListener(this);
57 MainApplication.getMap().mapView.removeMouseMotionListener(this);
58 listener.stop();
59 }
60
61 @Override
62 public void mouseDragged(MouseEvent e) {
63 if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) !=
64 MouseEvent.BUTTON1_DOWN_MASK) {
65 endMovement();
66 return;
67 }
68
69 if (mousePosMove == null)
70 startMovement(e);
71 EastNorth center = MainApplication.getMap().mapView.getCenter();
72 EastNorth mouseCenter = MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY());
73 MainApplication.getMap().mapView.zoomTo(new EastNorth(
74 mousePosMove.east() + center.east() - mouseCenter.east(),
75 mousePosMove.north() + center.north() - mouseCenter.north()));
76 }
77
78 @Override public void mousePressed(MouseEvent e) {
79 if (e.getButton() == MouseEvent.BUTTON1)
80 startMovement(e);
81 }
82
83 @Override public void mouseReleased(MouseEvent e) {
84 if (e.getButton() == MouseEvent.BUTTON1)
85 endMovement();
86 }
87
88 private EastNorth mousePosMove;
89 private boolean movementInPlace = false;
90
91 private void startMovement(MouseEvent e) {
92 if (movementInPlace)
93 return;
94 movementInPlace = true;
95 mousePosMove = MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY());
96 }
97
98 private void endMovement() {
99 if (!movementInPlace)
100 return;
101 movementInPlace = false;
102 mousePosMove = null;
103 }
104}
Note: See TracBrowser for help on using the repository browser.