Ignore:
Timestamp:
2018-02-18T05:02:23+01:00 (8 years ago)
Author:
Don-vip
Message:

see #8039, see #10456 - support read-only data layers

File:
1 edited

Legend:

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

    r12679 r13434  
    1616import java.util.regex.Matcher;
    1717import java.util.regex.Pattern;
     18import java.util.stream.Stream;
    1819
    1920import org.openstreetmap.josm.data.Bounds;
     
    227228        }
    228229
     230        /**
     231         * Returns the number of modifiable data layers
     232         * @return number of modifiable data layers
     233         * @deprecated Use {@link #getNumModifiableDataLayers}
     234         */
     235        @Deprecated
    229236        protected int getNumDataLayers() {
    230             return MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).size();
    231         }
    232 
    233         protected OsmDataLayer getFirstDataLayer() {
    234             return Utils.find(MainApplication.getLayerManager().getLayers(), OsmDataLayer.class);
     237            return (int) getNumModifiableDataLayers();
     238        }
     239
     240        private static Stream<OsmDataLayer> getModifiableDataLayers() {
     241            return MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class)
     242                    .stream().filter(l -> !l.isReadOnly());
     243        }
     244
     245        /**
     246         * Returns the number of modifiable data layers
     247         * @return number of modifiable data layers
     248         * @since 13434
     249         */
     250        protected long getNumModifiableDataLayers() {
     251            return getModifiableDataLayers().count();
     252        }
     253
     254        /**
     255         * Returns the first modifiable data layer
     256         * @return the first modifiable data layer
     257         * @since 13434
     258         */
     259        protected OsmDataLayer getFirstModifiableDataLayer() {
     260            return getModifiableDataLayers().findFirst().orElse(null);
    235261        }
    236262
     
    257283
    258284        protected OsmDataLayer addNewLayerIfRequired(String newLayerName) {
    259             int numDataLayers = getNumDataLayers();
     285            long numDataLayers = getNumModifiableDataLayers();
    260286            if (newLayer || numDataLayers == 0 || (numDataLayers > 1 && getEditLayer() == null)) {
    261287                // the user explicitly wants a new layer, we don't have any layer at all
     
    272298            OsmDataLayer layer = addNewLayerIfRequired(newLayerName);
    273299            if (layer == null) {
    274                 layer = Optional.ofNullable(getEditLayer()).orElseGet(this::getFirstDataLayer);
     300                layer = Optional.ofNullable(getEditLayer()).orElseGet(this::getFirstModifiableDataLayer);
    275301                Collection<OsmPrimitive> primitivesToUpdate = searchPrimitivesToUpdate(bounds, layer.data);
    276302                layer.mergeFrom(dataSet);
Note: See TracChangeset for help on using the changeset viewer.