001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.tags; 003 004import java.awt.Component; 005import java.util.EventObject; 006 007import javax.swing.JTable; 008import javax.swing.event.CellEditorListener; 009import javax.swing.table.TableCellEditor; 010 011import org.openstreetmap.josm.gui.util.TableCellEditorSupport; 012import org.openstreetmap.josm.gui.widgets.JosmComboBox; 013 014public 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 @Override 026 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { 027 setSelectedItem(value); 028 this.originalValue = (RelationMemberConflictDecisionType)value; 029 return this; 030 } 031 032 private TableCellEditorSupport tableCellEditorSupport; 033 private RelationMemberConflictDecisionType originalValue; 034 035 @Override 036 public void addCellEditorListener(CellEditorListener l) { 037 tableCellEditorSupport.addCellEditorListener(l); 038 } 039 040 @Override 041 public void cancelCellEditing() { 042 setSelectedItem(originalValue); 043 tableCellEditorSupport.fireEditingCanceled(); 044 } 045 046 @Override 047 public Object getCellEditorValue() { 048 return getSelectedItem(); 049 } 050 051 @Override 052 public boolean isCellEditable(EventObject anEvent) { 053 return true; 054 } 055 056 @Override 057 public void removeCellEditorListener(CellEditorListener l) { 058 tableCellEditorSupport.removeCellEditorListener(l); 059 } 060 061 @Override 062 public boolean shouldSelectCell(EventObject anEvent) { 063 return true; 064 } 065 066 @Override 067 public boolean stopCellEditing() { 068 tableCellEditorSupport.fireEditingStopped(); 069 return true; 070 } 071}