package ql.gui.input_field;
import javax.swing.JComponent;
import javax.swing.JTextField;
import ql.ast.expression_evaluator.TextValueGetterVisitor;
import ql.ast.expression_value.IValue;
import ql.ast.type.Type;
import ql.gui.expression_interpreter.ExpressionInterpreter;
import ql.gui.input_listener.DocumentInputListener;
/**
* @author orosu
*/
public class TextFieldInput extends JTextField implements IInput
{
private static final long serialVersionUID = 1L;
private final String _id;
private final Type _type;
public TextFieldInput(String id, Type type)
{
this.setColumns(10);
this._id = id;
this._type = type;
}
@Override
public JComponent getJComponent()
{
return this;
}
@Override
public String getId()
{
return this._id;
}
@Override
public IValue getValue()
{
return this._type.accept(new TextValueGetterVisitor(this.getText()));
}
@Override
public void attachInputListener(ExpressionInterpreter expressionInterpreter)
{
this.getDocument().addDocumentListener(new DocumentInputListener(this, expressionInterpreter));
}
@Override
public void setBooleanValue(boolean value)
{
// Do nothing!
}
@Override
public void setStringValue(String value)
{
this.setText(value);
}
@Override
public void setNullValue()
{
this.setText("");
}
}