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}