Changeset 4539 in josm


Ignore:
Timestamp:
Oct 23, 2011 7:41:25 PM (20 months ago)
Author:
bastiK
Message:

applied #6853 - In draw mode, select the way to be extended immediately (patch by olejorgenb)

File:
1 edited

Legend:

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

    r4327 r4539  
    5353import org.openstreetmap.josm.tools.Pair; 
    5454import org.openstreetmap.josm.tools.Shortcut; 
     55import org.openstreetmap.josm.tools.Utils; 
    5556 
    5657/** 
    57  * 
     58 * Mapmode to add nodes, create and extend ways. 
    5859 */ 
    5960public class DrawAction extends MapMode implements MapViewPaintable, SelectionChangedListener, AWTEventListener { 
     
    9899        updateStatusLine(); 
    99100        if ((!drawHelperLine || wayIsFinished) && !drawTargetHighlight) return; 
     101        // update selection to reflect which way being modified 
     102        if (currentBaseNode != null && getCurrentDataSet().getSelected().isEmpty() == false) { 
     103            Way continueFrom = getWayForNode(currentBaseNode); 
     104            if (alt && continueFrom != null) { 
     105                getCurrentDataSet().beginUpdate(); // to prevent the selection listener to screw around with the state 
     106                getCurrentDataSet().addSelected(currentBaseNode); 
     107                getCurrentDataSet().clearSelection(continueFrom); 
     108                getCurrentDataSet().endUpdate(); 
     109            } else if (!alt && continueFrom != null) { 
     110                getCurrentDataSet().addSelected(continueFrom); 
     111            } 
     112        } 
    100113        Main.map.mapView.repaint(); 
    101114    } 
     
    294307                // (this is just a convenience option so that people don't 
    295308                // have to switch modes) 
    296                 newSelection.clear(); 
    297                 newSelection.add(n); 
     309 
    298310                getCurrentDataSet().setSelected(n); 
     311                // If we extend/continue an existing way, select it already now to make it obvious 
     312                Way continueFrom = getWayForNode(n); 
     313                if (continueFrom != null) { 
     314                    getCurrentDataSet().addSelected(continueFrom); 
     315                } 
     316 
    299317                // The user explicitly selected a node, so let him continue drawing 
    300318                wayIsFinished = false; 
     
    718736    public Way getWayForNode(Node n) { 
    719737        Way way = null; 
    720         for (Way w : OsmPrimitive.getFilteredList(n.getReferrers(), Way.class)) { 
     738        for (Way w : Utils.filteredCollection(n.getReferrers(), Way.class)) { 
    721739            if (!w.isUsable() || w.getNodesCount() < 1) { 
    722740                continue; 
Note: See TracChangeset for help on using the changeset viewer.