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}