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("Selection: {0}", tr("Non-branching way sequences")), 027 KeyEvent.VK_W, Shortcut.SHIFT), 028 true); 029 } 030 031 @Override 032 public void actionPerformed(ActionEvent ev) { 033 DataSet ds = getLayerManager().getActiveDataSet(); 034 SelectNonBranchingWaySequences ws = new SelectNonBranchingWaySequences(ds.getSelectedWays()); 035 ws.extend(ds); 036 } 037 038 @Override 039 protected boolean listenToSelectionChange() { 040 return false; 041 } 042 043 /** 044 * Update the enabled state of the action when something in 045 * the JOSM state changes, i.e. when a layer is removed or added. 046 */ 047 @Override 048 protected void updateEnabledState() { 049 setEnabled(getLayerManager().getActiveDataSet() != null); 050 } 051}