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/** 017 * {@link TableCellEditor} for the role column in a table for {@link RelationMember}s. 018 * 019 */ 020public class RelationMemberTableCellEditor extends AbstractCellEditor implements TableCellEditor{ 021 022 private final JosmTextField editor; 023 024 /** 025 * Constructs a new {@code RelationMemberTableCellEditor}. 026 */ 027 public RelationMemberTableCellEditor() { 028 editor = new JosmTextField(); 029 editor.addFocusListener( 030 new FocusAdapter() { 031 @Override 032 public void focusGained(FocusEvent arg0) { 033 editor.selectAll(); 034 } 035 } 036 ); 037 } 038 039 @Override 040 public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { 041 // Do not edit empty or incomplete members ! (fix #5374 and #6315) 042 if (value == null) 043 return null; 044 045 RelationMember member = (RelationMember)value; 046 047 editor.setText(member.getRole()); 048 editor.selectAll(); 049 return editor; 050 } 051 052 @Override 053 public Object getCellEditorValue() { 054 return editor.getText(); 055 } 056 057}