package edu.nodes;
import com.sun.javaws.exceptions.InvalidArgumentException;
import edu.Widgets;
import edu.parser.QL.QLVisitor;
import edu.parser.QLS.QLSVisitor;
import edu.parser.QLS.nodes.AbstractNode;
import java.util.Arrays;
import java.util.List;
/**
* Created by Steven Kok on 21/02/2015.
*/
public enum QuestionType implements AbstractNode, edu.parser.QL.nodes.AbstractNode {
STRING("STRING", Widgets.TEXT),
INTEGER("INTEGER", Widgets.SPINBOX, Widgets.TEXT, Widgets.SLIDER),
BOOLEAN("BOOLEAN", Widgets.YESNO_DROPDOWN, Widgets.YESNO_RADIO, Widgets.CHECKBOX),
DATE("DATE", Widgets.TEXT),
MONEY("MONEY", Widgets.SLIDER, Widgets.TEXT, Widgets.SPINBOX),
DECIMAL("DECIMAL", Widgets.SPINBOX, Widgets.TEXT, Widgets.SLIDER);
private final String type;
private final Widgets[] widgets;
QuestionType(String type, Widgets... widgets) {
this.type = type;
this.widgets = widgets;
}
public static QuestionType getType(String type) throws InvalidArgumentException {
for (QuestionType questionType : values()) {
if (questionType.type.equals(type)) {
return questionType;
}
}
throw new InvalidArgumentException(new String[]{"Cannot find type for input: " + type});
}
public List<Widgets> getWidgets() {
return Arrays.asList(widgets);
}
@Override
public AbstractNode accept(QLSVisitor visitor) {
return visitor.visit(this);
}
public edu.parser.QL.nodes.AbstractNode accept(QLVisitor visitor) {
return visitor.visit(this);
}
}