001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.dialogs.relation;
003
004 import java.awt.Component;
005
006 import javax.swing.AbstractCellEditor;
007 import javax.swing.BorderFactory;
008 import javax.swing.JTable;
009 import javax.swing.table.TableCellEditor;
010
011 import org.openstreetmap.josm.data.osm.DataSet;
012 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
013 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
014
015 public 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 public Component getTableCellEditorComponent(JTable table,
037 Object value, boolean isSelected, int row, int column) {
038
039 String role = (String)value;
040 editor.setText(role);
041 autoCompletionList.clear();
042 ds.getAutoCompletionManager().populateWithMemberRoles(autoCompletionList);
043 return editor;
044 }
045
046 public Object getCellEditorValue() {
047 return editor.getText();
048 }
049
050 @Override
051 public void cancelCellEditing() {
052 super.cancelCellEditing();
053 }
054
055 @Override
056 public boolean stopCellEditing() {
057 return super.stopCellEditing();
058 }
059
060 /** Returns the edit field for this cell editor. */
061 public AutoCompletingTextField getEditor() {
062 return editor;
063 }
064 }