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.layer.MainLayerManager.ActiveLayerChangeEvent;
016import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
017import org.openstreetmap.josm.gui.layer.OsmDataLayer;
018
019/**
020 * This is the list model for the list of changeset in the current edit layer.
021 *
022 */
023public class ChangesetsInActiveDataLayerListModel extends ChangesetListModel implements DataSetListener, ActiveLayerChangeListener {
024
025    public ChangesetsInActiveDataLayerListModel(DefaultListSelectionModel selectionModel) {
026        super(selectionModel);
027    }
028
029    /* ------------------------------------------------------------------------------ */
030    /* interface DataSetListener                                                      */
031    /* ------------------------------------------------------------------------------ */
032    @Override
033    public void dataChanged(DataChangedEvent event) {
034        initFromDataSet(event.getDataset());
035    }
036
037    @Override
038    public void primitivesAdded(PrimitivesAddedEvent event) {
039        // ignored
040    }
041
042    @Override
043    public void primitivesRemoved(PrimitivesRemovedEvent event) {
044        // ignored
045    }
046
047    @Override
048    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
049        // ignored
050    }
051
052    @Override
053    public void nodeMoved(NodeMovedEvent event) {
054        // ignored
055    }
056
057    @Override
058    public void relationMembersChanged(RelationMembersChangedEvent event) {
059        // ignored
060    }
061
062    @Override
063    public void tagsChanged(TagsChangedEvent event) {
064        // ignored
065    }
066
067    @Override
068    public void wayNodesChanged(WayNodesChangedEvent event) {
069        // ignored
070    }
071
072    /* ------------------------------------------------------------------------------ */
073    /* interface ActiveLayerChangeListener                                                    */
074    /* ------------------------------------------------------------------------------ */
075    @Override
076    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
077        // just init the model content. Don't register as DataSetListener. The mode
078        // is already registered to receive DataChangedEvents from the current edit layer
079        OsmDataLayer editLayer = e.getSource().getEditLayer();
080        if (editLayer != null) {
081            initFromDataSet(editLayer.data);
082        } else {
083            initFromDataSet(null);
084        }
085    }
086}