001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.conflict.tags;
003
004 import java.awt.Component;
005 import java.util.EventObject;
006
007 import javax.swing.JTable;
008 import javax.swing.event.CellEditorListener;
009 import javax.swing.table.TableCellEditor;
010
011 import org.openstreetmap.josm.gui.util.TableCellEditorSupport;
012 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
013
014 public class RelationMemberConflictDecisionEditor extends JosmComboBox implements TableCellEditor {
015
016 public RelationMemberConflictDecisionEditor() {
017 super(RelationMemberConflictDecisionType.values());
018 setOpaque(true);
019 setRenderer(new RelationMemberConflictDecisionRenderer());
020 tableCellEditorSupport = new TableCellEditorSupport(this);
021 }
022 /* --------------------------------------------------------------------------------- */
023 /* TableCellEditor */
024 /* --------------------------------------------------------------------------------- */
025 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
026 setSelectedItem(value);
027 this.originalValue = (RelationMemberConflictDecisionType)value;
028 return this;
029 }
030
031 private TableCellEditorSupport tableCellEditorSupport;
032 private RelationMemberConflictDecisionType originalValue;
033
034 public void addCellEditorListener(CellEditorListener l) {
035 tableCellEditorSupport.addCellEditorListener(l);
036 }
037
038 public void cancelCellEditing() {
039 setSelectedItem(originalValue);
040 tableCellEditorSupport.fireEditingCanceled();
041 }
042
043 public Object getCellEditorValue() {
044 return getSelectedItem();
045 }
046
047 public boolean isCellEditable(EventObject anEvent) {
048 return true;
049 }
050
051 public void removeCellEditorListener(CellEditorListener l) {
052 tableCellEditorSupport.removeCellEditorListener(l);
053 }
054
055 public boolean shouldSelectCell(EventObject anEvent) {
056 return true;
057 }
058
059 public boolean stopCellEditing() {
060 tableCellEditorSupport.fireEditingStopped();
061 return true;
062 }
063 }