Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 4738)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 4739)
@@ -126,5 +126,5 @@
         }
 
-        public void setTitle(String text) {
+        public void setCurrentAction(String text) {
             this.title = text;
             updateText();
Index: trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 4738)
+++ trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 4739)
@@ -112,4 +112,8 @@
     }
 
+    public void setCurrentAction(String text) {
+        currentAction.setText(text);
+    }
+
     /**
      * Appends a log message to the progress dialog. If the log area isn't visible yet
@@ -166,5 +170,5 @@
      *
      * @param callback the cancel callback
-     */    
+     */
     public void setInBackgroundCallback(ActionListener callback) {
         if (callback == null) {
Index: trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 4738)
+++ trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 4739)
@@ -21,19 +21,23 @@
 public class PleaseWaitProgressMonitor extends AbstractProgressMonitor {
 
-	/**
-	 * Implemented by both foreground dialog and background progress dialog (in status bar)
-	 */
+    /**
+     * Implemented by both foreground dialog and background progress dialog (in status bar)
+     */
     public interface ProgressMonitorDialog {
         void setVisible(boolean visible);
         void updateProgress(int progress);
         void setCustomText(String text);
-        void setTitle(String text);
+        void setCurrentAction(String text);
         void setIndeterminate(boolean newValue);
-        void appendLogMessage(String message);
+        void appendLogMessage(String message); //TODO Not implemented properly in background monitor, log message will get lost if progress runs in background
     }
 
     public static final int PROGRESS_BAR_MAX = 100;
     private final Window dialogParent;
+
     private int currentProgressValue = 0;
+    private String customText;
+    private String title;
+    private boolean indeterminate;
 
     private boolean isInBackground;
@@ -110,4 +114,5 @@
             ProgressMonitorDialog dialog = getDialog();
             if (dialog != null) {
+                reset();
                 dialog.setVisible(true);
             }
@@ -179,4 +184,5 @@
     protected void doSetCustomText(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
+        this.customText = title;
         doInEDT(new Runnable() {
             public void run() {
@@ -192,9 +198,10 @@
     protected void doSetTitle(final String title) {
         checkState(State.IN_TASK, State.IN_SUBTASK);
+        this.title = title;
         doInEDT(new Runnable() {
             public void run() {
                 ProgressMonitorDialog dialog = getDialog();
                 if (dialog != null) {
-                    dialog.setTitle(title);
+                    dialog.setCurrentAction(title);
                 }
             }
@@ -204,4 +211,5 @@
     @Override
     protected void doSetIntermediate(final boolean value) {
+        this.indeterminate = value;
         doInEDT(new Runnable() {
             public void run() {
@@ -210,5 +218,5 @@
                 ProgressMonitorDialog dialog = getDialog();
                 if (dialog != null) {
-                    dialog.setIndeterminate(value && PleaseWaitProgressMonitor.this.dialog.progress.getValue() == 0);
+                    dialog.setIndeterminate(value && currentProgressValue == 0);
                 }
             }
@@ -226,4 +234,25 @@
             }
         });
+    }
+
+    public void reset() {
+        if (dialog != null) {
+            dialog.setTitle(title);
+            dialog.setCustomText(customText);
+            dialog.updateProgress(currentProgressValue);
+            dialog.setIndeterminate(indeterminate && currentProgressValue == 0);
+        }
+        BackgroundProgressMonitor backgroundMonitor = null;
+        MapFrame map = Main.map;
+        if (map != null) {
+            backgroundMonitor = map.statusLine.progressMonitor;
+        }
+        if (backgroundMonitor != null) {
+            backgroundMonitor.setCurrentAction(title);
+            backgroundMonitor.setCustomText(customText);
+            backgroundMonitor.updateProgress(currentProgressValue);
+            backgroundMonitor.setIndeterminate(indeterminate && currentProgressValue == 0);
+        }
+
     }
 
@@ -253,4 +282,5 @@
             public void run() {
                 dialog.setInBackgroundPossible(PleaseWaitProgressMonitor.this.taskId != null && Main.isDisplayingMapView());
+                reset();
                 getDialog();
             }
