source: josm/trunk/src/org/openstreetmap/josm/actions/mapmode/PlayHeadDragMode.java@ 12969

Last change on this file since 12969 was 12630, checked in by Don-vip, 7 years ago

see #15182 - deprecate Main.map and Main.isDisplayingMapView(). Replacements: gui.MainApplication.getMap() / gui.MainApplication.isDisplayingMapView()

  • Property svn:eol-style set to native
File size: 2.9 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.mapmode;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.Cursor;
7import java.awt.Point;
8import java.awt.event.MouseEvent;
9
10import org.openstreetmap.josm.data.coor.EastNorth;
11import org.openstreetmap.josm.gui.MainApplication;
12import org.openstreetmap.josm.gui.MapFrame;
13import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
14import org.openstreetmap.josm.tools.Shortcut;
15
16/**
17 * Singleton marker class to track position of audio.
18 *
19 * @author david.earl
20 *
21 */
22public class PlayHeadDragMode extends MapMode {
23
24 private boolean dragging;
25 private Point mousePos;
26 private Point mouseStart;
27 private final transient PlayHeadMarker playHeadMarker;
28
29 /**
30 * Constructs a new {@code PlayHeadDragMode}.
31 * @param m Audio marker
32 */
33 public PlayHeadDragMode(PlayHeadMarker m) {
34 super(tr("Drag play head"), "playheaddrag", tr("Drag play head"), (Shortcut) null,
35 Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
36 playHeadMarker = m;
37 }
38
39 @Override public void enterMode() {
40 super.enterMode();
41 MapFrame map = MainApplication.getMap();
42 map.mapView.addMouseListener(this);
43 map.mapView.addMouseMotionListener(this);
44 }
45
46 @Override public void exitMode() {
47 super.exitMode();
48 MapFrame map = MainApplication.getMap();
49 map.mapView.removeMouseListener(this);
50 map.mapView.removeMouseMotionListener(this);
51 }
52
53 @Override public void mousePressed(MouseEvent ev) {
54 mouseStart = mousePos = ev.getPoint();
55 }
56
57 @Override public void mouseDragged(MouseEvent ev) {
58 if (mouseStart == null || mousePos == null) return;
59 if ((ev.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0) return;
60 Point p = ev.getPoint();
61 if (!dragging) {
62 if (p.distance(mouseStart) < 3) return;
63 playHeadMarker.startDrag();
64 dragging = true;
65 }
66 if (p.distance(mousePos) == 0) return;
67 playHeadMarker.drag(MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY()));
68 mousePos = p;
69 }
70
71 @Override public void mouseReleased(MouseEvent ev) {
72 mouseStart = null;
73 if (ev.getButton() != MouseEvent.BUTTON1 || !dragging)
74 return;
75
76 requestFocusInMapView();
77 updateKeyModifiers(ev);
78
79 EastNorth en = MainApplication.getMap().mapView.getEastNorth(ev.getX(), ev.getY());
80 if (!shift) {
81 playHeadMarker.reposition(en);
82 } else {
83 playHeadMarker.synchronize(en);
84 }
85 mousePos = null;
86 dragging = false;
87 }
88
89 @Override public String getModeHelpText() {
90 return tr("Drag play head and release near track to play audio from there; SHIFT+release to synchronize audio at that point.");
91 }
92}
Note: See TracBrowser for help on using the repository browser.