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 }