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 }