package org.nlamah.QLS.Builders;
import java.util.List;
import org.nlamah.QBase.Tools.QLSTools;
import org.nlamah.QL.Builders.QLViewControllersFactory;
import org.nlamah.QL.Model.Form.InputQuestion;
import org.nlamah.QL.Model.Form.Abstract.FormQuestion;
import org.nlamah.QL.View.Controllers.QuestionViewController;
import org.nlamah.QL.View.Form.Abstract.WidgetView;
import org.nlamah.QLS.Model.Declaration.WidgetDeclaration;
import org.nlamah.QLS.Model.StylesheetBlock.StyledQuestion;
import org.nlamah.QLS.Model.StylesheetBlock.Stylesheet;
import org.nlamah.QLS.Model.Value.IdentifierValue;
import org.nlamah.QLS.View.Controllers.RootFormViewControllerStyled;
public class QLSViewControllersFactory extends QLViewControllersFactory
{
private Stylesheet stylesheet;
public QLSViewControllersFactory(RootFormViewControllerStyled rootViewController)
{
super(rootViewController);
this.stylesheet = rootViewController.stylesheet();
}
private boolean createNewViewController(FormQuestion question)
{
List<StyledQuestion> styledQuestions = QLSTools.getQuestionsWithIdentifier(stylesheet.questions(), new IdentifierValue(question.identifier().toString()));
assert(styledQuestions.size() == 1);
WidgetDeclaration widgetDeclaration = styledQuestions.get(0).styleBlock().widgetDeclaration();
if (widgetDeclaration != null)
{
QuestionViewController questionViewController = new QuestionViewController(rootViewController, question);
WidgetView widgetView = WidgetViewFactory.widgetViewForStyle(widgetDeclaration);
widgetView.setWidgetViewDelegate(questionViewController);
questionViewController.setWidgetView(widgetView);
currentlyCreatedViewController = questionViewController;
return true;
}
return false;
}
@Override
public void visit(InputQuestion inputQuestion)
{
if (!createNewViewController(inputQuestion))
{
super.visit(inputQuestion);
}
}
}