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