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.OsmPrimitive; 009import org.openstreetmap.josm.data.osm.Relation; 010 011/** 012 * An event that is triggered if the members of a single relation have changed 013 */ 014public class RelationMembersChangedEvent extends AbstractDatasetChangedEvent { 015 016 private final Relation relation; 017 018 /** 019 * Constructs a new {@code RelationMembersChangedEvent}. 020 * @param dataSet the dataset from which the event comes from 021 * @param relation the relation affected by the change 022 */ 023 public RelationMembersChangedEvent(DataSet dataSet, Relation relation) { 024 super(dataSet); 025 this.relation = relation; 026 } 027 028 @Override 029 public void fire(DataSetListener listener) { 030 listener.relationMembersChanged(this); 031 } 032 033 /** 034 * Returns the relation affected by the change. 035 * @return the relation affected by the change 036 */ 037 public Relation getRelation() { 038 return relation; 039 } 040 041 @Override 042 public List<? extends OsmPrimitive> getPrimitives() { 043 return Collections.singletonList(relation); 044 } 045 046 @Override 047 public DatasetEventType getType() { 048 return DatasetEventType.RELATION_MEMBERS_CHANGED; 049 } 050 051}