001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.gui.dialogs.changeset;
003    
004    import javax.swing.DefaultListSelectionModel;
005    
006    import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
007    import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
008    import org.openstreetmap.josm.data.osm.event.DataSetListener;
009    import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
010    import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
011    import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
012    import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
013    import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
014    import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
015    import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
016    import org.openstreetmap.josm.gui.layer.OsmDataLayer;
017    
018    /**
019     * This is the list model for the list of changeset in the current edit layer.
020     *
021     */
022    public class ChangesetsInActiveDataLayerListModel extends ChangesetListModel implements DataSetListener, EditLayerChangeListener {
023    
024        public ChangesetsInActiveDataLayerListModel(DefaultListSelectionModel selectionModel) {
025            super(selectionModel);
026        }
027    
028        /* ------------------------------------------------------------------------------ */
029        /* interface DataSetListener                                                      */
030        /* ------------------------------------------------------------------------------ */
031        public void dataChanged(DataChangedEvent event) {
032            initFromDataSet(event.getDataset());
033        }
034    
035        public void primitivesAdded(PrimitivesAddedEvent event) {/* ignored */}
036    
037        public void primitivesRemoved(PrimitivesRemovedEvent event) {/* ignored */}
038    
039        public void otherDatasetChange(AbstractDatasetChangedEvent event) {/* ignored */}
040    
041        public void nodeMoved(NodeMovedEvent event) {/* ignored */}
042    
043        public void relationMembersChanged(RelationMembersChangedEvent event) {/* ignored */}
044    
045        public void tagsChanged(TagsChangedEvent event) {/* ignored */}
046    
047        public void wayNodesChanged(WayNodesChangedEvent event) {/* ignored */}
048    
049        /* ------------------------------------------------------------------------------ */
050        /* interface EditLayerListener                                                    */
051        /* ------------------------------------------------------------------------------ */
052        public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
053            // just init the model content. Don't register as DataSetListener. The mode
054            // is already registered to receive DataChangedEvents from the current
055            // edit layer
056            if (newLayer != null) {
057                initFromDataSet(newLayer.data);
058            } else {
059                initFromDataSet(null);
060            }
061        }
062    }