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}