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}