Changeset 25857 in osm for applications


Ignore:
Timestamp:
2011-04-16T19:53:11+02:00 (13 years ago)
Author:
zverik
Message:

delete obsolete nodes, move tags

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/dumbutils/src/dumbutils/ReplaceGeometryAction.java

    r25854 r25857  
    11package dumbutils;
    22
     3import java.awt.geom.Area;
     4import org.openstreetmap.josm.data.osm.Node;
     5import java.util.*;
    36import org.openstreetmap.josm.command.*;
    4 import java.util.List;
    57import org.openstreetmap.josm.Main;
    68import javax.swing.JOptionPane;
     
    4749
    4850        // Now do the replacement
     51        List<Command> commands = new ArrayList<Command>();
    4952        Way result = new Way(way);
    5053        result.setNodes(geometry.getNodes());
     54        // Copy tags from temporary way (source etc.)
     55        for( String key : geometry.keySet() )
     56            result.put(key, geometry.get(key));
     57        commands.add(new ChangeCommand(way, result));
     58        commands.add(new DeleteCommand(geometry));
     59
     60        // Check if there are unconnected nodes, delete them
     61        Set<Node> nodesToDelete = new HashSet<Node>();
     62        Area a = getCurrentDataSet().getDataSourceArea();
     63        for( Node node : way.getNodes() ) {
     64            if( !node.isDeleted() && node.isReferredByWays(1) && (node.isNewOrUndeleted() || a.contains(node.getCoor())) )
     65                nodesToDelete.add(node);
     66        }
     67        if( !nodesToDelete.isEmpty() )
     68            commands.add(new DeleteCommand(nodesToDelete));
    5169
    5270        // Two items in undo stack: change original way and delete geometry way
    53         Command changeCommand = new ChangeCommand(way, result);
    54         Command deleteCommand = new DeleteCommand(geometry);
    5571        Main.main.undoRedo.add(new SequenceCommand(
    5672                tr("Replace geometry of way {0}", way.getDisplayName(DefaultNameFormatter.getInstance())),
    57                 changeCommand, deleteCommand));
     73                commands));
    5874    }
    5975}
Note: See TracChangeset for help on using the changeset viewer.