package ${package}; 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 ${VilleJavaClassPrefix}Executor extends NoMisconceptionExecutor<${VilleJavaClassPrefix}ExerciseData, ${VilleJavaClassPrefix}SubmissionInfo> { private static final long serialVersionUID = 2682119786422750060L; private final ExerciseExecutionHelper<${VilleJavaClassPrefix}SubmissionInfo> execHelper = new ExerciseExecutionHelper<${VilleJavaClassPrefix}SubmissionInfo>(); private final TextField answerField = new TextField(); private VerticalLayout layout = new VerticalLayout(); public ${VilleJavaClassPrefix}Executor() { } @Override public void initialize(Localizer localizer, ${VilleJavaClassPrefix}ExerciseData exerciseData, ${VilleJavaClassPrefix}SubmissionInfo oldSubm, TempFilesManager materials, ExecutionSettings fbSettings) throws ExerciseException { answerField.setCaption(localizer.getUIText(${VilleJavaClassPrefix}UiConstants.ANSWER)); doLayout(exerciseData, oldSubm != null ? oldSubm.getAnswer() : ""); } private void doLayout(${VilleJavaClassPrefix}ExerciseData exerciseData, String oldAnswer) { if (exerciseData.getImgFile() != null) { layout.addComponent(new Image(null, exerciseData.getImgFile() .getAsResource())); } layout.addComponent(new Label(exerciseData.getQuestion())); answerField.setValue(oldAnswer); layout.addComponent(answerField); } @Override public void registerSubmitListener( SubmissionListener<${VilleJavaClassPrefix}SubmissionInfo> submitListener) { execHelper.registerSubmitListener(submitListener); } @Override public Layout getView() { return layout; } @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 ${VilleJavaClassPrefix}SubmissionInfo(answer), submType, null); } @Override public void registerExecutionStateChangeListener( ExecutionStateChangeListener execStateListener) { execHelper.registerExerciseExecutionStateListener(execStateListener); } }