001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004/**
005 * A listener listening for all DataSet changes.
006 *
007 * @author nenik
008 * @see DataSetListenerAdapter
009 */
010public interface DataSetListener {
011    /**
012     * A bunch of primitives were added into the DataSet, or existing
013     * deleted/invisible primitives were resurrected.
014     *
015     * @param event An event for an collection of newly-visible primitives
016     */
017    void primitivesAdded(PrimitivesAddedEvent event);
018
019    /**
020     * A bunch of primitives were removed from the DataSet, or preexisting
021     * primitives were marked as deleted.
022     *
023     * @param event An event for an collection of newly-invisible primitives
024     */
025    void primitivesRemoved(PrimitivesRemovedEvent event);
026
027    /**
028     * There was some change in the tag set of a primitive. It can have been
029     * a tag addition, tag removal or change in tag value.
030     *
031     * @param event the event for the primitive, whose tags were affected.
032     */
033    void tagsChanged(TagsChangedEvent event);
034
035    /**
036     * A node's coordinates were modified.
037     * @param event The event for the node that was moved.
038     */
039    void nodeMoved(NodeMovedEvent event);
040
041    /**
042     * A way's node list was changed.
043     * @param event The event for the way that was modified.
044     */
045    void wayNodesChanged(WayNodesChangedEvent event);
046
047    /**
048     * A relation's members have changed.
049     * @param event The event for the relation that was modified.
050     */
051    void relationMembersChanged(RelationMembersChangedEvent event);
052
053    /**
054     * Minor dataset change, currently only changeset id changed is supported, but can
055     * be extended in future.
056     * @param event the event for data modification
057     */
058    void otherDatasetChange(AbstractDatasetChangedEvent event);
059
060    /**
061     * Called after big changes in dataset. Usually other events are stopped using Dataset.beginUpdate() and
062     * after operation is completed (Dataset.endUpdate()), {@link #dataChanged(DataChangedEvent event)} is called.
063     * @param event data change event
064     */
065    void dataChanged(DataChangedEvent event);
066}