Ignore:
Timestamp:
2017-08-14T14:42:13+02:00 (2 years ago)
Author:
bastiK
Message:

fixed #14524 - save imagery layer zoom level to session (if needed)

Location:
trunk/src/org/openstreetmap/josm/io/session
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/ImagerySessionExporter.java

    r12600 r12604  
    8585        ImageryPreferenceEntry e = new ImageryPreferenceEntry(layer.getInfo());
    8686        Map<String, String> data = new LinkedHashMap<>(Preferences.serializeStruct(e, ImageryPreferenceEntry.class));
    87         if (layer instanceof AbstractTileSourceLayer) {
    88             data.putAll(((AbstractTileSourceLayer<?>) layer).getDisplaySettings().toPropertiesMap());
    89         }
     87        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
     88            data.putAll(tsLayer.getDisplaySettings().toPropertiesMap());
     89            if (!tsLayer.getDisplaySettings().isAutoZoom()) {
     90                data.put("zoom-level", Integer.toString(tsLayer.getZoomLevel()));
     91            }
     92        });
    9093        addAttributes(layerElem, data, support);
    91         if (layer instanceof AbstractTileSourceLayer) {
    92             OffsetBookmark offset = ((AbstractTileSourceLayer<?>) layer).getDisplaySettings().getOffsetBookmark();
     94        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
     95            OffsetBookmark offset = tsLayer.getDisplaySettings().getOffsetBookmark();
    9396            if (offset != null) {
    9497                Map<String, String> offsetProps = offset.toPropertiesMap();
     
    97100                addAttributes(offsetEl, offsetProps, support);
    98101            }
    99         }
     102        });
    100103        ImageryFilterSettings filters = layer.getFilterSettings();
    101104        if (filters != null) {
  • trunk/src/org/openstreetmap/josm/io/session/ImagerySessionImporter.java

    r12600 r12604  
    88import java.util.Map;
    99
     10import org.openstreetmap.josm.Main;
    1011import org.openstreetmap.josm.data.Preferences;
    1112import org.openstreetmap.josm.data.imagery.ImageryInfo;
     
    4445        ImageryInfo info = new ImageryInfo(prefEntry);
    4546        ImageryLayer layer = ImageryLayer.create(info);
    46         if (layer instanceof AbstractTileSourceLayer) {
    47             AbstractTileSourceLayer<?> tsLayer = (AbstractTileSourceLayer<?>) layer;
     47        Utils.instanceOfThen(layer, AbstractTileSourceLayer.class, tsLayer -> {
    4848            tsLayer.getDisplaySettings().applyFromPropertiesMap(attributes);
     49            if (!tsLayer.getDisplaySettings().isAutoZoom()) {
     50                String zoomStr = attributes.get("zoom-level");
     51                if (zoomStr != null) {
     52                        support.addPostLayersTask(() -> {
     53                            try {
     54                                tsLayer.setZoomLevel(Integer.parseInt(zoomStr));
     55                            } catch (NumberFormatException e) {
     56                                Main.warn(e);
     57                            }
     58                        });
     59                }
     60            }
    4961            Element offsetEl = getFirstElementByTagName(elem, "offset");
    5062            if (offsetEl != null) {
     
    5365                tsLayer.getDisplaySettings().setOffsetBookmark(offset);
    5466            }
    55         }
     67        });
    5668        Element filtersEl = getFirstElementByTagName(elem, "filters");
    5769        if (filtersEl != null) {
Note: See TracChangeset for help on using the changeset viewer.