package de.elatexam.editor.pages.taskdef;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import com.google.common.collect.ImmutableMap;
import de.elatexam.model.ClozeTaskBlock;
import de.elatexam.model.MappingTaskBlock;
import de.elatexam.model.McTaskBlock;
import de.elatexam.model.PaintTaskBlock;
import de.elatexam.model.TaskBlock;
import de.elatexam.model.TextTaskBlock;
import de.elatexam.model.manual.HomogeneousTaskBlock;
/**
* @author Steffen Dienst
*
*/
public abstract class TaskBlockSelectionPanel extends Panel {
@SuppressWarnings("unchecked")
final List<Class<? extends HomogeneousTaskBlock>> taskblocktypes = Arrays.asList(
McTaskBlock.class,
MappingTaskBlock.class,
ClozeTaskBlock.class,
TextTaskBlock.class,
PaintTaskBlock.class);
static final ImmutableMap<Class<? extends HomogeneousTaskBlock>, String> labels = ImmutableMap.of(
McTaskBlock.class, "Multiple Choice",
MappingTaskBlock.class, "Zuordnung",
ClozeTaskBlock.class, "Lückentext",
TextTaskBlock.class, "Freitext",
PaintTaskBlock.class, "Zeichnen");
public TaskBlockSelectionPanel(String id, final ModalWindow modalwindow) {
super(id);
Form<Class<? extends HomogeneousTaskBlock>> form = new Form<Class<? extends HomogeneousTaskBlock>>("form");
add(form);
final RadioChoice<Class<? extends HomogeneousTaskBlock>> choice = new RadioChoice<Class<? extends HomogeneousTaskBlock>>("blockselection",
new Model<Class<? extends HomogeneousTaskBlock>>(),
taskblocktypes,
new IChoiceRenderer<Class<? extends HomogeneousTaskBlock>>() {
@Override
public Object getDisplayValue(Class<? extends HomogeneousTaskBlock> taskblockClass) {
return labels.get(taskblockClass);
}
@Override
public String getIdValue(Class<? extends HomogeneousTaskBlock> taskblockClass, int index) {
return Integer.toString(index);
}
});
form.add(choice);
form.add(new Button("close") {
@Override
public void onSubmit() {
onSelect(choice.getModelObject());
// modalwindow.close(target);
}
});
}
abstract protected void onSelect(Class<? extends HomogeneousTaskBlock> taskblockclass);
}