// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.dialogs.relation; import java.awt.Component; import javax.swing.AbstractCellEditor; import javax.swing.BorderFactory; import javax.swing.JTable; import javax.swing.table.TableCellEditor; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField; import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList; public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor { private final AutoCompletingTextField editor; private final transient DataSet ds; private final transient Relation relation; /** user input is matched against this list of auto completion items */ private final AutoCompletionList autoCompletionList; /** * Constructs a new {@code MemberRoleCellEditor}. * @param ds the data set. Must not be null * @param relation the relation. Can be null */ public MemberRoleCellEditor(DataSet ds, Relation relation) { this.ds = ds; this.relation = relation; editor = new AutoCompletingTextField(0, false); editor.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); autoCompletionList = new AutoCompletionList(); editor.setAutoCompletionList(autoCompletionList); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { String role = (String) value; editor.setText(role); autoCompletionList.clear(); ds.getAutoCompletionManager().populateWithMemberRoles(autoCompletionList, relation); return editor; } @Override public Object getCellEditorValue() { return editor.getText(); } /** * Returns the edit field for this cell editor. * @return the edit field for this cell editor */ public AutoCompletingTextField getEditor() { return editor; } }