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}