Ignore:
Timestamp:
2012-09-30T17:36:39+02:00 (12 years ago)
Author:
Don-vip
Message:

fix #8090 - Removing saved non-uploadable layer asks for confirmation

File:
1 edited

Legend:

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

    r5514 r5519  
    628628    }
    629629
     630    /**
     631     * Asks user to perform "save layer" operations (save .osm on disk and/or upload osm data to server) for all {@link OsmDataLayer} before JOSM exits.
     632     * @return {@code true} if there was nothing to save, or if the user wants to proceed to save operations. {@code false} if the user cancels.
     633     * @since 2025
     634     */
    630635    public static boolean saveUnsavedModifications() {
    631         if (map == null) return true;
    632         SaveLayersDialog dialog = new SaveLayersDialog(Main.parent);
     636        if (map == null || map.mapView == null) return true;
     637        return saveUnsavedModifications(map.mapView.getLayersOfType(OsmDataLayer.class), true);
     638    }
     639
     640    /**
     641     * Asks user to perform "save layer" operations (save .osm on disk and/or upload osm data to server) before osm layers deletion.
     642     *
     643     * @param selectedLayers The layers to check. Only instances of {@link OsmDataLayer} are considered.
     644     * @param exit {@code true} if JOSM is exiting, {@code false} otherwise.
     645     * @return {@code true} if there was nothing to save, or if the user wants to proceed to save operations. {@code false} if the user cancels.
     646     * @since 5519
     647     */
     648    public static boolean saveUnsavedModifications(List<? extends Layer> selectedLayers, boolean exit) {
     649        SaveLayersDialog dialog = new SaveLayersDialog(parent);
    633650        List<OsmDataLayer> layersWithUnmodifiedChanges = new ArrayList<OsmDataLayer>();
    634         for (OsmDataLayer l: Main.map.mapView.getLayersOfType(OsmDataLayer.class)) {
    635             if ((l.requiresSaveToFile() || l.requiresUploadToServer()) && l.data.isModified()) {
    636                 layersWithUnmodifiedChanges.add(l);
    637             }
    638         }
    639         dialog.prepareForSavingAndUpdatingLayersBeforeExit();
     651        for (Layer l: selectedLayers) {
     652            if (!(l instanceof OsmDataLayer)) {
     653                continue;
     654            }
     655            OsmDataLayer odl = (OsmDataLayer)l;
     656            if ((odl.requiresSaveToFile() || (odl.requiresUploadToServer() && !odl.isUploadDiscouraged())) && odl.data.isModified()) {
     657                layersWithUnmodifiedChanges.add(odl);
     658            }
     659        }
     660        if (exit) {
     661            dialog.prepareForSavingAndUpdatingLayersBeforeExit();
     662        } else {
     663            dialog.prepareForSavingAndUpdatingLayersBeforeDelete();
     664        }
    640665        if (!layersWithUnmodifiedChanges.isEmpty()) {
    641666            dialog.getModel().populate(layersWithUnmodifiedChanges);
Note: See TracChangeset for help on using the changeset viewer.