// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.conflict.tags; import java.awt.Component; import java.util.EventObject; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JTable; import javax.swing.event.CellEditorListener; import javax.swing.table.TableCellEditor; import org.openstreetmap.josm.gui.util.TableCellEditorSupport; public class RelationMemberConflictDecisionEditor extends JComboBox implements TableCellEditor { public RelationMemberConflictDecisionEditor() { setOpaque(true); DefaultComboBoxModel model = new DefaultComboBoxModel(); model.addElement(RelationMemberConflictDecisionType.KEEP); model.addElement(RelationMemberConflictDecisionType.REMOVE); model.addElement(RelationMemberConflictDecisionType.UNDECIDED); setModel(model); setRenderer(new RelationMemberConflictDecisionRenderer()); tableCellEditorSupport = new TableCellEditorSupport(this); } /* --------------------------------------------------------------------------------- */ /* TableCellEditor */ /* --------------------------------------------------------------------------------- */ public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { setSelectedItem(value); this.originalValue = (RelationMemberConflictDecisionType)value; return this; } private TableCellEditorSupport tableCellEditorSupport; private RelationMemberConflictDecisionType originalValue; public void addCellEditorListener(CellEditorListener l) { tableCellEditorSupport.addCellEditorListener(l); } public void cancelCellEditing() { setSelectedItem(originalValue); tableCellEditorSupport.fireEditingCanceled(); } public Object getCellEditorValue() { return getSelectedItem(); } public boolean isCellEditable(EventObject anEvent) { return true; } public void removeCellEditorListener(CellEditorListener l) { tableCellEditorSupport.removeCellEditorListener(l); } public boolean shouldSelectCell(EventObject anEvent) { return true; } public boolean stopCellEditing() { tableCellEditorSupport.fireEditingStopped(); return true; } }