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);
}
}