Index: /trunk/src/org/openstreetmap/josm/io/GpxImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 4756)
+++ /trunk/src/org/openstreetmap/josm/io/GpxImporter.java	(revision 4757)
@@ -24,7 +24,9 @@
 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() {
@@ -40,5 +42,5 @@
         }
         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);
 
         final GpxLayer gpxLayer = this.gpxLayer;
@@ -49,17 +51,18 @@
         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);
@@ -67,17 +70,17 @@
             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) {
@@ -98,16 +101,5 @@
             throw new IOException(tr("Parsing data for layer ''{0}'' failed", gpxLayerName));
         }
-    }
-
-    public GpxLayer getGpxLayer() {
-        return gpxLayer;
-    }
-
-    public MarkerLayer getMarkerLayer() {
-        return markerLayer;
-    }
-
-    public Runnable getPostLayerTask() {
-        return postLayerTask;
+        return data;
     }
 }
