package edu.gui; import edu.nodes.QuestionType; /** * Created by Steven Kok on 25/02/2015. */ public enum QuestionTypeGui { STRING(edu.gui.components.TextBox.class, QuestionType.STRING), BOOLEAN(edu.gui.components.CheckBox.class, QuestionType.BOOLEAN), INTEGER(edu.gui.components.NumberBox.class, QuestionType.INTEGER); private final Class<? extends Subject> component; private final QuestionType questionType; private <T extends Subject> QuestionTypeGui(Class<T> component, QuestionType questionType) { this.component = component; this.questionType = questionType; } public static Class<? extends Subject> getComponent(QuestionType questionType) throws IllegalAccessException, InstantiationException { for (QuestionTypeGui questionTypeGui : values()) { if (questionTypeGui.getQuestionType().equals(questionType)) { return questionTypeGui.component; } } throw new IllegalArgumentException("Unknown component for argument: " + questionType); } public QuestionType getQuestionType() { return questionType; } }