001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004import java.util.Collections;
005import java.util.List;
006
007import org.openstreetmap.josm.data.osm.DataSet;
008import org.openstreetmap.josm.data.osm.Node;
009import org.openstreetmap.josm.data.osm.OsmPrimitive;
010
011/**
012 * An event that is triggered on a node move (lat/lon change)
013 */
014public class NodeMovedEvent extends AbstractDatasetChangedEvent {
015
016    private final Node node;
017
018    /**
019     * Constructs a new {@code NodeMovedEvent}.
020     * @param dataSet the dataset from which the event comes from
021     * @param node the node affected by the move
022     */
023    public NodeMovedEvent(DataSet dataSet, Node node) {
024        super(dataSet);
025        this.node = node;
026    }
027
028    @Override
029    public void fire(DataSetListener listener) {
030        listener.nodeMoved(this);
031    }
032
033    /**
034     * Returns the node affected by the move.
035     * @return the node affected by the move
036     */
037    public Node getNode() {
038        return node;
039    }
040
041    @Override
042    public List<? extends OsmPrimitive> getPrimitives() {
043        return Collections.singletonList(node);
044    }
045
046    @Override
047    public DatasetEventType getType() {
048        return DatasetEventType.NODE_MOVED;
049    }
050}