001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.osm.event;
003    
004    import java.util.Collection;
005    import java.util.Collections;
006    import java.util.List;
007    
008    import org.openstreetmap.josm.data.osm.DataSet;
009    import org.openstreetmap.josm.data.osm.OsmPrimitive;
010    
011    public class DataChangedEvent extends AbstractDatasetChangedEvent {
012    
013        private final List<AbstractDatasetChangedEvent> events;
014    
015        public DataChangedEvent(DataSet dataSet, List<AbstractDatasetChangedEvent> events) {
016            super(dataSet);
017            this.events = events;
018        }
019    
020        public DataChangedEvent(DataSet dataSet) {
021            this(dataSet, null);
022        }
023    
024        @Override
025        public void fire(DataSetListener listener) {
026            listener.dataChanged(this);
027        }
028    
029        @Override
030        public Collection<OsmPrimitive> getPrimitives() {
031            if (dataSet == null)
032                return Collections.emptyList();
033            else
034                return dataSet.allPrimitives();
035        }
036    
037        @Override
038        public DatasetEventType getType() {
039            return DatasetEventType.DATA_CHANGED;
040        }
041    
042        /**
043         *
044         * @return List of events that caused this DataChangedEvent. Might be null
045         */
046        public List<AbstractDatasetChangedEvent> getEvents() {
047            return events;
048        }
049    
050    }