Index: src/org/openstreetmap/josm/io/GpxImporter.java
===================================================================
--- src/org/openstreetmap/josm/io/GpxImporter.java	(Revision 4738)
+++ src/org/openstreetmap/josm/io/GpxImporter.java	(Arbeitskopie)
@@ -23,9 +23,11 @@
 
 public class GpxImporter extends FileImporter {
 
-    protected GpxLayer gpxLayer;
-    protected MarkerLayer markerLayer;
-    protected Runnable postLayerTask;
+    protected class GpxImporterData {
+        public GpxLayer gpxLayer;
+        public MarkerLayer markerLayer;
+        public Runnable postLayerTask;
+    }
 
     public GpxImporter() {
         super(new ExtensionFileFilter("gpx,gpx.gz", "gpx", tr("GPX Files") + " (*.gpx *.gpx.gz)"));
@@ -39,42 +41,43 @@
             is = new FileInputStream(file);
         }
         String fileName = file.getName();
-        loadLayers(is, file, fileName, tr("Markers from {0}", fileName), progressMonitor);
+        final GpxImporterData data = loadLayers(is, file, fileName, tr("Markers from {0}", fileName), progressMonitor);
 
         // FIXME: remove UI stuff from the IO subsystem
         GuiHelper.runInEDT(new Runnable() {
             public void run() {
-                if (markerLayer != null) {
-                    Main.main.addLayer(markerLayer);
+                if (data.markerLayer != null) {
+                    Main.main.addLayer(data.markerLayer);
                 }
-                if (gpxLayer != null) {
-                    Main.main.addLayer(gpxLayer);
+                if (data.gpxLayer != null) {
+                    Main.main.addLayer(data.gpxLayer);
                 }
-                postLayerTask.run();
+                data.postLayerTask.run();
             }
         });
     }
 
-    public void loadLayers(InputStream is, final File associatedFile,
+    public GpxImporterData loadLayers(InputStream is, final File associatedFile,
                     final String gpxLayerName, String markerLayerName, ProgressMonitor progressMonitor) throws IOException {
+        final GpxImporterData data = new GpxImporterData();
         try {
             final GpxReader r = new GpxReader(is);
             final boolean parsedProperly = r.parse(true);
             r.data.storageFile = associatedFile;
             if (r.data.hasRoutePoints() || r.data.hasTrackPoints()) {
-                gpxLayer = new GpxLayer(r.data, gpxLayerName, associatedFile != null);
+                data.gpxLayer = new GpxLayer(r.data, gpxLayerName, associatedFile != null);
             }
             if (Main.pref.getBoolean("marker.makeautomarkers", true) && !r.data.waypoints.isEmpty()) {
-                markerLayer = new MarkerLayer(r.data, markerLayerName, associatedFile, gpxLayer, false);
-                if (markerLayer.data.size() == 0) {
-                    markerLayer = null;
+                data.markerLayer = new MarkerLayer(r.data, markerLayerName, associatedFile, data.gpxLayer, false);
+                if (data.markerLayer.data.size() == 0) {
+                    data.markerLayer = null;
                 }
             }
-            postLayerTask = new Runnable() {
+            data.postLayerTask = new Runnable() {
                 @Override
                 public void run() {
-                    if (markerLayer != null) {
-                        markerLayer.addMouseHandler();
+                    if (data.markerLayer != null) {
+                        data.markerLayer.addMouseHandler();
                     }
                     if (!parsedProperly) {
                         String msg;
@@ -93,17 +96,6 @@
             e.printStackTrace();
             throw new IOException(tr("Parsing data for layer ''{0}'' failed", gpxLayerName));
         }
+        return data;
     }
-
-    public GpxLayer getGpxLayer() {
-        return gpxLayer;
-    }
-
-    public MarkerLayer getMarkerLayer() {
-        return markerLayer;
-    }
-
-    public Runnable getPostLayerTask() {
-        return postLayerTask;
-    }
 }
