Index: /src/org/openstreetmap/josm/actions/ExtensionFileFilter.java
===================================================================
--- /src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 235)
+++ /src/org/openstreetmap/josm/actions/ExtensionFileFilter.java	(revision 236)
@@ -24,5 +24,5 @@
 	public static ExtensionFileFilter[] filters = {
 		new ExtensionFileFilter("osm,xml", "osm", tr("OSM Server Files (.osm .xml)")),
-		new ExtensionFileFilter("gpx", "gpx", tr("GPX Files (.gpx)")),
+		new ExtensionFileFilter("gpx,gpx.gz", "gpx", tr("GPX Files (.gpx .gpx.gz)")),
 		new ExtensionFileFilter("csv,txt", "csv", tr("CSV Files (.csv .txt)")),
 	};
Index: /src/org/openstreetmap/josm/actions/OpenAction.java
===================================================================
--- /src/org/openstreetmap/josm/actions/OpenAction.java	(revision 235)
+++ /src/org/openstreetmap/josm/actions/OpenAction.java	(revision 236)
@@ -12,4 +12,5 @@
 import java.util.Collection;
 import java.util.LinkedList;
+import java.util.zip.GZIPInputStream;
 
 import javax.swing.JFileChooser;
@@ -62,5 +63,11 @@
 				Collection<Marker> markerData = null;
 				if (ExtensionFileFilter.filters[ExtensionFileFilter.GPX].acceptName(fn)) {
-					RawGpsReader r = new RawGpsReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
+					RawGpsReader r = null;
+					// Check to see if we are opening a compressed file
+					if(file.getName().endsWith(".gpx.gz")) {
+						r = new RawGpsReader(new GZIPInputStream(new FileInputStream(file)), file.getAbsoluteFile().getParentFile());
+					} else {
+						r = new RawGpsReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
+					}
 					gpsData = r.trackData;
 					markerData = r.markerData;
