001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.awt.Component;
005
006import javax.swing.AbstractCellEditor;
007import javax.swing.BorderFactory;
008import javax.swing.JTable;
009import javax.swing.table.TableCellEditor;
010
011import org.openstreetmap.josm.data.osm.DataSet;
012import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
013import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
014
015public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor {
016    private AutoCompletingTextField editor = null;
017    private DataSet ds;
018
019    /** user input is matched against this list of auto completion items */
020    private AutoCompletionList autoCompletionList = null;
021
022    /**
023     * constructor
024     */
025    public MemberRoleCellEditor(DataSet ds) {
026        this.ds = ds;
027        editor = new AutoCompletingTextField();
028        editor.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
029        autoCompletionList = new AutoCompletionList();
030        editor.setAutoCompletionList(autoCompletionList);
031    }
032
033    /**
034     * replies the table cell editor
035     */
036    @Override
037    public Component getTableCellEditorComponent(JTable table,
038            Object value, boolean isSelected, int row, int column) {
039
040        String role = (String)value;
041        editor.setText(role);
042        autoCompletionList.clear();
043        ds.getAutoCompletionManager().populateWithMemberRoles(autoCompletionList);
044        return editor;
045    }
046
047    @Override
048    public Object getCellEditorValue() {
049        return editor.getText();
050    }
051
052    /** Returns the edit field for this cell editor. */
053    public AutoCompletingTextField getEditor() {
054        return editor;
055    }
056}