Index: src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java =================================================================== --- src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java (revision 4216) +++ src/org/openstreetmap/josm/io/MultiFetchServerObjectReader.java (working copy) @@ -299,7 +299,7 @@ if (in == null) return; progressMonitor.subTask(tr("Downloading OSM data...")); try { - DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); + DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(pkg.size(), false)); rememberNodesOfIncompleteWaysToLoad(loaded); merge(loaded); } catch(Exception e) { @@ -323,7 +323,7 @@ return; progressMonitor.subTask(tr("Downloading OSM data...")); try { - DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); + DataSet loaded = OsmReader.parseDataSet(in, progressMonitor.createSubTaskMonitor(1, false)); rememberNodesOfIncompleteWaysToLoad(loaded); merge(loaded); } catch(Exception e) { @@ -403,11 +403,12 @@ case WAY: msg = tr("Fetching a package of ways from ''{0}''", OsmApi.getOsmApi().getBaseUrl()); break; case RELATION: msg = tr("Fetching a package of relations from ''{0}''", OsmApi.getOsmApi().getBaseUrl()); break; } - progressMonitor.indeterminateSubTask(msg); + progressMonitor.setTicksCount(ids.size()); + progressMonitor.setTicks(0); Set toFetch = new HashSet(ids); - toFetch.addAll(ids); while(! toFetch.isEmpty() && !isCanceled()) { Set pkg = extractIdPackage(toFetch); + progressMonitor.subTask(msg + "... " + progressMonitor.getTicks() + "/" + progressMonitor.getTicksCount()); try { multiGetIdPackage(type, pkg, progressMonitor); } catch(OsmApiException e) {