package fi.utu.ville.exercises.template; import com.vaadin.ui.Image; import com.vaadin.ui.Label; import com.vaadin.ui.Layout; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import fi.utu.ville.exercises.helpers.ExerciseExecutionHelper; import fi.utu.ville.exercises.model.ExecutionSettings; import fi.utu.ville.exercises.model.ExecutionState; import fi.utu.ville.exercises.model.ExecutionStateChangeListener; import fi.utu.ville.exercises.model.ExerciseException; import fi.utu.ville.exercises.model.NoMisconceptionExecutor; import fi.utu.ville.exercises.model.SubmissionListener; import fi.utu.ville.exercises.model.SubmissionType; import fi.utu.ville.standardutils.Localizer; import fi.utu.ville.standardutils.TempFilesManager; public class TemplateExecutor extends NoMisconceptionExecutor<TemplateExerciseData, TemplateSubmissionInfo> { /** * */ private static final long serialVersionUID = 2682119786422750060L; private final ExerciseExecutionHelper<TemplateSubmissionInfo> execHelper = new ExerciseExecutionHelper<TemplateSubmissionInfo>(); private final TextField answerField = new TextField("answer:"); private VerticalLayout exerLayout = new VerticalLayout(); public TemplateExecutor() { } @Override public void initialize(Localizer localizer, TemplateExerciseData exerciseData, TemplateSubmissionInfo oldSubm, TempFilesManager materials, ExecutionSettings fbSettings) throws ExerciseException { doLayout(exerciseData, oldSubm != null ? oldSubm.getAnswer() : ""); } private void doLayout(TemplateExerciseData exerciseData, String oldAnswer) { if (exerciseData.getImgFile() != null) { exerLayout.addComponent(new Image(null, exerciseData.getImgFile() .getAsResource())); } exerLayout.addComponent(new Label(exerciseData.getQuestion())); answerField.setValue(oldAnswer); exerLayout.addComponent(answerField); } @Override public void registerSubmitListener( SubmissionListener<TemplateSubmissionInfo> submitListener) { execHelper.registerSubmitListener(submitListener); } @Override public Layout getView() { return exerLayout; } @Override public void shutdown() { // nothing to do here } @Override public void askReset() { // nothing to do here } @Override public ExecutionState getCurrentExecutionState() { return execHelper.getState(); } @Override public void askSubmit(SubmissionType submType) { double corr = 1.0; String answer = answerField.getValue(); execHelper.informOnlySubmit(corr, new TemplateSubmissionInfo(answer), submType, null); } @Override public void registerExecutionStateChangeListener( ExecutionStateChangeListener execStateListener) { execHelper.registerExerciseExecutionStateListener(execStateListener); } }