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 }