Index: /trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 4813)
+++ /trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 4814)
@@ -22,6 +22,8 @@
 public class OsmImporter extends FileImporter {
 
-    protected OsmDataLayer layer;
-    protected Runnable postLayerTask;
+    protected class OsmImporterData {
+        public OsmDataLayer layer;
+        public Runnable postLayerTask;
+    }
 
     public OsmImporter() {
@@ -45,8 +47,6 @@
 
     protected void importData(InputStream in, final File associatedFile) throws IllegalDataException {
-        loadLayer(in, associatedFile, associatedFile == null ? OsmDataLayer.createNewName() : associatedFile.getName(), NullProgressMonitor.INSTANCE);
-
-        final OsmDataLayer layer = this.layer;
-        final Runnable postLayerTask = this.postLayerTask;
+        final OsmImporterData data = loadLayer(in, associatedFile, 
+                associatedFile == null ? OsmDataLayer.createNewName() : associatedFile.getName(), NullProgressMonitor.INSTANCE);
 
         // FIXME: remove UI stuff from IO subsystem
@@ -54,7 +54,7 @@
             @Override
             public void run() {
-                Main.main.addLayer(layer);
-                postLayerTask.run();
-                layer.onPostLoadFromFile();
+                Main.main.addLayer(data.layer);
+                data.postLayerTask.run();
+                data.layer.onPostLoadFromFile();
             }
         });
@@ -65,11 +65,13 @@
      * associatedFile can be null if the stream does not come from a file.
      */
-    public void loadLayer(InputStream in, final File associatedFile, final String layerName, ProgressMonitor progressMonitor) throws IllegalDataException {
+    public OsmImporterData loadLayer(InputStream in, final File associatedFile, final String layerName, ProgressMonitor progressMonitor) throws IllegalDataException {
         final DataSet dataSet = parseDataSet(in, progressMonitor);
         if (dataSet == null) {
             throw new IllegalDataException(tr("Invalid dataset"));
         }
-        layer = createLayer(dataSet, associatedFile, layerName);
-        postLayerTask = createPostLayerTask(dataSet, associatedFile, layerName);
+        OsmImporterData data = new OsmImporterData();
+        data.layer = createLayer(dataSet, associatedFile, layerName);
+        data.postLayerTask = createPostLayerTask(dataSet, associatedFile, layerName, data.layer);
+        return data;
     }
     
@@ -82,5 +84,5 @@
     }
     
-    protected Runnable createPostLayerTask(final DataSet dataSet, final File associatedFile, final String layerName) {
+    protected Runnable createPostLayerTask(final DataSet dataSet, final File associatedFile, final String layerName, final OsmDataLayer layer) {
         return new Runnable() {
             @Override
@@ -103,11 +105,3 @@
         };
     }
-
-    public OsmDataLayer getLayer() {
-        return layer;
-    }
-
-    public Runnable getPostLayerTask() {
-        return postLayerTask;
-    }
 }
