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