Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java	(revision 2750)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/DownloadRelationTask.java	(revision 2751)
@@ -17,5 +17,4 @@
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.OsmServerObjectReader;
 import org.openstreetmap.josm.io.OsmTransferException;
@@ -76,12 +75,15 @@
             final DataSet allDownloads = new DataSet();
             int i=0;
+            getProgressMonitor().setTicksCount(relations.size());
             for (Relation relation: relations) {
-                progressMonitor.subTask(tr("({0}/{1}: Downloading relation ''{2}''...", i,relations.size(),relation.getDisplayName(DefaultNameFormatter.getInstance())));
+                i++;
+                getProgressMonitor().setCustomText(tr("({0}/{1}): Downloading relation ''{2}''...", i,relations.size(),relation.getDisplayName(DefaultNameFormatter.getInstance())));
                 synchronized (this) {
                     if (cancelled) return;
                     objectReader = new OsmServerObjectReader(relation.getPrimitiveId(), true /* full download */);
                 }
-                DataSet dataSet = objectReader.parseOsm(progressMonitor
-                        .createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
+                DataSet dataSet = objectReader.parseOsm(
+                        getProgressMonitor().createSubTaskMonitor(0, false)
+                );
                 if (dataSet == null)
                     return;
@@ -92,4 +94,5 @@
                 DataSetMerger merger = new DataSetMerger(allDownloads, dataSet);
                 merger.merge();
+                getProgressMonitor().worked(1);
             }
 
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2750)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 2751)
@@ -591,10 +591,10 @@
         try {
             progressMonitor.beginTask(tr("Prepare OSM data...", 2));
-            progressMonitor.subTask(tr("Parsing OSM data..."));
+            progressMonitor.indeterminateSubTask(tr("Parsing OSM data..."));
             InputSource inputSource = new InputSource(new InputStreamReader(source, "UTF-8"));
             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, reader.new Parser());
             progressMonitor.worked(1);
 
-            progressMonitor.subTask(tr("Preparing data set..."));
+            progressMonitor.indeterminateSubTask(tr("Preparing data set..."));
             reader.ds.beginUpdate();
             try {
