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}