Changeset 1712 in josm


Ignore:
Timestamp:
Jun 28, 2009 3:28:36 PM (4 years ago)
Author:
stoecker
Message:

added security check for unwanted moves

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r1640 r1712  
    1717import java.util.LinkedList; 
    1818import java.util.List; 
     19import java.util.TreeSet; 
    1920 
    2021import javax.swing.JOptionPane; 
     
    3637import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor; 
    3738import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor; 
     39import org.openstreetmap.josm.gui.ExtendedDialog; 
    3840import org.openstreetmap.josm.gui.MapFrame; 
    3941import org.openstreetmap.josm.gui.MapView; 
     
    417419            } else { 
    418420                Collection<OsmPrimitive> selection = Main.ds.getSelected(); 
     421                Collection<OsmPrimitive> s = new TreeSet<OsmPrimitive>(); 
     422                int max = Main.pref.getInteger("warn.move.maxelements", 20); 
     423                for (OsmPrimitive osm : selection) 
     424                { 
     425                    if(osm instanceof Node) 
     426                        s.add(osm); 
     427                    else if(osm instanceof Way) 
     428                    { 
     429                        s.add(osm); 
     430                        s.addAll(((Way)osm).nodes); 
     431                    } 
     432                    if(s.size() > max) 
     433                    { 
     434                        if(1 != new ExtendedDialog(Main.parent, tr("Move elements"), 
     435                        tr("You did move more than {0} elements. " 
     436                        + "Moving a large number of elements is often an error.\n" 
     437                        + "Really move them?", max), 
     438                        new String[] {tr("Move them"), tr("Undo move")}, 
     439                        new String[] {"reorder.png", "cancel.png"}).getValue()) 
     440                        { 
     441                            Main.main.undoRedo.undo(); 
     442                        } 
     443                        break; 
     444                    } 
     445                } 
    419446                if (ctrl) { 
    420447                    Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection); 
Note: See TracChangeset for help on using the changeset viewer.