Index: P:/workspace_tools/JOSM/src/org/openstreetmap/josm/actions/OpenAction.java
===================================================================
--- P:/workspace_tools/JOSM/src/org/openstreetmap/josm/actions/OpenAction.java	(revision 639)
+++ P:/workspace_tools/JOSM/src/org/openstreetmap/josm/actions/OpenAction.java	(working copy)
@@ -17,21 +17,22 @@
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
-import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
+import org.openstreetmap.josm.io.GpxReader;
+import org.openstreetmap.josm.io.NmeaReader;
 import org.openstreetmap.josm.io.OsmReader;
-import org.openstreetmap.josm.io.GpxReader;
 import org.xml.sax.SAXException;
 
 /**
  * Open a file chooser dialog and select an file to import. Than call the gpx-import
  * driver. Finally open an internal frame into the main window with the gpx data shown.
- * 
+ *
  * @author imi
  */
 public class OpenAction extends DiskAccessAction {
-	
+
 	/**
 	 * Create an open action. The name is "Open a file".
 	 */
@@ -55,6 +56,8 @@
 		try {
 			if (asGpxData(file.getName()))
 				openFileAsGpx(file);
+			else if (asNmeaData(file.getName()))
+				openFileAsNmea(file);
 			else
 				openAsData(file);
 		} catch (SAXException x) {
@@ -102,9 +105,33 @@
     }
 
 
+	private void openFileAsNmea(File file) throws IOException, FileNotFoundException {
+		String fn = file.getName();
+		if (ExtensionFileFilter.filters[ExtensionFileFilter.NMEA].acceptName(fn)) {
+			NmeaReader r = null;
+			r = new NmeaReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
+			r.data.storageFile = file;
+			GpxLayer gpxLayer = new GpxLayer(r.data, fn);
+			Main.main.addLayer(gpxLayer);
+			if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
+				MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), file, gpxLayer);
+				if (ml.data.size() > 0) {
+					Main.main.addLayer(ml);
+				}
+			}
+
+		} else {
+			throw new IllegalStateException();
+		}
+    }
+
 	private boolean asGpxData(String fn) {
 		return ExtensionFileFilter.filters[ExtensionFileFilter.GPX].acceptName(fn);
 	}
 
+	private boolean asNmeaData(String fn) {
+		return ExtensionFileFilter.filters[ExtensionFileFilter.NMEA].acceptName(fn);
+	}
 
+
 }
