001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.gui.dialogs.changeset;
003    
004    import java.awt.BorderLayout;
005    import java.beans.PropertyChangeEvent;
006    import java.beans.PropertyChangeListener;
007    
008    import javax.swing.BorderFactory;
009    import javax.swing.JPanel;
010    import javax.swing.JScrollPane;
011    
012    import org.openstreetmap.josm.data.osm.Changeset;
013    import org.openstreetmap.josm.gui.tagging.TagEditorModel;
014    import org.openstreetmap.josm.gui.tagging.TagTable;
015    
016    /**
017     * This panel displays the tags of the currently selected changeset in the {@link ChangesetCacheManager}
018     *
019     */
020    public class ChangesetTagsPanel extends JPanel implements PropertyChangeListener{
021    
022        private TagTable tblTags;
023        private TagEditorModel model;
024    
025        protected void build() {
026            setLayout(new BorderLayout());
027            setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
028            model = new TagEditorModel();
029            tblTags = new TagTable(model);
030            tblTags.setEnabled(false);
031            add(new JScrollPane(tblTags), BorderLayout.CENTER);
032        }
033    
034        public ChangesetTagsPanel() {
035            build();
036        }
037    
038        protected void init(Changeset cs) {
039            if (cs == null) {
040                model.clear();
041                return;
042            }
043            model.initFromTags(cs.getKeys());
044        }
045    
046        /* ---------------------------------------------------------------------------- */
047        /* interface PropertyChangeListener                                             */
048        /* ---------------------------------------------------------------------------- */
049        public void propertyChange(PropertyChangeEvent evt) {
050            if (!evt.getPropertyName().equals(ChangesetCacheManagerModel.CHANGESET_IN_DETAIL_VIEW_PROP))
051                return;
052            Changeset cs = (Changeset)evt.getNewValue();
053            if (cs == null) {
054                model.clear();
055            } else {
056                model.initFromPrimitive(cs);
057            }
058        }
059    }