Index: trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 2048)
+++ trunk/src/org/openstreetmap/josm/gui/PleaseWaitDialog.java	(revision 2050)
@@ -85,14 +85,3 @@
         setSize(Main.pref.getInteger("progressdialog.size", 600), 120);
     }
-
-    @Override
-    public void setVisible(boolean visible) {
-        super.setVisible(visible);
-        if (visible) {
-            // make sure this dialog is always on top of the main JOSM window
-            // and all the other windows (relation editors, detached dialogs, etc.)
-            //
-            toFront();
-        }
-    }
 }
Index: trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 2048)
+++ trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 2050)
@@ -10,4 +10,6 @@
 import java.io.IOException;
 import java.io.InputStream;
+
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -47,8 +49,19 @@
         OsmReader osm = OsmReader.parseDataSetOsm(in, NullProgressMonitor.INSTANCE);
         DataSet dataSet = osm.getDs();
-        OsmDataLayer layer = new OsmDataLayer(dataSet, associatedFile.getName(), associatedFile);
-        Main.main.addLayer(layer);
-        layer.fireDataChange();
-        layer.onPostLoadFromFile();
+        final OsmDataLayer layer = new OsmDataLayer(dataSet, associatedFile.getName(), associatedFile);
+        // FIXME: remove UI stuff from IO subsystem
+        //
+        Runnable uiStuff = new Runnable() {
+            public void run() {
+                Main.main.addLayer(layer);
+                layer.fireDataChange();
+                layer.onPostLoadFromFile();
+            }
+        };
+        if (SwingUtilities.isEventDispatchThread()) {
+            uiStuff.run();
+        } else {
+            SwingUtilities.invokeLater(uiStuff);
+        }
     }
 }
