Ticket #553: CombineWayAction.patch
| File CombineWayAction.patch, 1.7 KB (added by , 18 years ago) |
|---|
-
src/org/openstreetmap/josm/actions/CombineWayAction.java
149 149 } 150 150 } 151 151 152 Way newWay = new Way(selectedWays.get(0)); 152 // Find the most appropriate way to modify. 153 154 // Eventually this might want to be the way with the longest 155 // history or the longest selected way but for now just attempt 156 // to reuse an existing id. 157 Way modifyWay = selectedWays.peek(); 158 for (Way w : selectedWays) { 159 modifyWay = w; 160 if (w.id != 0) break; 161 } 162 Way newWay = new Way(modifyWay); 163 153 164 newWay.nodes.clear(); 154 165 newWay.nodes.addAll(nodeList); 155 166 … … 177 188 } 178 189 179 190 LinkedList<Command> cmds = new LinkedList<Command>(); 180 cmds.add(new DeleteCommand(selectedWays.subList(1, selectedWays.size()))); 181 cmds.add(new ChangeCommand(selectedWays.peek(), newWay)); 191 LinkedList<Way> deletedWays = new LinkedList<Way>(selectedWays); 192 deletedWays.remove(modifyWay); 193 cmds.add(new DeleteCommand(deletedWays)); 194 cmds.add(new ChangeCommand(modifyWay, newWay)); 182 195 183 196 // modify all relations containing the now-deleted ways 184 197 for (Relation r : relationsUsingWays) { … … 195 208 } 196 209 } 197 210 for (String role : rolesToReAdd) { 198 newRel.members.add(new RelationMember(role, selectedWays.peek()));211 newRel.members.add(new RelationMember(role, modifyWay)); 199 212 } 200 213 cmds.add(new ChangeCommand(r, newRel)); 201 214 } 202 215 Main.main.undoRedo.add(new SequenceCommand(tr("Combine {0} ways", selectedWays.size()), cmds)); 203 Main.ds.setSelected( selectedWays.peek());216 Main.ds.setSelected(modifyWay); 204 217 } 205 218 206 219 /**
