source: subversion/applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java

Last change on this file was 34932, checked in by gerdp, 4 weeks ago

fix #17483: respect active filters in select actions provided by utilsplugin2

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.plugins.utilsplugin2.selection;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.awt.event.ActionEvent;
8import java.awt.event.KeyEvent;
9import java.util.ArrayList;
10import java.util.Collection;
11
12import org.openstreetmap.josm.actions.JosmAction;
13import org.openstreetmap.josm.data.osm.Node;
14import org.openstreetmap.josm.data.osm.OsmPrimitive;
15import org.openstreetmap.josm.data.osm.Way;
16import org.openstreetmap.josm.tools.Shortcut;
17
18/**
19 * Select all nodes of a selected way.
20 */
21public class SelectWayNodesAction extends JosmAction {
22
23    private ArrayList<Node> selectedNodes;
24
25    /**
26     * Create a new SelectWayNodesAction
27     */
28    public SelectWayNodesAction() {
29        super(tr("Select Way Nodes"), "selectwaynodes", tr("Select all nodes of a selected way."),
30                Shortcut.registerShortcut("tools:selectwaynodes", tr("Tool: {0}", tr("Select Way Nodes")),
31                        KeyEvent.VK_N, Shortcut.CTRL_SHIFT), true);
32        putValue("help", ht("/Action/SelectWayNodes"));
33    }
34
35    /**
36     * Called when the action is executed.
37     *
38     * This method does some checking on the selection and calls the matching selectWayNodes method.
39     */
40    @Override
41    public void actionPerformed(ActionEvent e) {
42        Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
43
44        for (OsmPrimitive p : selection) {
45            if (p instanceof Way) {
46                Way w = (Way) p;
47                if (!w.isUsable() || w.getNodesCount() < 1) {
48                    continue;
49                }
50                selectWayNodes(w);
51            } else if (p instanceof Node) {
52                Node n = (Node) p;
53                if (selectedNodes == null) {
54                    selectedNodes = new ArrayList<>();
55                }
56                selectedNodes.add(n);
57            }
58        }
59
60        getLayerManager().getEditDataSet().setSelected(selectedNodes);
61        selectedNodes = null;
62    }
63
64    private void selectWayNodes(Way w) {
65
66        for (Node n : w.getNodes()) {
67            if (selectedNodes == null) {
68                selectedNodes = new ArrayList<>();
69            }
70            if (!n.isDisabled()) selectedNodes.add(n);
71        }
72    }
73
74    @Override
75    protected void updateEnabledState() {
76        updateEnabledStateOnCurrentSelection();
77    }
78
79    @Override
80    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
81        setEnabled(selection != null && !selection.isEmpty());
82    }
83}
84
Note: See TracBrowser for help on using the repository browser.