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) {
038        // ignored
039    }
040
041    @Override
042    public void primitivesRemoved(PrimitivesRemovedEvent event) {
043        // ignored
044    }
045
046    @Override
047    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
048        // ignored
049    }
050
051    @Override
052    public void nodeMoved(NodeMovedEvent event) {
053        // ignored
054    }
055
056    @Override
057    public void relationMembersChanged(RelationMembersChangedEvent event) {
058        // ignored
059    }
060
061    @Override
062    public void tagsChanged(TagsChangedEvent event) {
063        // ignored
064    }
065
066    @Override
067    public void wayNodesChanged(WayNodesChangedEvent event) {
068        // ignored
069    }
070
071    /* ------------------------------------------------------------------------------ */
072    /* interface EditLayerListener                                                    */
073    /* ------------------------------------------------------------------------------ */
074    @Override
075    public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
076        // just init the model content. Don't register as DataSetListener. The mode
077        // is already registered to receive DataChangedEvents from the current edit layer
078        if (newLayer != null) {
079            initFromDataSet(newLayer.data);
080        } else {
081            initFromDataSet(null);
082        }
083    }
084}