001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.actions;
003
004import org.openstreetmap.josm.Main;
005import org.openstreetmap.josm.data.osm.DataSet;
006import org.openstreetmap.josm.tools.Shortcut;
007
008import java.awt.event.ActionEvent;
009import java.awt.event.KeyEvent;
010
011import static org.openstreetmap.josm.tools.I18n.tr;
012
013/**
014 * This allows to select a sequence of non-branching connected ways.
015 *
016 * @author Marko Mäkelä
017 */
018public class SelectNonBranchingWaySequencesAction extends JosmAction {
019
020    /**
021     * Creates a new {@link SelectNonBranchingWaySequencesAction}
022     *
023     */
024    public SelectNonBranchingWaySequencesAction() {
025        super(tr("Non-branching way sequences"),
026                "way-select",
027                tr("Select non-branching sequences of ways"),
028                Shortcut.registerShortcut("wayselector:wayselect", tr("Non-branching way sequences"), KeyEvent.VK_W, Shortcut.SHIFT),
029                true);
030    }
031
032    @Override
033    public void actionPerformed(ActionEvent ev) {
034        DataSet ds = Main.getLayerManager().getEditDataSet();
035        SelectNonBranchingWaySequences ws = new SelectNonBranchingWaySequences(ds.getSelectedWays());
036        ws.extend(ds);
037    }
038
039    /**
040     * Update the enabled state of the action when something in
041     * the JOSM state changes, i.e. when a layer is removed or
042     * added.
043     */
044    @Override
045    protected void updateEnabledState() {
046        setEnabled(Main.getLayerManager().getEditDataSet() != null);
047    }
048}