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