Ignore:
Timestamp:
03.12.2009 19:02:25 (2 years ago)
Author:
Gubaer
Message:

fixed #3400: relation editor: improvement to highlight an element
fixed #3873: Feature request: download selected elements in relation editor
New: Dbl-Click in member table to set the map selection to this member
New: Ctrl-Dbl-Clik in member table to add the member to the the map selection
New: Download selected incomplete members only

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java

    r2512 r2563  
    33 
    44import static org.openstreetmap.josm.tools.I18n.tr; 
     5import static org.openstreetmap.josm.tools.I18n.trn; 
    56 
    67import java.io.InputStream; 
     
    308309        progressMonitor.subTask(tr("Downloading OSM data...")); 
    309310        try { 
    310  
    311             merge( 
    312                     OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)) 
    313             ); 
     311            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); 
     312            rememberNodesOfIncompleteWaysToLoad(loaded); 
     313            merge(loaded); 
    314314        } catch(Exception e) { 
    315315            throw new OsmTransferException(e); 
     
    333333        progressMonitor.subTask(tr("Downloading OSM data...")); 
    334334        try { 
    335             merge( 
    336                     OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)) 
    337             ); 
     335            DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); 
     336            rememberNodesOfIncompleteWaysToLoad(loaded); 
     337            merge(loaded); 
    338338        } catch(Exception e) { 
    339339            throw new OsmTransferException(e); 
     
    376376    } 
    377377 
     378    protected void rememberNodesOfIncompleteWaysToLoad(DataSet from) { 
     379        for (Way w: from.getWays()) { 
     380            if (w.incomplete) { 
     381                for (Node n: w.getNodes()) { 
     382                    if (n.incomplete) { 
     383                        nodes.add(n.getId()); 
     384                    } 
     385                } 
     386            } 
     387        } 
     388    } 
     389 
    378390    /** 
    379391     * merges the dataset <code>from</code> to {@see #outputDataSet}. 
     
    401413        case RELATION:  msg = tr("Fetching a package of relations from ''{0}''", OsmApi.getOsmApi().getBaseUrl()); break; 
    402414        } 
    403         progressMonitor.setCustomText(msg); 
     415        progressMonitor.indeterminateSubTask(msg); 
    404416        Set<Long> toFetch = new HashSet<Long>(ids); 
    405417        toFetch.addAll(ids); 
     
    428440     * found on  the server (the server response code was 404) 
    429441     * 
    430      * Invoke {@see #getSkippedWay()} to get a list of ways which this reader could not build from 
    431      * the fetched data because the ways refer to nodes which don't exist on the server. 
    432      * 
    433442     * @return the parsed data 
    434443     * @exception OsmTransferException thrown if an error occurs while communicating with the API server 
    435444     * @see #getMissingPrimitives() 
    436      * @see #getSkippedWays() 
    437      * 
    438  
     445     * 
    439446     */ 
    440447    @Override 
    441448    public DataSet parseOsm(ProgressMonitor progressMonitor) throws OsmTransferException { 
    442         progressMonitor.beginTask(""); 
     449        int n = nodes.size() + ways.size() + relations.size(); 
     450        progressMonitor.beginTask(trn("Downloading {0} object from ''{1}''", "Downloading {0} objects from ''{1}''", n, n, OsmApi.getOsmApi().getBaseUrl())); 
    443451        try { 
    444452            missingPrimitives = new HashSet<Long>(); 
    445453            if (isCanceled())return null; 
     454            fetchPrimitives(ways,OsmPrimitiveType.WAY, progressMonitor); 
     455            if (isCanceled())return null; 
    446456            fetchPrimitives(nodes,OsmPrimitiveType.NODE, progressMonitor); 
    447             if (isCanceled())return null; 
    448             fetchPrimitives(ways,OsmPrimitiveType.WAY, progressMonitor); 
    449457            if (isCanceled())return null; 
    450458            fetchPrimitives(relations,OsmPrimitiveType.RELATION, progressMonitor); 
Note: See TracChangeset for help on using the changeset viewer.