001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions.mapmode; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.event.KeyEvent; 007 008import org.openstreetmap.josm.gui.MainApplication; 009import org.openstreetmap.josm.gui.MapFrame; 010import org.openstreetmap.josm.gui.layer.Layer; 011import org.openstreetmap.josm.tools.ImageProvider; 012import org.openstreetmap.josm.tools.Shortcut; 013 014/** 015 * Lasso selection mode: select objects within a hand-drawn region. 016 * @since 15445 017 */ 018public class SelectLassoAction extends MapMode { 019 020 /** 021 * Constructs a new {@code SelectLassoAction}. 022 */ 023 public SelectLassoAction() { 024 super(tr("Lasso Mode"), 025 /* ICON(mapmode/) */ "rope", 026 tr("Lasso selection mode: select objects within a hand-drawn region"), 027 Shortcut.registerShortcut("mapmode:lasso", tr("Mode: {0}", tr("Lasso Mode")), KeyEvent.CHAR_UNDEFINED, Shortcut.NONE), 028 ImageProvider.getCursor("normal", "rope")); 029 } 030 031 @Override 032 public void enterMode() { 033 if (MainApplication.isDisplayingMapView()) { 034 MapFrame map = MainApplication.getMap(); 035 map.mapModeSelect.setLassoMode(true); 036 map.mapModeSelect.enterMode(); 037 } 038 super.enterMode(); 039 } 040 041 @Override 042 public void exitMode() { 043 if (MainApplication.isDisplayingMapView()) { 044 MapFrame map = MainApplication.getMap(); 045 map.mapModeSelect.setLassoMode(false); 046 map.mapModeSelect.exitMode(); 047 } 048 super.exitMode(); 049 } 050 051 @Override 052 public boolean layerIsSupported(Layer l) { 053 return MainApplication.getMap().mapModeSelect.layerIsSupported(l); 054 } 055}