Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/CadastrePlugin.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/CadastrePlugin.java	(revision 33679)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/CadastrePlugin.java	(revision 33680)
@@ -48,4 +48,5 @@
 import org.openstreetmap.josm.plugins.fr.cadastre.actions.mapmode.WMSAdjustAction;
 import org.openstreetmap.josm.plugins.fr.cadastre.actions.upload.CheckSourceUploadHook;
+import org.openstreetmap.josm.plugins.fr.cadastre.download.CadastreDownloadTask;
 import org.openstreetmap.josm.plugins.fr.cadastre.edigeo.pci.EdigeoPciImporter;
 import org.openstreetmap.josm.plugins.fr.cadastre.preferences.CadastrePreferenceSetting;
@@ -229,4 +230,7 @@
         registerSessionLayerExporter(WMSLayer.class, CadastreSessionExporter.class);
         registerSessionLayerImporter("cadastre-fr", CadastreSessionImporter.class);
+
+        MainApplication.getMenu().openLocation.addDownloadTaskClass(CadastreDownloadTask.class);
+        //DownloadDialog.addDownloadSource(new CadastreDownloadSource());
     }
 
Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreDownloadTask.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreDownloadTask.java	(revision 33680)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreDownloadTask.java	(revision 33680)
@@ -0,0 +1,39 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.fr.cadastre.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.util.concurrent.Future;
+
+import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.gui.MainApplication;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+
+/**
+ * Cadastre download task.
+ */
+public class CadastreDownloadTask extends DownloadOsmTask {
+
+    @Override
+    public Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor) {
+        return null;
+    }
+
+    @Override
+    public Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor) {
+        downloadTask = new DownloadTask(newLayer, new CadastreServerReader(url), progressMonitor);
+        currentBounds = null;
+        return MainApplication.worker.submit(downloadTask);
+    }
+
+    @Override
+    public String[] getPatterns() {
+        return new String[]{"https?://.*edigeo.*.tar.bz2"};
+    }
+
+    @Override
+    public String getTitle() {
+        return tr("Download cadastre data");
+    }
+}
Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreServerReader.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreServerReader.java	(revision 33680)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/download/CadastreServerReader.java	(revision 33680)
@@ -0,0 +1,38 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.plugins.fr.cadastre.download;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.OsmServerReader;
+import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.plugins.fr.cadastre.edigeo.pci.EdigeoPciImporter;
+
+/**
+ * This DataReader reads Cadastre files directly from an URL.
+ */
+public class CadastreServerReader extends OsmServerReader {
+
+    private final String url;
+
+    /**
+     * Constructs a new {@code CadastreServerReader}.
+     * @param url source URL
+     */
+    public CadastreServerReader(String url) {
+        this.url = url;
+    }
+
+    @Override
+    public DataSet parseOsm(ProgressMonitor progressMonitor) throws OsmTransferException {
+        try {
+            progressMonitor.beginTask(tr("Contacting Server...", 10));
+            return new EdigeoPciImporter().parseDataSet(url);
+        } catch (Exception e) {
+            throw new OsmTransferException(e);
+        } finally {
+            progressMonitor.finishTask();
+        }
+    }
+}
Index: applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java	(revision 33679)
+++ applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciImporter.java	(revision 33680)
@@ -13,5 +13,7 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.io.importexport.OsmImporter;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.CachedFile;
 import org.openstreetmap.josm.io.IllegalDataException;
 import org.openstreetmap.josm.tools.Logging;
@@ -55,3 +57,17 @@
         }
     }
+
+    /**
+     * Import data from an URL.
+     * @param source source URL
+     * @return imported data set
+     * @throws IOException if any I/O error occurs
+     * @throws IllegalDataException if an error was found while parsing the data
+     */
+    public DataSet parseDataSet(final String source) throws IOException, IllegalDataException {
+        try (CachedFile cf = new CachedFile(source)) {
+            this.file = cf.getFile();
+            return parseDataSet(cf.getInputStream(), NullProgressMonitor.INSTANCE);
+        }
+    }
 }
