Index: /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 9536)
+++ /trunk/src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 9537)
@@ -53,11 +53,8 @@
         final List<Class<? extends FileImporter>> importerNames = Arrays.asList(
                 org.openstreetmap.josm.io.OsmImporter.class,
-                org.openstreetmap.josm.io.OsmGzipImporter.class,
-                org.openstreetmap.josm.io.OsmZipImporter.class,
                 org.openstreetmap.josm.io.OsmChangeImporter.class,
                 org.openstreetmap.josm.io.GpxImporter.class,
                 org.openstreetmap.josm.io.NMEAImporter.class,
                 org.openstreetmap.josm.io.NoteImporter.class,
-                org.openstreetmap.josm.io.OsmBzip2Importer.class,
                 org.openstreetmap.josm.io.JpgImporter.class,
                 org.openstreetmap.josm.io.WMSLayerImporter.class,
@@ -142,4 +139,6 @@
     }
 
+    public enum AddArchiveExtension { NONE, BASE, ALL }
+
     /**
      * Updates the {@link AllFormatsImporter} that is contained in the importers list. If
@@ -287,4 +286,40 @@
         this.defaultExtension = defaultExtension;
         this.description = description;
+    }
+
+    /**
+     * 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
+     * @param addArchiveExtension Whether to also add the archive extensions to the description
+     * @param archiveExtensions List of extensions to be added
+     * @return The constructed filter
+     */
+    public static ExtensionFileFilter newFilterWithArchiveExtensions(
+            String extensions, String defaultExtension, String description, AddArchiveExtension addArchiveExtension, List<String> archiveExtensions) {
+        final Collection<String> extensionsPlusArchive = new LinkedHashSet<>();
+        final Collection<String> extensionsForDescription = new LinkedHashSet<>();
+        for (String e : extensions.split(",")) {
+            extensionsPlusArchive.add(e);
+            if (addArchiveExtension != AddArchiveExtension.NONE) {
+                extensionsForDescription.add("*." + e);
+            }
+            for (String extension : archiveExtensions) {
+                extensionsPlusArchive.add(e + '.' + extension);
+                if (addArchiveExtension == AddArchiveExtension.ALL) {
+                    extensionsForDescription.add("*." + e + '.' + extension);
+                }
+            }
+        }
+        return new ExtensionFileFilter(
+            Utils.join(",", extensionsPlusArchive),
+            defaultExtension,
+            description + (!extensionsForDescription.isEmpty()
+                ? " (" + Utils.join(", ", extensionsForDescription) + ")"
+                : "")
+            );
     }
 
@@ -301,18 +336,13 @@
     public static ExtensionFileFilter newFilterWithArchiveExtensions(
             String extensions, String defaultExtension, String description, boolean addArchiveExtensionsToDescription) {
-        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);
-            if (addArchiveExtensionsToDescription) {
-                extensionsForDescription.add("*." + e + ".gz");
-                extensionsForDescription.add("*." + e + ".bz2");
-            }
-        }
-        return new ExtensionFileFilter(Utils.join(",", extensionsPlusArchive), defaultExtension,
-                description + " (" + Utils.join(", ", extensionsForDescription) + ")");
+
+        List<String> archiveExtensions = Arrays.asList("gz", "bz2");
+        return newFilterWithArchiveExtensions(
+            extensions,
+            defaultExtension,
+            description,
+            addArchiveExtensionsToDescription ? AddArchiveExtension.ALL : AddArchiveExtension.BASE,
+            archiveExtensions
+        );
     }
 
Index: /trunk/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java	(revision 9536)
+++ /trunk/src/org/openstreetmap/josm/io/OsmBzip2Exporter.java	(revision 9537)
@@ -1,4 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.actions.ExtensionFileFilter;
 
 /**
@@ -11,5 +15,6 @@
      */
     public OsmBzip2Exporter() {
-        super(OsmBzip2Importer.FILE_FILTER);
+        super(new ExtensionFileFilter(
+            "osm.bz2,osm.bz", "osm.bz2", tr("OSM Server Files bzip2 compressed") + " (*.osm.bz2, *.osm.bz)"));
     }
 
Index: unk/src/org/openstreetmap/josm/io/OsmBzip2Importer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmBzip2Importer.java	(revision 9536)
+++ 	(revision )
@@ -1,28 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import org.openstreetmap.josm.actions.ExtensionFileFilter;
-
-/**
- * OSM data importer that uncompresses it from Bzip2 format.
- */
-public class OsmBzip2Importer extends OsmImporter {
-
-    /**
-     * File filter used to load/save Bzip2 compressed OSM files.
-     */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osm.bz2,osm.bz", "osm.bz2", tr("OSM Server Files bzip2 compressed") + " (*.osm.bz2 *.osm.bz)");
-
-    /**
-     * Constructs a new {@code OsmBzip2Importer}.
-     */
-    public OsmBzip2Importer() {
-        super(FILE_FILTER);
-    }
-
-    // compression handling is performed in super-class
-
-}
Index: /trunk/src/org/openstreetmap/josm/io/OsmExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 9536)
+++ /trunk/src/org/openstreetmap/josm/io/OsmExporter.java	(revision 9537)
@@ -32,5 +32,6 @@
      */
     public OsmExporter() {
-        super(OsmImporter.FILE_FILTER);
+        super(new ExtensionFileFilter(
+            "osm,xml", "osm", tr("OSM Server Files") + " (*.osm)"));
     }
 
Index: /trunk/src/org/openstreetmap/josm/io/OsmGzipExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmGzipExporter.java	(revision 9536)
+++ /trunk/src/org/openstreetmap/josm/io/OsmGzipExporter.java	(revision 9537)
@@ -1,4 +1,8 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.actions.ExtensionFileFilter;
 
 /**
@@ -11,5 +15,6 @@
      */
     public OsmGzipExporter() {
-        super(OsmGzipImporter.FILE_FILTER);
+        super(new ExtensionFileFilter(
+            "osm.gz", "osm.gz", tr("OSM Server Files gzip compressed") + " (*.osm.gz)"));
     }
 
Index: unk/src/org/openstreetmap/josm/io/OsmGzipImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmGzipImporter.java	(revision 9536)
+++ 	(revision )
@@ -1,28 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import org.openstreetmap.josm.actions.ExtensionFileFilter;
-
-/**
- * OSM data importer that uncompresses it from Gzip format.
- */
-public class OsmGzipImporter extends OsmImporter {
-
-    /**
-     * File filter used to load/save Gzip compressed OSM files.
-     */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osm.gz", "osm.gz", tr("OSM Server Files gzip compressed") + " (*.osm.gz)");
-
-    /**
-     * Constructs a new {@code OsmGzipImporter}.
-     */
-    public OsmGzipImporter() {
-        super(FILE_FILTER);
-    }
-
-    // compression handling is performed in super-class
-
-}
Index: /trunk/src/org/openstreetmap/josm/io/OsmImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 9536)
+++ /trunk/src/org/openstreetmap/josm/io/OsmImporter.java	(revision 9537)
@@ -8,4 +8,5 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 
 import javax.swing.JOptionPane;
@@ -24,6 +25,6 @@
      * The OSM file filter (*.osm and *.xml files).
      */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osm,xml", "osm", tr("OSM Server Files") + " (*.osm *.xml)");
+    public static final ExtensionFileFilter FILE_FILTER = ExtensionFileFilter.newFilterWithArchiveExtensions(
+            "osm,xml", "osm", tr("OSM Server Files") + " (*.osm, *.osm.gz, *.osm.bz2, *.osm.zip, *.xml)", ExtensionFileFilter.AddArchiveExtension.NONE, Arrays.asList("gz", "bz", "bz2", "zip"));
 
     /**
Index: unk/src/org/openstreetmap/josm/io/OsmZipImporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/OsmZipImporter.java	(revision 9536)
+++ 	(revision )
@@ -1,28 +1,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm.io;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-
-import org.openstreetmap.josm.actions.ExtensionFileFilter;
-
-/**
- * OSM data importer that uncompresses it from Zip format.
- * @since 6882
- */
-public class OsmZipImporter extends OsmImporter {
-
-    /**
-     * File filter used to load/save Zip compressed OSM files.
-     */
-    public static final ExtensionFileFilter FILE_FILTER = new ExtensionFileFilter(
-            "osm.zip", "osm.zip", tr("OSM Server Files zip compressed") + " (*.osm.zip)");
-
-    /**
-     * Constructs a new {@code OsmZipImporter}.
-     */
-    public OsmZipImporter() {
-        super(FILE_FILTER);
-    }
-
-    // compression handling is performed in super-class
-}
