Changeset 2330 in josm


Ignore:
Timestamp:
Oct 27, 2009 1:04:39 PM (4 years ago)
Author:
Gubaer
Message:

fixed #3794: not download the correct area

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/DownloadAction.java

    r2328 r2330  
    1010import java.awt.event.KeyEvent; 
    1111import java.util.concurrent.Future; 
     12import java.util.logging.Logger; 
    1213 
    1314import javax.swing.JOptionPane; 
     
    1819import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask; 
    1920import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler; 
     21import org.openstreetmap.josm.data.Bounds; 
    2022import org.openstreetmap.josm.gui.ExtendedDialog; 
    2123import org.openstreetmap.josm.gui.download.DownloadDialog; 
     
    3234 */ 
    3335public class DownloadAction extends JosmAction { 
     36    private static final Logger logger = Logger.getLogger(DownloadAction.class.getName()); 
    3437     
    35  
    3638    private DownloadDialog dialog; 
    3739    private ExtendedDialog downloadDialog; 
     
    4547    /** 
    4648     * Creates the download dialog 
     49     *  
    4750     * @return the downlaod dialog 
    4851     */ 
    49     protected ExtendedDialog createUploadDialog() { 
    50         if (dialog == null) 
     52    protected ExtendedDialog createDownloadDialog() { 
     53        if (dialog == null)  
    5154            dialog = new DownloadDialog(); 
    5255        dialog.restoreSettings(); 
    53         JPanel downPanel = new JPanel(new BorderLayout()); 
    54         downPanel.add(dialog, BorderLayout.CENTER); 
    5556 
    5657        final String prefName = dialog.getClass().getName()+ ".geometry"; 
     
    5960 
    6061        if (downloadDialog == null) { 
     62            JPanel downPanel = new JPanel(new BorderLayout()); 
     63            downPanel.add(dialog, BorderLayout.CENTER); 
    6164            downloadDialog= new ExtendedDialog(Main.parent, 
    6265                tr("Download"), 
     
    7073 
    7174    public void actionPerformed(ActionEvent e) { 
    72         ExtendedDialog dlg = createUploadDialog(); 
     75        ExtendedDialog dlg = createDownloadDialog(); 
    7376        boolean finish = false; 
    7477        while (!finish) {             
     
    7679            if (dlg.getValue() == 1 /* OK */) { 
    7780                dialog.rememberSettings(); 
     81                Bounds area = dialog.getSelectedDownloadArea();                 
    7882                if (dialog.isDownloadOsmData()) { 
    7983                    DownloadOsmTask task = new DownloadOsmTask(); 
    80                     Future<?> future = task.download(dialog.isNewLayerRequired(), dialog.getSelectedDownloadArea(), null); 
     84                    Future<?> future = task.download(dialog.isNewLayerRequired(), area, null); 
    8185                    Main.worker.submit(new PostDownloadHandler(task, future)); 
    8286                    finish = true; 
     
    8488                if (dialog.isDownloadGpxData()) { 
    8589                    DownloadGpsTask task = new DownloadGpsTask(); 
    86                     Future<?> future = task.download(dialog.isNewLayerRequired(),dialog.getSelectedDownloadArea(), null); 
     90                    Future<?> future = task.download(dialog.isNewLayerRequired(),area, null); 
    8791                    Main.worker.submit(new PostDownloadHandler(task, future)); 
    8892                    finish = true; 
     
    100104            } 
    101105        } 
    102  
    103         dialog = null; 
    104         dlg.dispose(); 
    105106    } 
    106107} 
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java

    r2328 r2330  
    1111public interface DownloadTask { 
    1212    /** 
    13      * Execute the download using the given bounding box. Set silent on progressMonitor 
    14      * if no error messages should be popped up. 
     13     * Asynchronously launches the download task for a given bounding box. 
     14     * 
     15     * Set <code>progressMonitor</code> to null, if the task should create, open, and close a progress monitor. 
     16     * Set progressMonitor to {@see NullProgressMonitor#INSTANCE} if progress information is to 
     17     * be discarded. 
     18     *  
     19     * You can wait for the asynchronous download task to finish by synchronizing on the returned 
     20     * {@see Future}, but make sure not to freeze up JOSM. Example: 
     21     * <pre> 
     22     *    Future<?> future = task.download(...); 
     23     *    // DON'T run this on the Swing EDT or JOSM will freeze  
     24     *    future.get(); // waits for the dowload task to complete  
     25     * </pre> 
     26     *  
     27     * The following example uses a pattern which is better suited if a task is launched from 
     28     * the Swing EDT: 
     29     * <pre> 
     30     *    final Future<?> future = task.download(...); 
     31     *    Runnable runAfterTask = new Runnable() { 
     32     *       public void run() { 
     33     *           // this is not strictly necessary because of the type of executor service 
     34     *           // Main.worker is initialized with, but it doesn't harm either 
     35     *           // 
     36     *           future.get(); // wait for the download task to complete 
     37     *           doSomethingAfterTheTaskCompleted(); 
     38     *       } 
     39     *    } 
     40     *    Main.worker.submit(runAfterTask); 
     41     * </pre> 
     42     *  
     43     * @param newLayer true, if the data is to be downloaded into a new layer. If false, the task 
     44     * selects one of the existing layers as download layer, preferably the active layer. 
     45     *  
     46     * @param downloadArea the area to download 
     47     * @param progressMonitor the progressMonitor 
     48     * @return the future representing the asynchronous task 
    1549     */ 
    1650    Future<?> download(boolean newLayer, Bounds downloadArea, ProgressMonitor progressMonitor); 
    1751 
    1852    /** 
    19      * Execute the download using the given URL 
    20      * @param newLayer 
    21      * @param url 
     53     * Asynchronously launches the download task for a given bounding URL. 
     54     * 
     55     * Set progressMonitor to null, if the task should create, open, and close a progress monitor. 
     56     * Set progressMonitor to {@see NullProgressMonitor#INSTANCE} if progress information is to 
     57     * be discarded. 
     58  
     59     * @param newLayer newLayer true, if the data is to be downloaded into a new layer. If false, the task 
     60     * selects one of the existing layers as download layer, preferably the active layer. 
     61     * @param url the url to download from 
     62     * @param progressMonitor the progressMonitor 
     63     * @return the future representing the asynchronous task 
     64     *  
     65     * @see #download(boolean, Bounds, ProgressMonitor) 
    2266     */ 
    2367    Future<?> loadUrl(boolean newLayer, String url, ProgressMonitor progressMonitor); 
     
    2872     * Error objects are either {@see String}s with error messages or {@see Exception}s. 
    2973     * 
    30      * WARNING: Never call this in the same thread you requested the download() or it will cause a 
    31      * dead lock. See actions/downloadTasks/DownloadOsmTaskList.java for a proper implementation. 
    32      * 
    3374     * @return the list of error objects 
    3475     */ 
    3576    List<Object> getErrorObjects(); 
    3677 
     78    /** 
     79     * Cancels the asynchronous download task. 
     80     *  
     81     */ 
    3782    public void cancel(); 
    3883} 
  • trunk/src/org/openstreetmap/josm/gui/download/DownloadDialog.java

    r2327 r2330  
    148148     * @param eventSource - the DownloadSelection object that fired this notification. 
    149149     */ 
    150     public void boundingBoxChanged(Bounds b, DownloadSelection eventSource) { 
     150    public void boundingBoxChanged(Bounds b, DownloadSelection eventSource) {         
    151151        this.currentBounds = b; 
    152152        for (DownloadSelection s : downloadSelections) { 
Note: See TracChangeset for help on using the changeset viewer.