package net.sf.egonet.web.page; import java.util.ArrayList; import net.sf.egonet.model.Alter; import net.sf.egonet.model.Question; import net.sf.egonet.persistence.Interviewing; import net.sf.egonet.persistence.SimpleLogicMgr; import net.sf.egonet.web.component.FocusOnLoadBehavior; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.basic.MultiLineLabel; import org.apache.wicket.markup.html.link.Link; public class InterviewingQuestionIntroPage extends InterviewingPage { private EgonetPage previousPage, nextPage; private String text; public InterviewingQuestionIntroPage( Long interviewId, String text, EgonetPage previous, EgonetPage next, Question question) { super(interviewId); Link forwardLink; this.previousPage = previous; this.nextPage = next; // perform variable insertion on preface // passing the null value for the alters indicates // we only want answers from ego and ego_id sections, if ( question!=null ) { // text = question.answerCountInsertion(text, interviewId); text = question.dateDataInsertion(text, interviewId, (ArrayList<Alter>)null); text = question.calculationInsertion(text, interviewId, (ArrayList<Alter>)null); text = question.variableInsertion(text, interviewId, (ArrayList<Alter>)null); text = question.conditionalTextInsertion(text, interviewId, (ArrayList<Alter>)null); if ( SimpleLogicMgr.hasError()) { System.out.println ("USE IF error in " + question.getTitle()); } } this.text = text; setQuestionId("Question: " + question.getTitle()); add(new MultiLineLabel("text", this.text).setEscapeModelStrings(false)); add(new Link("backwardLink") { public void onClick() { if(previousPage != null) { setResponsePage(previousPage); } } }); forwardLink = new Link("forwardLink") { public void onClick() { if(nextPage != null) { setResponsePage(nextPage); } } }; forwardLink.add(new FocusOnLoadBehavior()); add(forwardLink); } public String toString() { return text.length() < 23 ? text : text.substring(0, 20)+"..."; } public static EgonetPage possiblyReplaceNextQuestionPageWithPreface( Long interviewId, EgonetPage proposedNextPage, Question earlyQuestion, Question lateQuestion, EgonetPage earlyPage, EgonetPage latePage) { String preface = Interviewing.getPrefaceBetweenQuestions(earlyQuestion, lateQuestion); return preface == null ? proposedNextPage : new InterviewingQuestionIntroPage(interviewId,preface,earlyPage,latePage, ((lateQuestion==null)?earlyQuestion:lateQuestion)); // ((earlyQuestion!=null)?earlyQuestion:lateQuestion)); } }