001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.changeset;
003
004import java.util.Collection;
005
006import javax.swing.DefaultListSelectionModel;
007
008import org.openstreetmap.josm.data.SelectionChangedListener;
009import org.openstreetmap.josm.data.osm.DataSet;
010import org.openstreetmap.josm.data.osm.OsmPrimitive;
011import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
012import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
013
014public class ChangesetInSelectionListModel extends ChangesetListModel implements SelectionChangedListener, ActiveLayerChangeListener {
015
016    public ChangesetInSelectionListModel(DefaultListSelectionModel selectionModel) {
017        super(selectionModel);
018    }
019
020    /* ---------------------------------------------------------------------------- */
021    /* Interface SelectionChangeListener                                            */
022    /* ---------------------------------------------------------------------------- */
023    @Override
024    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
025        initFromPrimitives(newSelection);
026    }
027
028    /* ---------------------------------------------------------------------------- */
029    /* Interface LayerChangeListener                                                */
030    /* ---------------------------------------------------------------------------- */
031    @Override
032    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
033        DataSet newData = e.getSource().getEditDataSet();
034        if (newData == null) {
035            setChangesets(null);
036        } else {
037            initFromPrimitives(newData.getAllSelected());
038        }
039    }
040}