Ticket #5552: deleteSpeed.diff
File deleteSpeed.diff, 1.8 KB (added by , 15 years ago) |
---|
-
src/org/openstreetmap/josm/data/osm/Way.java
5 5 6 6 import java.util.ArrayList; 7 7 import java.util.Arrays; 8 import java.util.Collection;9 8 import java.util.List; 9 import java.util.Set; 10 10 11 11 import org.openstreetmap.josm.Main; 12 12 import org.openstreetmap.josm.data.osm.visitor.Visitor; … … 293 293 } 294 294 } 295 295 296 public void removeNodes( Collection<? extends OsmPrimitive> selection) {296 public void removeNodes(Set<? extends OsmPrimitive> selection) { 297 297 if (isIncomplete()) return; 298 298 boolean locked = writeLock(); 299 299 try { 300 for(OsmPrimitive p : selection) { 301 if (p instanceof Node) { 302 removeNode((Node)p); 300 301 //test if there is anything to remove 302 int nodesToRemove = 0; 303 for (Node n: nodes) { 304 nodesToRemove ++; 305 } 306 307 if (nodesToRemove > 0) { 308 309 boolean closed = (lastNode() == firstNode() && selection.contains(lastNode())); 310 List<Node> copy = new ArrayList<Node>(this.getNodesCount() - nodesToRemove); 311 312 for (Node n: nodes) { 313 if (!selection.contains(n)) { 314 copy.add(n); 315 } 303 316 } 317 318 int i = copy.size(); 319 if (closed && i > 2) { 320 copy.add(copy.get(0)); 321 } else if (i >= 2 && i <= 3 && copy.get(0) == copy.get(i-1)) { 322 copy.remove(i-1); 323 } 324 setNodes(copy); 304 325 } 305 326 } finally { 306 327 writeUnlock(locked);