package ql.gui.input;
import ql.ast.expression.Expr;
import ql.gui.Refreshable;
import ql.gui.control.Control;
import ql.semantics.ExprEvaluator;
import ql.semantics.ValueTable;
import ql.semantics.values.Value;
/**
* Created by Nik on 28-02-2015
*/
public class ExprInput extends Input<Control> implements Refreshable
{
private final Expr expression;
public ExprInput(String id, Control control, Expr expression)
{
super(id, control, true);
this.expression = expression;
this.fillInputNode();
}
public Expr getExpression()
{
return this.expression;
}
@Override
public Value evaluate(ValueTable valueTable)
{
Value val = ExprEvaluator.evaluate(this.getExpression(), valueTable);
valueTable.storeValue(this.getId(), val);
return val;
}
@Override
public void refreshElement(ValueTable valueTable)
{
Value val = valueTable.getValue(this.getId());
this.setValue(val);
}
@Override
public <V> V accept(InputVisitor<V> visitor)
{
return visitor.visit(this);
}
public void setValue(Value value)
{
this.control.setValue(value);
}
}