package ql.ast.form.answer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JComponent;
import javax.swing.JTextField;
import ql.ast.environment.Environment;
import ql.ast.expr.exprType.Ident;
import ql.ast.form.Form;
import ql.ast.value.Str;
import ql.ast.value.Value;
public class StrComponent extends AnswerComponent{
private JTextField answer;
@Override
public JComponent getAnswerField(boolean enabled, final Environment environment,
final Form form, final Ident id) {
answer = new JTextField(30);
answer.setEnabled(enabled);
answer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
submitResult(environment, form, id);
}
});
answer.addFocusListener(new FocusListener() {
@Override
public void focusLost(FocusEvent e) {
submitResult(environment, form, id);
}
@Override
public void focusGained(FocusEvent e) {}
});
return answer;
}
@Override
public boolean hasValue() {
return (!answer.getText().equals(""));
}
@Override
public Value getAnswerValue() {
return new Str(answer.getText());
}
@Override
public void setAnswerValue(Value value) {
if (value.getClass().equals(Str.class)) {
answer.setText(((Str)value).getValue());
}
else {
throw new IllegalArgumentException("The given value should be a String type");
}
}
@Override
public void setVisible(boolean visible) {
answer.setVisible(visible);
}
}