001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.pair.relation; 003 004import java.awt.Component; 005import java.awt.event.FocusAdapter; 006import java.awt.event.FocusEvent; 007 008import javax.swing.AbstractCellEditor; 009import javax.swing.JTable; 010import javax.swing.table.TableCellEditor; 011 012import org.openstreetmap.josm.data.osm.RelationMember; 013import org.openstreetmap.josm.gui.widgets.JosmTextField; 014 015/** 016 * {@link TableCellEditor} for the role column in a table for {@link RelationMember}s. 017 * @since 1631 018 */ 019public class RelationMemberTableCellEditor extends AbstractCellEditor implements TableCellEditor { 020 021 private final JosmTextField editor; 022 023 /** 024 * Constructs a new {@code RelationMemberTableCellEditor}. 025 */ 026 public RelationMemberTableCellEditor() { 027 editor = new JosmTextField(); 028 editor.addFocusListener( 029 new FocusAdapter() { 030 @Override 031 public void focusGained(FocusEvent arg0) { 032 editor.selectAll(); 033 } 034 } 035 ); 036 } 037 038 @Override 039 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { 040 // Do not edit empty or incomplete members ! (fix #5374 and #6315) 041 if (value == null) 042 return null; 043 044 RelationMember member = (RelationMember) value; 045 046 editor.setText(member.getRole()); 047 editor.selectAll(); 048 return editor; 049 } 050 051 @Override 052 public Object getCellEditorValue() { 053 return editor.getText(); 054 } 055}