001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.io.download; 003 004import org.openstreetmap.josm.data.Bounds; 005import org.openstreetmap.josm.plugins.streetside.StreetsideLayer; 006import org.openstreetmap.josm.plugins.streetside.gui.StreetsideMainDialog; 007import org.openstreetmap.josm.plugins.streetside.utils.PluginState; 008import org.openstreetmap.josm.plugins.streetside.utils.StreetsideUtils; 009import org.openstreetmap.josm.tools.Logging; 010 011public class StreetsideSquareDownloadRunnable implements Runnable { 012 013 private final Bounds bounds; 014 015 /** 016 * Main constructor. 017 * 018 * @param bounds the bounds of the area that should be downloaded 019 * 020 */ 021 public StreetsideSquareDownloadRunnable(Bounds bounds) { 022 this.bounds = bounds; 023 } 024 025 @Override 026 public void run() { 027 PluginState.startDownload(); 028 StreetsideUtils.updateHelpText(); 029 030 // Download basic sequence data synchronously 031 new SequenceDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds).run(); 032 033 if (Thread.interrupted()) { 034 return; 035 } 036 037 // TODO: Revamp image details for Streetside RRH 038 // Asynchronously load the rest of the image details 039 Thread imgDetailsThread = new Thread(new ImageDetailsDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds)); 040 imgDetailsThread.start(); 041 042 // TODO: Do we support detections? RRH 043 /*Thread detectionsThread = new Thread(new DetectionsDownloadRunnable(StreetsideLayer.getInstance().getData(), bounds)); 044 detectionsThread.start();*/ 045 046 try { 047 imgDetailsThread.join(); 048 //detectionsThread.join(); 049 } catch (InterruptedException e) { 050 Logging.log(Logging.LEVEL_WARN, "Streetside download interrupted (probably because of closing the layer).", e); 051 Thread.currentThread().interrupt(); 052 } finally { 053 PluginState.finishDownload(); 054 } 055 056 StreetsideUtils.updateHelpText(); 057 StreetsideLayer.invalidateInstance(); 058 //StreetsideFilterDialog.getInstance().refresh(); 059 StreetsideMainDialog.getInstance().updateImage(); 060 } 061}