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