package com.vistatec.ocelot.lqi.gui.editor;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.DefaultCellEditor;
import javax.swing.JTable;
import javax.swing.JTextField;
import com.vistatec.ocelot.lqi.gui.FloatDocument;
/**
* Cell editor letting users only insert float values.
*/
public class FloatCellEditor extends DefaultCellEditor {
/** The serial version UID. */
private static final long serialVersionUID = -7583459009569524787L;
/** The float document. */
private FloatDocument document;
/** The text field being the editor component. */
private JTextField editorComp;
/**
* Constructor.
*/
public FloatCellEditor() {
super(new JTextField());
document = new FloatDocument();
}
/*
* (non-Javadoc)
* @see javax.swing.DefaultCellEditor#getTableCellEditorComponent(javax.swing.JTable, java.lang.Object, boolean, int, int)
*/
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
editorComp = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
editorComp.setDocument(document);
editorComp.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
stopCellEditing();
}
}
});
return editorComp;
}
/*
* (non-Javadoc)
* @see javax.swing.DefaultCellEditor#getCellEditorValue()
*/
@Override
public Object getCellEditorValue() {
return editorComp.getText();
}
}