Index: trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 8893)
+++ trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 8894)
@@ -5,6 +5,8 @@
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -279,4 +281,27 @@
 
     /**
+     * Construct an extension file filter with the extensions supported by {@link org.openstreetmap.josm.io.Compression}
+     * automatically added to the {@code extensions}. The specified {@code extensions} will be added to the description
+     * in the form {@code old-description (*.ext1, *.ext2)}.
+     * @param extensions The comma-separated list of file extensions
+     * @param defaultExtension The default extension
+     * @param description A short textual description of the file type without supported extensions in parentheses
+     * @return The constructed filter
+     */
+    public static ExtensionFileFilter newFilterWithArchiveExtensions(String extensions, String defaultExtension, String description) {
+        final Collection<String> extensionsPlusArchive = new LinkedHashSet<>();
+        final Collection<String> extensionsForDescription = new LinkedHashSet<>();
+        for (String e : extensions.split(",")) {
+            extensionsPlusArchive.add(e);
+            extensionsPlusArchive.add(e + ".gz");
+            extensionsPlusArchive.add(e + ".bz2");
+            extensionsForDescription.add("*." + e);
+            // intentionally do not add [e].gz and [e].bz2 to extensionsForDescription in order to avoid long texts
+        }
+        return new ExtensionFileFilter(Utils.join(",", extensionsPlusArchive), defaultExtension,
+                description + " (" + Utils.join(", ", extensionsForDescription) + ")");
+    }
+
+    /**
      * Returns true if this file filter accepts the given filename.
      * @param filename The filename to check after
Index: trunk/src/org/openstreetmap/josm/io/NMEAImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 8893)
+++ trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 8894)
@@ -5,5 +5,4 @@
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -31,6 +30,6 @@
      * The NMEA file filter (*.nmea *.nme *.nma *.log *.txt files).
      */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "nmea,nme,nma,log,txt", "nmea", tr("NMEA-0183 Files") + " (*.nmea *.nme *.nma *.log *.txt)");
+    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "nmea,nme,nma,log,txt", "nmea", tr("NMEA-0183 Files"));
 
     /**
@@ -44,5 +43,5 @@
     public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
         final String fn = file.getName();
-        try (InputStream fis = new FileInputStream(file)) {
+        try (InputStream fis = Compression.getUncompressedFileInputStream(file)) {
             final NmeaReader r = new NmeaReader(fis);
             if (r.getNumberOfCoordinates() > 0) {
