001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer;
003
004import org.openstreetmap.josm.data.osm.OsmData;
005
006/**
007 * Abstraction of {@link OsmDataLayer}.
008 * @since 13926
009 */
010public abstract class AbstractOsmDataLayer extends AbstractModifiableLayer {
011
012    protected AbstractOsmDataLayer(String name) {
013        super(name);
014    }
015
016    /**
017     * Returns the {@link OsmData} behind this layer.
018     * @return the {@link OsmData} behind this layer.
019     */
020    public abstract OsmData<?, ?, ?, ?> getDataSet();
021
022    @Override
023    public void lock() {
024        getDataSet().lock();
025    }
026
027    @Override
028    public void unlock() {
029        getDataSet().unlock();
030    }
031
032    @Override
033    public boolean isLocked() {
034        return getDataSet().isLocked();
035    }
036
037    /**
038     * Clears the data backing this layer, unless if locked.
039     * @since 15565
040     */
041    public void clear() {
042        OsmData<?, ?, ?, ?> data = getDataSet();
043        if (data != null && !data.isLocked()) {
044            data.clear();
045        }
046    }
047}