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.DataSet;
007import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
008import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
009import org.openstreetmap.josm.data.osm.event.DataSetListener;
010import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
011import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
012import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
013import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
014import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
015import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
016import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
017import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
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    /**
026     * Creates a new {@link ChangesetsInActiveDataLayerListModel}
027     * @param selectionModel The selection model for the list
028     */
029    public ChangesetsInActiveDataLayerListModel(DefaultListSelectionModel selectionModel) {
030        super(selectionModel);
031    }
032
033    /* ------------------------------------------------------------------------------ */
034    /* interface DataSetListener                                                      */
035    /* ------------------------------------------------------------------------------ */
036    @Override
037    public void dataChanged(DataChangedEvent event) {
038        initFromDataSet(event.getDataset());
039    }
040
041    @Override
042    public void primitivesAdded(PrimitivesAddedEvent event) {
043        // ignored
044    }
045
046    @Override
047    public void primitivesRemoved(PrimitivesRemovedEvent event) {
048        // ignored
049    }
050
051    @Override
052    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
053        // ignored
054    }
055
056    @Override
057    public void nodeMoved(NodeMovedEvent event) {
058        // ignored
059    }
060
061    @Override
062    public void relationMembersChanged(RelationMembersChangedEvent event) {
063        // ignored
064    }
065
066    @Override
067    public void tagsChanged(TagsChangedEvent event) {
068        // ignored
069    }
070
071    @Override
072    public void wayNodesChanged(WayNodesChangedEvent event) {
073        // ignored
074    }
075
076    /* ------------------------------------------------------------------------------ */
077    /* interface ActiveLayerChangeListener                                                    */
078    /* ------------------------------------------------------------------------------ */
079    @Override
080    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
081        // just init the model content. Don't register as DataSetListener. The mode
082        // is already registered to receive DataChangedEvents from the current edit layer
083        DataSet ds = e.getSource().getActiveDataSet();
084        if (ds != null) {
085            initFromDataSet(ds);
086        } else {
087            initFromDataSet(null);
088        }
089    }
090}