| 42 | | List<WaySegment> wss = Main.map.mapView.getNearestWaySegments( |
| 43 | | Main.map.mapView.getPoint(node), OsmPrimitive.isSelectablePredicate); |
| 44 | | HashMap<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>(); |
| 45 | | for (WaySegment ws : wss) { |
| 46 | | List<Integer> is; |
| 47 | | if (insertPoints.containsKey(ws.way)) { |
| 48 | | is = insertPoints.get(ws.way); |
| 49 | | } else { |
| 50 | | is = new ArrayList<Integer>(); |
| 51 | | insertPoints.put(ws.way, is); |
| 52 | | } |
| | 43 | Collection<Command> cmds = new LinkedList<Command>(); |
| 54 | | if (ws.way.getNode(ws.lowerIndex) != node |
| 55 | | && ws.way.getNode(ws.lowerIndex+1) != node) { |
| 56 | | is.add(ws.lowerIndex); |
| | 45 | Iterator<OsmPrimitive> it = sel.iterator(); |
| | 46 | |
| | 47 | while (it.hasNext()) { |
| | 48 | OsmPrimitive nxt = it.next(); |
| | 49 | if (nxt==null) break; |
| | 50 | if (!(nxt instanceof Node)) continue; |
| | 51 | Node node = (Node)nxt; |
| | 52 | |
| | 53 | List<WaySegment> wss = Main.map.mapView.getNearestWaySegments( |
| | 54 | Main.map.mapView.getPoint(node), OsmPrimitive.isSelectablePredicate); |
| | 55 | HashMap<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>(); |
| | 56 | for (WaySegment ws : wss) { |
| | 57 | List<Integer> is; |
| | 58 | if (insertPoints.containsKey(ws.way)) { |
| | 59 | is = insertPoints.get(ws.way); |
| | 60 | } else { |
| | 61 | is = new ArrayList<Integer>(); |
| | 62 | insertPoints.put(ws.way, is); |
| | 63 | } |
| | 64 | |
| | 65 | if (ws.way.getNode(ws.lowerIndex) != node |
| | 66 | && ws.way.getNode(ws.lowerIndex+1) != node) { |
| | 67 | is.add(ws.lowerIndex); |
| | 68 | } |
| 66 | | Way w = insertPoint.getKey(); |
| 67 | | List<Node> nodesToAdd = w.getNodes(); |
| 68 | | pruneSuccsAndReverse(is); |
| 69 | | for (int i : is) { |
| 70 | | nodesToAdd.add(i+1, node); |
| | 76 | Way w = insertPoint.getKey(); |
| | 77 | List<Node> nodesToAdd = w.getNodes(); |
| | 78 | pruneSuccsAndReverse(is); |
| | 79 | for (int i : is) { |
| | 80 | nodesToAdd.add(i+1, node); |
| | 81 | } |
| | 82 | Way wnew = new Way(w); |
| | 83 | wnew.setNodes(nodesToAdd); |
| | 84 | cmds.add(new ChangeCommand(w, wnew)); |