source: subversion/applications/editors/josm/plugins/ext_tools/src/ext_tools/ExtToolAction.java

Last change on this file was 33698, checked in by donvip, 19 months ago

fix #josm15384

File size: 1.9 KB
Line 
1package ext_tools;
2
3import static org.openstreetmap.josm.tools.I18n.tr;
4
5import java.awt.event.ActionEvent;
6import java.awt.event.KeyEvent;
7import java.awt.event.MouseEvent;
8
9import org.openstreetmap.josm.actions.mapmode.MapMode;
10import org.openstreetmap.josm.gui.MainApplication;
11import org.openstreetmap.josm.gui.layer.Layer;
12import org.openstreetmap.josm.gui.layer.OsmDataLayer;
13import org.openstreetmap.josm.tools.ImageProvider;
14import org.openstreetmap.josm.tools.Shortcut;
15
16// TODO: Merge with ExtTool class?
17class ExtToolAction extends MapMode {
18
19    protected MapMode oldMapMode;
20    protected ExtTool tool;
21
22    public ExtToolAction(ExtTool tool) {
23        super(tr(tool.name), "empty", tool.description,
24            Shortcut.registerShortcut(tr("exttool:{0}", tool.name), tr("External Tool: {0}", tool.name), 
25                KeyEvent.CHAR_UNDEFINED, Shortcut.NONE),
26            ImageProvider.getCursor("crosshair", null));
27        this.tool = tool;
28        setEnabled(true);
29    }
30
31    @Override
32    public void actionPerformed(ActionEvent e) {
33        if (!MainApplication.isDisplayingMapView())
34            return;
35        oldMapMode = MainApplication.getMap().mapMode;
36        super.actionPerformed(e);
37    }
38
39    @Override
40    public void enterMode() {
41        super.enterMode();
42        MainApplication.getMap().mapView.addMouseListener(this);
43    }
44
45    @Override
46    public void exitMode() {
47        super.exitMode();
48        MainApplication.getMap().mapView.removeMouseListener(this);
49    }
50
51    @Override
52    public void mouseClicked(MouseEvent e) {
53        if (!MainApplication.isDisplayingMapView()) {
54            return;
55        }
56
57        tool.runTool(MainApplication.getMap().mapView.getLatLon(e.getX(), e.getY()));
58        MainApplication.getMap().selectMapMode(oldMapMode);
59    }
60
61    @Override
62    public boolean layerIsSupported(Layer l) {
63        return l instanceof OsmDataLayer;
64    }
65}
Note: See TracBrowser for help on using the repository browser.