Index: trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 4757)
+++ trunk/src/org/openstreetmap/josm/gui/progress/AbstractProgressMonitor.java	(revision 4758)
@@ -6,6 +6,4 @@
 import java.util.LinkedList;
 import java.util.Queue;
-
-import javax.swing.SwingUtilities;
 
 public abstract class AbstractProgressMonitor implements ProgressMonitor {
@@ -61,12 +59,4 @@
         }
         throw new ProgressException("Expected states are %s but current state is %s", Arrays.asList(expectedStates).toString(), state);
-    }
-
-    protected void doInEDT(Runnable runnable) {
-        if (SwingUtilities.isEventDispatchThread()) {
-            runnable.run();
-        } else {
-            SwingUtilities.invokeLater(runnable);
-        }
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 4757)
+++ trunk/src/org/openstreetmap/josm/gui/progress/PleaseWaitProgressMonitor.java	(revision 4758)
@@ -13,4 +13,5 @@
 
 import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -48,4 +49,10 @@
     private boolean cancelable;
 
+    private void doInEDT(Runnable runnable) {
+        // This must be invoke later even if current thread is EDT because inside there is dialog.setVisible which freeze current code flow until modal dialog is closed
+        SwingUtilities.invokeLater(runnable);
+    }
+
+
     private void setDialogVisible(boolean visible) {
         if (dialog.isVisible() != visible) {
Index: trunk/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java	(revision 4757)
+++ trunk/src/org/openstreetmap/josm/gui/progress/SwingRenderingProgressMonitor.java	(revision 4758)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.progress;
+
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -25,4 +27,12 @@
         CheckParameterUtil.ensureParameterNotNull(delegate, "delegate");
         this.delegate = delegate;
+    }
+
+    private void doInEDT(Runnable runnable) {
+        if (SwingUtilities.isEventDispatchThread()) {
+            runnable.run();
+        } else {
+            SwingUtilities.invokeLater(runnable);
+        }
     }
 
