Ignore:
Timestamp:
2008-02-04T15:50:57+01:00 (17 years ago)
Author:
gabriel
Message:

wmsplugin: Fix downloading after canceling.

Location:
applications/editors/josm/plugins/wmsplugin/src/wmsplugin
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/DownloadWMSTask.java

    r6775 r6776  
    88import org.openstreetmap.josm.actions.DownloadAction;
    99import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    10 
    11  
     10import org.openstreetmap.josm.data.Bounds;
     11import org.openstreetmap.josm.data.coor.LatLon;
     12import org.openstreetmap.josm.gui.layer.Layer;
    1213
    1314public class DownloadWMSTask extends PleaseWaitRunnable {
    1415
    1516        private WMSLayer wmsLayer;
    16         private double minlat, minlon, maxlat, maxlon;
     17        private Bounds bounds;
    1718       
    18         /* whether our layer was already added. */
    19         private boolean layerAdded = false;
    20        
    21        
    22         public DownloadWMSTask(String name, String wmsurl) {
    23                 super(tr("Downloading " + name));
     19        public DownloadWMSTask(WMSLayer wmsLayer, Bounds bounds) {
     20                super(tr("Downloading " + wmsLayer.name));
    2421
    25                 // simply check if we already have a layer created. if not, create; if yes, reuse.
    26                 if (wmsLayer == null) {
    27                         if (wmsurl.matches("(?i).*layers=npeoocmap.*") || wmsurl.matches("(?i).*layers=npe.*") ){
    28                                 //then we use the OSGBLayer
    29                                 this.wmsLayer= new OSGBLayer(name, wmsurl);
    30                         } else {
    31                                 this.wmsLayer = new WMSLayer(name, wmsurl);
    32                         }
    33                 }
    34        
     22                this.wmsLayer = wmsLayer;
     23                this.bounds = bounds;
    3524        }
    3625       
    3726        @Override public void realRun() throws IOException {
    3827                Main.pleaseWaitDlg.currentAction.setText(tr("Contacting WMS Server..."));
    39                 wmsLayer.grab(minlat,minlon,maxlat,maxlon);
     28                wmsLayer.grab(
     29                        bounds.min.lat(), bounds.min.lon(),
     30                        bounds.max.lat(), bounds.max.lon());
    4031        }
    4132
    42         @Override protected void finish() {
     33        @Override protected void cancel() {}
     34        @Override protected void finish() {}
    4335
    44                 // BUG if layer is deleted, wmsLayer is not null and layerAdded remains true!
    45                 // FIXED, see below
    46                
    47                 layerAdded = false;
    48                 for (Iterator it = Main.map.mapView.getAllLayers().iterator(); it.hasNext(); ) {
    49                         Object  element = it.next();
    50                         if (element.equals(wmsLayer)) layerAdded = true;
     36        public static void download(String name, String wmsurl,
     37                        double minlat, double minlon, double maxlat, double maxlon) {
     38                WMSLayer wmsLayer = null;
     39
     40                // simply check if we already have a layer created. if not, create; if yes, reuse.
     41                for (Layer l : Main.main.map.mapView.getAllLayers()) {
     42                        if (l instanceof WMSLayer && l.name.equals(name)) {
     43                                wmsLayer = (WMSLayer) l;
     44                        }
    5145                }
    52                                
    53                 if ((wmsLayer != null) && (!layerAdded))
    54                 {
     46
     47                if (wmsLayer == null) {
     48                        if (wmsurl.matches("(?i).*layers=npeoocmap.*") || wmsurl.matches("(?i).*layers=npe.*") ){
     49                                //then we use the OSGBLayer
     50                                wmsLayer= new OSGBLayer(name, wmsurl);
     51                        } else {
     52                                wmsLayer = new WMSLayer(name, wmsurl);
     53                        }
    5554                        Main.main.addLayer(wmsLayer);
    56                         layerAdded = true;
    57                 }
    58         }
     55                }
    5956
    60         @Override protected void cancel() {
    61         }
    62 
    63         public void download(DownloadAction action, double minlat, double minlon, double maxlat, double maxlon) {
    64                 this.minlat=minlat;
    65                 this.minlon=minlon;
    66                 this.maxlat=maxlat;
    67                 this.maxlon=maxlon;
    68                 Main.worker.execute(this);
     57                Main.worker.execute(new DownloadWMSTask(wmsLayer,
     58                        new Bounds(new LatLon(minlat, minlon), new LatLon(maxlat, maxlon))));
    6959        }
    7060}
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/Map_Rectifier_WMSmenuAction.java

    r6775 r6776  
    2121
    2222        }
    23         DownloadWMSTask downloadTask;
    2423
    2524        public void actionPerformed(ActionEvent e) {
     
    4241                                //System.out.println(newURL);
    4342
    44                         //      if (downloadTask == null){
    45                                         //System.out.println("new download task!");
    46                                         downloadTask = new DownloadWMSTask("rectifier id="+newid, newURL);
    47                         //      }
    4843                                MapView mv = Main.map.mapView;
    4944
    50                                 downloadTask.download(null,
     45                                DownloadWMSTask.download("rectifier id="+newid, newURL,
    5146                                                mv.getLatLon(0, mv.getHeight()).lat(),
    5247                                                mv.getLatLon(0, mv.getHeight()).lon(),
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSDownloadAction.java

    r6775 r6776  
    1717       
    1818        public void actionPerformed(ActionEvent e) {
    19                
    20                 // store the download task with the "info" object. if we create a new
    21                 // download task here every time, then different layers are displayed even
    22                 // for images from the same server, and we don't want that.
    2319                System.out.println(info.url);
    24                 if (info.downloadTask == null)
    25                         info.downloadTask = new DownloadWMSTask(info.name, info.url);
    2620               
    2721                MapView mv = Main.map.mapView;
    2822               
    29                 info.downloadTask.download(null,
     23                DownloadWMSTask.download(info.name, info.url,
    3024                                mv.getLatLon(0, mv.getHeight()).lat(),
    3125                                mv.getLatLon(0, mv.getHeight()).lon(),
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSInfo.java

    r6775 r6776  
    1313        String url;
    1414        int prefid;
    15         DownloadWMSTask downloadTask;
    1615       
    1716        public WMSInfo(String name, String url, int prefid) {
    1817                this.name=name; this.url=url; this.prefid=prefid;
    19                 downloadTask = null;
    2018        }
    2119       
  • applications/editors/josm/plugins/wmsplugin/src/wmsplugin/WMSPlugin.java

    r6775 r6776  
    3030        static String VERSION = "2.4";
    3131       
    32         DownloadWMSTask task;
    3332        WMSLayer wmsLayer;
    3433        static JMenu wmsJMenu;
Note: See TracChangeset for help on using the changeset viewer.