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}