package org.nlamah.QL.View.Controllers;
import org.nlamah.QBase.Constants.QBaseQuestionType;
import org.nlamah.QL.Interfaces.QLFormElementViewControllerVisitor;
import org.nlamah.QL.Interfaces.WidgetViewDelegate;
import org.nlamah.QL.Model.Expression.Abstract.ValueExpression;
import org.nlamah.QL.Model.Form.InputQuestion;
import org.nlamah.QL.Model.Form.Abstract.FormQuestion;
import org.nlamah.QL.View.Controllers.Abstract.FormElementViewController;
import org.nlamah.QL.View.Form.Abstract.QuestionView;
import org.nlamah.QL.View.Form.Abstract.WidgetView;
public class QuestionViewController extends FormElementViewController implements WidgetViewDelegate
{
public QuestionViewController(FormRootViewController rootViewController, FormQuestion question)
{
super(question);
setRootViewController(rootViewController);
}
public void setView(QuestionView questionView)
{
view = questionView;
}
public void setWidgetView(WidgetView widgetView)
{
view = new QuestionView(((FormQuestion) modelElement), widgetView);
}
public QBaseQuestionType questionReturnType()
{
return ((FormQuestion) modelElement).returnType();
}
public String questionString()
{
return ((FormQuestion) modelElement).questionText().value();
}
@Override
public void accept(QLFormElementViewControllerVisitor visitor)
{
visitor.visit(this);
}
@Override
public void valueChanged(ValueExpression newValue)
{
assert(modelElement instanceof InputQuestion);
((InputQuestion) modelElement).setValue(newValue);
rootViewController.modelStateChanged();
}
@Override
public int evaluateViewHeight()
{
view.layoutView();
return view.getPreferredSize().height;
}
}