Ignore:
Timestamp:
2009-07-19T17:38:55+02:00 (16 years ago)
Author:
jttt
Message:

PleaseWait refactoring. Progress is now reported using ProgressMonitor interface, that is available through PleaseWaitRunnable.

File:
1 edited

Legend:

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

    r1810 r1811  
    1818import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
    1919import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     20import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
     21import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2022import org.openstreetmap.josm.io.BoundingBoxDownloader;
    2123import org.openstreetmap.josm.io.OsmServerLocationReader;
     
    3840        private DataSet dataSet;
    3941        private boolean newLayer;
    40         private String msg = "";
    4142
    42         public Task(boolean newLayer, OsmServerReader reader, boolean silent, String msg) {
    43             super(tr("Downloading data"));
    44             this.msg = msg;
     43        public Task(boolean newLayer, OsmServerReader reader, ProgressMonitor progressMonitor) {
     44            super(tr("Downloading data"), progressMonitor, false);
    4545            this.reader = reader;
    4646            this.newLayer = newLayer;
    47             this.silent = silent;
    4847        }
    4948
    5049        @Override public void realRun() throws IOException, SAXException, OsmTransferException {
    51             Main.pleaseWaitDlg.setCustomText(msg);
    52             dataSet = reader.parseOsm();
     50            dataSet = reader.parseOsm(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
    5351        }
    5452
     
    6361                return; // user canceled download or error occurred
    6462            if (dataSet.allPrimitives().isEmpty()) {
    65                 // If silent is set to true, we don't want to see information messages
    66                 if(!silent) {
    67                     errorMessage = tr("No data imported.");
    68                 }
     63                progressMonitor.setErrorMessage(tr("No data imported."));
    6964                // need to synthesize a download bounds lest the visual indication of downloaded
    7065                // area doesn't work
     
    7873                getEditLayer().mergeFrom(dataSet);
    7974            }
    80 
    81             Main.pleaseWaitDlg.setCustomText("");
    8275        }
    8376
     
    8679                reader.cancel();
    8780            }
    88             Main.pleaseWaitDlg.cancel.setEnabled(false);
    8981        }
    9082    }
     
    10092
    10193    public void download(DownloadAction action, double minlat, double minlon,
    102             double maxlat, double maxlon, boolean silent, String message) {
     94            double maxlat, double maxlon, ProgressMonitor progressMonitor) {
    10395        // Swap min and max if user has specified them the wrong way round
    10496        // (easy to do if you are crossing 0, for example)
     
    115107
    116108        Task t = new Task(newLayer,
    117                 new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon),
    118                 silent,
    119                 message);
     109                new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon), progressMonitor);
    120110        currentBounds = new Bounds(new LatLon(minlat, minlon), new LatLon(maxlat, maxlon));
    121111        // We need submit instead of execute so we can wait for it to finish and get the error
    122112        // message if necessary. If no one calls getErrorMessage() it just behaves like execute.
    123113        task = Main.worker.submit(t, t);
    124     }
    125 
    126     public void download(DownloadAction action, double minlat, double minlon,
    127             double maxlat, double maxlon) {
    128         download(action, minlat, minlon, maxlat, maxlon, false, "");
    129114    }
    130115
     
    137122        Task t = new Task(new_layer,
    138123                new OsmServerLocationReader(url),
    139                 false,
    140         "");
     124                NullProgressMonitor.INSTANCE);
    141125        task = Main.worker.submit(t, t);
    142126    }
     
    160144        try {
    161145            Task t = task.get();
    162             return t.errorMessage == null
     146            return t.getProgressMonitor().getErrorMessage() == null
    163147            ? ""
    164                     : t.errorMessage;
     148                    : t.getProgressMonitor().getErrorMessage();
    165149        } catch (Exception e) {
    166150            return "";
Note: See TracChangeset for help on using the changeset viewer.