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.Main;
007import org.openstreetmap.josm.actions.mapmode.MapMode;
008import org.openstreetmap.josm.gui.layer.Layer;
009import org.openstreetmap.josm.tools.ImageProvider;
010
011/**
012 * Lasso selection mode: select objects within a hand-drawn region.
013 * @since 5152
014 */
015public class LassoModeAction extends MapMode {
016
017    /**
018     * Constructs a new {@code LassoModeAction}.
019     */
020    public LassoModeAction() {
021        super(tr("Lasso Mode"),
022                /* ICON(mapmode/) */ "rope",
023                tr("Lasso selection mode: select objects within a hand-drawn region"),
024                null,
025                ImageProvider.getCursor("normal", "rope"));
026    }
027
028    @Override
029    public void enterMode() {
030        if (Main.isDisplayingMapView()) {
031            Main.map.mapModeSelect.setLassoMode(true);
032            Main.map.mapModeSelect.enterMode();
033        }
034        super.enterMode();
035    }
036
037    @Override
038    public void exitMode() {
039        if (Main.isDisplayingMapView()) {
040            Main.map.mapModeSelect.setLassoMode(false);
041            Main.map.mapModeSelect.exitMode();
042        }
043        super.exitMode();
044    }
045
046    @Override
047    public boolean layerIsSupported(Layer l) {
048        return Main.map.mapModeSelect.layerIsSupported(l);
049    }
050}