package ql.gui.expression_interpreter;
import ql.ast.expression_value.BooleanValue;
import ql.ast.expression_value.DecimalValue;
import ql.ast.expression_value.IntegerValue;
import ql.ast.expression_value.NullValue;
import ql.ast.expression_value.StringValue;
import ql.ast.visitor_elements.IValueElementVisitor;
import ql.gui.widget.IWidget;
/**
* @author orosu
*/
public class ValueInterpreterVisitor implements IValueElementVisitor<Void>
{
/*
* The widget that should be affected after an expression is evaluated
*/
private final IWidget _listenerWidget;
public ValueInterpreterVisitor(IWidget listenerWidget)
{
this._listenerWidget = listenerWidget;
}
@Override
public Void visit(BooleanValue booleanValue)
{
this._setBooleanValue(booleanValue.getValue());
return null;
}
@Override
public Void visit(IntegerValue integerValue)
{
this._setStringValue(integerValue.getValue().toString());
return null;
}
@Override
public Void visit(DecimalValue decimalValue)
{
this._setStringValue(decimalValue.getValue().toString());
return null;
}
@Override
public Void visit(StringValue stringValue)
{
this._setStringValue(stringValue.getValue());
return null;
}
@Override
public Void visit(NullValue nullValue)
{
this._setNullValue();
return null;
}
private void _setBooleanValue(boolean value)
{
this._listenerWidget.setBooleanValue(value);
}
private void _setStringValue(String value)
{
this._listenerWidget.setStringValue(value);
}
private void _setNullValue()
{
this._listenerWidget.setNullValue();
}
}