Ticket #6951: ticket-6951-join-node-to-way-restrict-to-selected-ways.patch

File ticket-6951-join-node-to-way-restrict-to-selected-ways.patch, 2.4 KB (added by olejorgenb, 14 years ago)
  • src/org/openstreetmap/josm/actions/JoinNodeWayAction.java

    diff --git a/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java b/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
    index afa7c9f..468c33f 100644
    a b public class JoinNodeWayAction extends JosmAction {  
    3535    public void actionPerformed(ActionEvent e) {
    3636        if (!isEnabled())
    3737            return;
    38         Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    39         if (sel.size() < 1) return;
     38        Collection<Node> selectedNodes = getCurrentDataSet().getSelectedNodes();
     39        // Allow multiple selected nodes too?
     40        if (selectedNodes.size() != 1) return;
     41
     42        Node node = selectedNodes.iterator().next();
    4043
    4144        Collection<Command> cmds = new LinkedList<Command>();
    4245
    43         for (OsmPrimitive osm : sel) {
    44             if (!(osm instanceof Node)) {
    45                 continue;
    46             }
    47             Node node = (Node) osm;
     46        // If the user has selected some ways, only join the node to these.
     47        boolean restrictToSelectedWays =
     48            getCurrentDataSet().getSelectedWays().size() > 0;
    4849
    4950            List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
    5051                    Main.map.mapView.getPoint(node), OsmPrimitive.isSelectablePredicate);
    5152            HashMap<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>();
    5253            for (WaySegment ws : wss) {
     54                // Maybe cleaner to pass a "isSelected" predicate to getNearestWaySegements, but this is atm. less invasive.
     55                if(restrictToSelectedWays && !ws.way.isSelected()) {
     56                    continue;
     57                }
     58
    5359                List<Integer> is;
    5460                if (insertPoints.containsKey(ws.way)) {
    5561                    is = insertPoints.get(ws.way);
    public class JoinNodeWayAction extends JosmAction {  
    8086                wnew.setNodes(nodesToAdd);
    8187                cmds.add(new ChangeCommand(w, wnew));
    8288            }
    83         }
    84         if (cmds.size() == 0) return;
    85         Main.main.undoRedo.add(new SequenceCommand(tr("Join Node and Line"), cmds));
    86         Main.map.repaint();
     89            if (cmds.size() == 0) return;
     90            Main.main.undoRedo.add(new SequenceCommand(tr("Join Node and Line"), cmds));
     91            Main.map.repaint();
    8792    }
    8893
    8994    private static void pruneSuccsAndReverse(List<Integer> is) {