Changeset 19550 in josm


Ignore:
Timestamp:
2026-03-19T14:35:08+01:00 (3 hours ago)
Author:
stoecker
Message:

warn about downloading old data - patch by taylor.smock, fix #21904

Location:
trunk/src/org/openstreetmap/josm/actions
Files:
4 edited

Legend:

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

    r18173 r19550  
    3737import org.openstreetmap.josm.actions.downloadtasks.PostDownloadHandler;
    3838import org.openstreetmap.josm.data.preferences.BooleanProperty;
     39import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    3940import org.openstreetmap.josm.gui.ExtendedDialog;
    4041import org.openstreetmap.josm.gui.HelpAwareOptionPane;
     
    279280        List<Future<?>> result = new ArrayList<>();
    280281        for (final DownloadTask task : tasks) {
     282            DownloadParams currentParams = settings;
     283            if (task.providesOldData() && !settings.isNewLayer()) {
     284                currentParams = GuiHelper.runInEDTAndWaitAndReturn(() -> confirmNoNewLayer(settings, url));
     285            }
    281286            try {
    282287                task.setZoomAfterDownload(zoomToData);
    283                 result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(settings, url,
     288                result.add(MainApplication.worker.submit(new PostDownloadHandler(task, task.loadUrl(currentParams, url,
    284289                        new PleaseWaitProgressMonitor(tr("Download data"))))));
    285290            } catch (IllegalArgumentException e) {
     
    288293        }
    289294        return Collections.unmodifiableList(result);
     295    }
     296
     297    private static DownloadParams confirmNoNewLayer(DownloadParams originalParams, String url) {
     298        if (ConditionalOptionPaneUtil.showConfirmationDialog("open-location-action.confirm-no-new-layer",
     299                MainApplication.getMainFrame(),
     300                tr("Do you want to create a new layer for {0}?<br>You may be mixing old and new data otherwise!", url),
     301                tr("No new layer"), JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.YES_OPTION)
     302        ) {
     303            return new DownloadParams(originalParams).withNewLayer(true);
     304        }
     305        return originalParams;
    290306    }
    291307
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmChangeTask.java

    r18711 r19550  
    8787    }
    8888
     89    @Override
     90    public boolean providesOldData() {
     91        return true;
     92    }
     93
    8994    /**
    9095     * OsmChange download task.
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadParams.java

    r13927 r19550  
    1616    private DownloadPolicy downloadPolicy;
    1717    private UploadPolicy uploadPolicy;
     18
     19    public DownloadParams() {
     20        // Do nothing -- just make this constructor visible
     21    }
     22
     23    /**
     24     * Clone another {@link DownloadParams}
     25     * @param other The download parameters to clone
     26     */
     27    public DownloadParams(DownloadParams other) {
     28        this.newLayer = other.newLayer;
     29        this.layerName = other.layerName;
     30        this.locked = other.locked;
     31        this.downloadPolicy = other.downloadPolicy;
     32        this.uploadPolicy = other.uploadPolicy;
     33    }
    1834
    1935    /**
  • trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTask.java

    r18830 r19550  
    155155
    156156    /**
     157     * If this task provides potentially old data, this should return {@code true}. If so, it would be a good decision
     158     * to prompt users to verify if they want the data to be downloaded to the current layer.
     159     * @return {@code true} if the data could be old.
     160     * @since xxx
     161     */
     162    default boolean providesOldData() {
     163        return false;
     164    }
     165
     166    /**
    157167     * Cancels the asynchronous download task.
    158168     *
Note: See TracChangeset for help on using the changeset viewer.