Ignore:
Timestamp:
2019-10-05T16:55:30+02:00 (5 years ago)
Author:
donvip
Message:

fix #josm13723 - NPE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectWayNodesAction.java

    r34932 r35173  
    77import java.awt.event.ActionEvent;
    88import java.awt.event.KeyEvent;
    9 import java.util.ArrayList;
    109import java.util.Collection;
     10import java.util.HashSet;
     11import java.util.Set;
    1112
    1213import org.openstreetmap.josm.actions.JosmAction;
     
    2021 */
    2122public class SelectWayNodesAction extends JosmAction {
    22 
    23     private ArrayList<Node> selectedNodes;
    2423
    2524    /**
     
    3635     * Called when the action is executed.
    3736     *
    38      * This method does some checking on the selection and calls the matching selectWayNodes method.
     37     * This method does some checking on the selection.
    3938     */
    4039    @Override
    4140    public void actionPerformed(ActionEvent e) {
    42         Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected();
     41        Set<Node> selectedNodes = new HashSet<>();
    4342
    44         for (OsmPrimitive p : selection) {
     43        for (OsmPrimitive p : getLayerManager().getEditDataSet().getSelected()) {
    4544            if (p instanceof Way) {
    4645                Way w = (Way) p;
    47                 if (!w.isUsable() || w.getNodesCount() < 1) {
    48                     continue;
     46                if (w.isUsable() && w.getNodesCount() > 1) {
     47                    for (Node n : w.getNodes()) {
     48                        if (!n.isDisabled()) {
     49                            selectedNodes.add(n);
     50                        }
     51                    }
    4952                }
    50                 selectWayNodes(w);
    5153            } else if (p instanceof Node) {
    52                 Node n = (Node) p;
    53                 if (selectedNodes == null) {
    54                     selectedNodes = new ArrayList<>();
    55                 }
    56                 selectedNodes.add(n);
     54                selectedNodes.add((Node) p);
    5755            }
    5856        }
    5957
    6058        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         }
    7259    }
    7360
     
    8269    }
    8370}
    84 
Note: See TracChangeset for help on using the changeset viewer.