001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004/**
005 * Classes that do not wish to implement all methods of DataSetListener
006 * may use this class. Implement {@link DataSetListenerAdapter.Listener} and
007 * pass this adapter instead of class itself.
008 * @since 2622
009 */
010public class DataSetListenerAdapter implements DataSetListener {
011
012    /**
013     * Single method dataset change event listener.
014     */
015    @FunctionalInterface
016    public interface Listener {
017        /**
018         * Called when notified about any type of dataset change event.
019         * @param event dataset change event
020         */
021        void processDatasetEvent(AbstractDatasetChangedEvent event);
022    }
023
024    private final Listener listener;
025
026    /**
027     * Constructs a new {@code DataSetListenerAdapter}.
028     * @param listener listener for which its {@code processDatasetEvent()} method will be called for all events
029     */
030    public DataSetListenerAdapter(Listener listener) {
031        this.listener = listener;
032    }
033
034    @Override
035    public void dataChanged(DataChangedEvent event) {
036        listener.processDatasetEvent(event);
037    }
038
039    @Override
040    public void nodeMoved(NodeMovedEvent event) {
041        listener.processDatasetEvent(event);
042    }
043
044    @Override
045    public void primitivesAdded(PrimitivesAddedEvent event) {
046        listener.processDatasetEvent(event);
047    }
048
049    @Override
050    public void primitivesRemoved(PrimitivesRemovedEvent event) {
051        listener.processDatasetEvent(event);
052    }
053
054    @Override
055    public void relationMembersChanged(RelationMembersChangedEvent event) {
056        listener.processDatasetEvent(event);
057    }
058
059    @Override
060    public void tagsChanged(TagsChangedEvent event) {
061        listener.processDatasetEvent(event);
062    }
063
064    @Override
065    public void wayNodesChanged(WayNodesChangedEvent event) {
066        listener.processDatasetEvent(event);
067    }
068
069    @Override
070    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
071        listener.processDatasetEvent(event);
072    }
073
074}