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}