/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <hr>
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* This file has been modified by the OpenOLAT community. Changes are licensed
* under the Apache 2.0 license as the original file.
*/
package org.olat.ims.qti.export;
import java.util.Collection;
import java.util.Map;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
import org.olat.core.gui.components.form.flexible.impl.Form;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.WindowControl;
import org.olat.core.gui.control.generic.wizard.StepFormBasicController;
import org.olat.core.gui.control.generic.wizard.StepsEvent;
import org.olat.core.gui.control.generic.wizard.StepsRunContext;
/**
* Initial Date: June 07, 2006 <br>
*
* @author Alexander Schneider
*/
public class OptionsChooseForm extends StepFormBasicController {
private static final String SCQ_ITEMCOLS = "scqitemcols";
private static final String SCQ_POSCOL = "scqposcol";
private static final String SCQ_POINTCOL = "scqpointcol";
private static final String SCQ_TIMECOLS = "scqtimecols";
private static final String MCQ_ITEMCOLS = "mcqitemcols";
private static final String MCQ_POSCOL = "mcqposcol";
private static final String MCQ_POINTCOL = "mcqpointcol";
private static final String MCQ_TIMECOLS = "mcqtimecols";
private static final String KPRIM_ITEMCOLS = "kprimitemcols";
private static final String KPRIM_POINTCOL = "kprimpointcol";
private static final String KPRIM_TIMECOLS = "kprimtimecols";
private static final String FIB_ITEMCOLS = "fibitemcols";
private static final String FIB_POINTCOL = "fibpointcol";
private static final String FIB_TIMECOLS = "fibtimecols";
private static final String ESSAY_ITEMCOLS = "essayitemcols";
private static final String ESSAY_TIMECOLS = "essaytimecols";
private boolean hasSCQ = false;
private boolean hasMCQ = false;
private boolean hasKRIM = false;
private boolean hasFIB = false;
private boolean hasEssay = false;
private Map<Class<?>, QTIExportItemFormatConfig> mapWithConfigs;
private MultipleSelectionElement scq, mcq, kprim, fib, essay;
private String[] scqKeys, mcqKeys, kprimKeys, fibKeys, essayKeys;
private String[] scqVals, mcqVals, kprimVals, fibVals, essayVals;
public OptionsChooseForm(UserRequest ureq, WindowControl wControl,
Map<Class<?>, QTIExportItemFormatConfig> mapWithConfigs,
StepsRunContext runContext, Form form) {
super(ureq, wControl, form, runContext, LAYOUT_DEFAULT, null);
this.mapWithConfigs = mapWithConfigs;
hasSCQ = mapWithConfigs.get(QTIExportSCQItemFormatConfig.class) != null;
hasMCQ = mapWithConfigs.get(QTIExportMCQItemFormatConfig.class) != null;
hasKRIM = mapWithConfigs.get(QTIExportKPRIMItemFormatConfig.class) != null;
hasFIB = mapWithConfigs.get(QTIExportFIBItemFormatConfig.class) != null;
hasEssay = mapWithConfigs.get(QTIExportEssayItemFormatConfig.class) != null;
scqKeys = new String[]{SCQ_ITEMCOLS, SCQ_POSCOL, SCQ_POINTCOL, SCQ_TIMECOLS};
scqVals = new String[] {
translate("form.itemcols"),
translate("form.poscol"),
translate("form.pointcol"),
translate("form.timecols")
};
mcqKeys = new String[]{MCQ_ITEMCOLS, MCQ_POSCOL, MCQ_POINTCOL, MCQ_TIMECOLS};
mcqVals = new String[] {
translate("form.itemcols"),
translate("form.poscol"),
translate("form.pointcol"),
translate("form.timecols")
};
kprimKeys = new String[]{KPRIM_ITEMCOLS, KPRIM_POINTCOL, KPRIM_TIMECOLS};
kprimVals = new String[] {
translate("form.itemcols"),
translate("form.pointcol"),
translate("form.timecols")
};
fibKeys = new String[]{FIB_ITEMCOLS, FIB_POINTCOL, FIB_TIMECOLS};
fibVals = new String[] {
translate("form.itemcols"),
translate("form.pointcol"),
translate("form.timecols")
};
essayKeys = new String[]{ESSAY_ITEMCOLS, ESSAY_TIMECOLS};
essayVals = new String[] {
translate("form.itemcols"),
translate("form.timecols")
};
initForm (ureq);
}
@Override
protected boolean validateFormLogic(UserRequest ureq) {
// Single Choice
if(hasSCQ){
QTIExportSCQItemFormatConfig c = (QTIExportSCQItemFormatConfig) mapWithConfigs.get(QTIExportSCQItemFormatConfig.class);
Collection<String> s = scq.getSelectedKeys();
c.setResponseCols(s.contains(SCQ_ITEMCOLS));
c.setPositionsOfResponsesCol(s.contains(SCQ_POSCOL));
c.setPointCol(s.contains(SCQ_POINTCOL));
c.setTimeCols(s.contains(SCQ_TIMECOLS));
}
// Multiple Choice
if(hasMCQ){
QTIExportMCQItemFormatConfig c = (QTIExportMCQItemFormatConfig) mapWithConfigs.get(QTIExportMCQItemFormatConfig.class);
Collection<String> s = mcq.getSelectedKeys();
c.setResponseCols(s.contains(MCQ_ITEMCOLS));
c.setPositionsOfResponsesCol(s.contains(MCQ_POSCOL));
c.setPointCol(s.contains(MCQ_POINTCOL));
c.setTimeCols(s.contains(MCQ_TIMECOLS));
}
// KPRIM
if(hasKRIM){
QTIExportKPRIMItemFormatConfig c = (QTIExportKPRIMItemFormatConfig) mapWithConfigs.get(QTIExportKPRIMItemFormatConfig.class);
Collection<String> s = kprim.getSelectedKeys();
c.setResponseCols(s.contains(KPRIM_ITEMCOLS));
c.setPointCol(s.contains(KPRIM_POINTCOL));
c.setTimeCols(s.contains(KPRIM_TIMECOLS));
}
// Fill in the Blank
if(hasFIB){
QTIExportFIBItemFormatConfig c = (QTIExportFIBItemFormatConfig) mapWithConfigs.get(QTIExportFIBItemFormatConfig.class);
Collection<String> s = fib.getSelectedKeys();
c.setResponseCols(s.contains(FIB_ITEMCOLS));
c.setPointCol(s.contains(FIB_POINTCOL));
c.setTimeCols(s.contains(FIB_TIMECOLS));
}
// Essay
if(hasEssay){
QTIExportEssayItemFormatConfig c = (QTIExportEssayItemFormatConfig) mapWithConfigs.get(QTIExportEssayItemFormatConfig.class);
Collection<String> s = essay.getSelectedKeys();
c.setResponseCols(s.contains(ESSAY_ITEMCOLS));
c.setTimeCols(s.contains(ESSAY_TIMECOLS));
}
return true;
}
@Override
protected void formOK(UserRequest ureq) {
fireEvent(ureq, StepsEvent.ACTIVATE_NEXT);
}
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
scq = uifactory.addCheckboxesVertical("scq", "form.scqtitle", formLayout, scqKeys, scqVals, 1);
if(hasSCQ){
QTIExportItemFormatConfig c = mapWithConfigs.get(QTIExportSCQItemFormatConfig.class);
scq.select(SCQ_ITEMCOLS, c.hasResponseCols());
scq.select(SCQ_POSCOL, c.hasPositionsOfResponsesCol());
scq.select(SCQ_POINTCOL, c.hasPointCol());
scq.select(SCQ_TIMECOLS, c.hasTimeCols());
} else {
scq.setVisible(false);
}
mcq = uifactory.addCheckboxesVertical("mcq", "form.mcqtitle", formLayout, mcqKeys, mcqVals, 1);
if(hasMCQ){
QTIExportItemFormatConfig c = mapWithConfigs.get(QTIExportMCQItemFormatConfig.class);
mcq.select(MCQ_ITEMCOLS, c.hasResponseCols());
mcq.select(MCQ_POSCOL, c.hasPositionsOfResponsesCol());
mcq.select(MCQ_POINTCOL, c.hasPointCol());
mcq.select(MCQ_TIMECOLS, c.hasTimeCols());
} else {
mcq.setVisible(false);
}
kprim = uifactory.addCheckboxesVertical("kprim", "form.kprimtitle", formLayout, kprimKeys, kprimVals, 1);
if(hasKRIM){
QTIExportItemFormatConfig c = mapWithConfigs.get(QTIExportKPRIMItemFormatConfig.class);
kprim.select(KPRIM_ITEMCOLS, c.hasResponseCols());
kprim.select(KPRIM_POINTCOL, c.hasPointCol());
kprim.select(KPRIM_TIMECOLS, c.hasTimeCols());
} else {
kprim.setVisible(false);
}
fib = uifactory.addCheckboxesVertical("fib", "form.fibtitle", formLayout, fibKeys, fibVals, 1);
if(hasFIB){
QTIExportItemFormatConfig c = mapWithConfigs.get(QTIExportFIBItemFormatConfig.class);
fib.select(FIB_ITEMCOLS, c.hasResponseCols());
fib.select(FIB_POINTCOL, c.hasPointCol());
fib.select(FIB_TIMECOLS, c.hasTimeCols());
} else {
fib.setVisible(false);
}
essay = uifactory.addCheckboxesVertical("essay", "form.essaytitle", formLayout, essayKeys, essayVals, 1);
if(hasEssay){
QTIExportItemFormatConfig c = mapWithConfigs.get(QTIExportEssayItemFormatConfig.class);
essay.select(FIB_ITEMCOLS, c.hasResponseCols());
essay.select(FIB_TIMECOLS, c.hasTimeCols());
} else {
essay.setVisible(false);
}
}
@Override
protected void doDispose() {
//
}
}