Changeset 3630 in josm


Ignore:
Timestamp:
Oct 24, 2010 12:39:02 AM (3 years ago)
Author:
bastiK
Message:

applied #5552 (patch by extropy) - Delete performance improvement

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/Way.java

    r3515 r3630  
    66import java.util.ArrayList; 
    77import java.util.Arrays; 
    8 import java.util.Collection; 
    98import java.util.List; 
     9import java.util.Set; 
    1010 
    1111import org.openstreetmap.josm.Main; 
     
    294294    } 
    295295 
    296     public void removeNodes(Collection<? extends OsmPrimitive> selection) { 
     296    public void removeNodes(Set<? extends OsmPrimitive> selection) { 
    297297        if (isIncomplete()) return; 
    298298        boolean locked = writeLock(); 
    299299        try { 
    300             for(OsmPrimitive p : selection) { 
    301                 if (p instanceof Node) { 
    302                     removeNode((Node)p); 
     300            boolean closed = (lastNode() == firstNode() && selection.contains(lastNode())); 
     301            List<Node> copy = new ArrayList<Node>(); 
     302 
     303            for (Node n: nodes) { 
     304                if (!selection.contains(n)) { 
     305                    copy.add(n); 
    303306                } 
    304307            } 
     308 
     309            int i = copy.size(); 
     310            if (closed && i > 2) { 
     311                copy.add(copy.get(0)); 
     312            } else if (i >= 2 && i <= 3 && copy.get(0) == copy.get(i-1)) { 
     313                copy.remove(i-1); 
     314            } 
     315            setNodes(copy); 
    305316        } finally { 
    306317            writeUnlock(locked); 
Note: See TracChangeset for help on using the changeset viewer.