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