/* * @(#)QuestionModuleWrapper.java 0.0.1 99/07/08 * * Copyright (c) 1999 by Grant Olds. All rights reserved. */ package exercise.engine; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; /** * QuestionModuleWrapper is a JPanel that serves as the * content pane for the QuestionEngine applet. *

* WLW (07/08/99): It is not yet clear to me why this is said to wrap a * question module. (There is no class QuestionModule. So far * I have not done anything to this class. * * @version 0.0.1 07/08/99 * @author Grant Olds * @author Willie Wheeler */ public class QuestionModuleWrapper extends JPanel implements ActionListener { private TextEntryParser textParser; private TextEntryContents textContents; private NumberEntryParser numberParser; private NumberEntryContents numberContents; private TextModuleUI textQuestionUI; private TextFeedbackModuleUI textFeedbackUI; private NumberModuleUI numQuestionUI; private NumberFeedbackModuleUI numFeedbackUI; private MultipleChoiceEntryParser mcParser; private MultipleChoiceContents mcContents; private MultipleChoiceModuleUI mcQuestionUI; private MultipleChoiceFeedbackModuleUI mcFeedbackUI; private JButton submitButton; private JButton hintButton; public QuestionModuleWrapper(String read, ImageIcon hintDown, ImageIcon hintOff, ImageIcon hintRoll, ImageIcon hintUp, ImageIcon submitDown, ImageIcon submitOff, ImageIcon submitRoll, ImageIcon submitUp, Image attention, Image correct, Image incorrect) { StringTokenizer file; //String read = new String(); StringBuffer type = new StringBuffer(); String checkType = new String(); file = new StringTokenizer ( read ); setSize ( 432, 600 ); setBackground ( Color.white ); setLayout ( new BulletinLayout () ); //Check the question type while( file.hasMoreTokens() ) { //System.out.println ( st.nextToken() + "\n"); String currToken = file.nextToken(); if ( currToken.equals ( "QuestionType:") ) { currToken = file.nextToken(); while ( currToken.compareTo( "Section:") != 0 ) { type.append ( currToken ).append (" "); currToken = file.nextToken(); } } } System.out.println ( "The question Type is "+ type ); checkType = type.toString(); if ( checkType.equals ( "Multiple Choice ") ) { System.out.println ( "I got into Number Entry"); //Parse the file using the Number Entry Parser mcParser = new MultipleChoiceEntryParser(); mcParser.parseFile( read ); mcParser.test(); mcContents = new MultipleChoiceContents(); mcContents.setSection ( mcParser.getSection() ); mcContents.setExercise ( mcParser.getExercise() ); mcContents.setQuestion( mcParser.getQuestion() ); mcContents.setCorrectFeedback ( mcParser.getCorrectFeedback() ); mcContents.setChoiceArray ( mcParser.getChoiceArray() ); mcContents.setFeedbackArray ( mcParser.getFeedbackArray() ); mcContents.setFeedbackArray ( mcParser.getFeedbackArray() ); mcContents.setAnswerArray ( mcParser.getAnswerArray() ); mcContents.setHint ( mcParser.getHint() ); hintButton = new JButton(); hintButton.addActionListener ( this ); mcQuestionUI = new MultipleChoiceModuleUI( hintButton, hintDown, hintOff, hintRoll, hintUp, mcContents ); submitButton = new JButton(); submitButton.addActionListener ( this ); mcFeedbackUI = new MultipleChoiceFeedbackModuleUI( submitButton, submitDown, submitOff, submitRoll, submitUp, attention, correct, incorrect ); mcFeedbackUI.setMultipleChoiceContents ( mcContents ); add ( mcQuestionUI ); mcQuestionUI.setLocation ( 0, 0 ); add ( mcFeedbackUI ); mcFeedbackUI.setLocation ( 0, 490 ); } // Parse the file using the Multiple Choice Parser // Create the Multiple Choice Module // Else if the question type is Number Entry // Parse the file using the Number Entry Parser // Create the Number Module // Else if the question type is Text Entry else if ( checkType.equals ( "Text Entry " ) ) { System.out.println ( "I got into text Entry"); //Parse the file using the Text Entry Parser textParser = new TextEntryParser(); textParser.parseFile( read ); textContents = new TextEntryContents(); textContents.setSection ( textParser.getSection() ); textContents.setExercise ( textParser.getExercise() ); textContents.setQuestion( textParser.getQuestion() ); textContents.setAnswer ( textParser.getAnswer() ); textContents.setFeedback ( textParser.getFeedback() ); textContents.setHint ( textParser.getHint() ); //Create the Text Module hintButton = new JButton(); hintButton.addActionListener ( this ); textQuestionUI = new TextModuleUI( hintButton, hintDown, hintOff, hintRoll, hintUp, textContents ); submitButton = new JButton(); submitButton.addActionListener ( this ); textFeedbackUI = new TextFeedbackModuleUI( submitButton, submitDown, submitOff, submitRoll, submitUp, attention, correct, incorrect ); textFeedbackUI.setTextContents ( textContents ); //setFeedbackImages(); add ( textQuestionUI ); textQuestionUI.setLocation ( 0, 0 ); add ( textFeedbackUI ); textFeedbackUI.setLocation ( 0, 223 ); } else if ( checkType.equals ( "Number Entry " ) ) { System.out.println ( "I got into Number Entry"); //Parse the file using the Number Entry Parser numberParser = new NumberEntryParser(); numberParser.parseFile( read ); numberParser.test(); numberContents = new NumberEntryContents(); numberContents.setSection ( numberParser.getSection() ); numberContents.setExercise ( numberParser.getExercise() ); numberContents.setQuestion( numberParser.getQuestion() ); numberContents.setAnswer ( numberParser.getAnswer() ); numberContents.setLessThanX( numberParser.getLessThanX() ); numberContents.setLessThanXFeedback( numberParser.getLessThanXFeedback() ); numberContents.setGreaterThanX( numberParser.getGreaterThanX() ); numberContents.setGreaterThanXFeedback( numberParser.getGreaterThanXFeedback() ); numberContents.setGreaterThanEqualToX( numberParser.getGreaterThanEqualToX() ); numberContents.setLessThanEqualToX( numberParser.getLessThanEqualToX() ); numberContents.setIntervalFeedback( numberParser.getIntervalFeedback() ); numberContents.setElseFeedback( numberParser.getElseFeedback() ); numberContents.setGenStrategy( numberParser.getGenStrategy() ); numberContents.setSpecificStrategy( numberParser.getSpecificStrategy() ); numberContents.setGiveAnswer ( numberParser.getGiveAnswer() ); //Create the Number Module hintButton = new JButton(); hintButton.addActionListener ( this ); numQuestionUI = new NumberModuleUI( hintButton, hintDown, hintOff, hintRoll, hintUp, numberContents ); submitButton = new JButton(); submitButton.addActionListener ( this ); numFeedbackUI = new NumberFeedbackModuleUI( submitButton, submitDown, submitOff, submitRoll, submitUp, attention, correct, incorrect ); numFeedbackUI.setNumberContents ( numberContents ); //setFeedbackImages(); add ( numQuestionUI ); numQuestionUI.setLocation ( 0, 0 ); add ( numFeedbackUI ); numFeedbackUI.setLocation ( 0, 223 ); } } public void actionPerformed ( ActionEvent event ) { Object source = event.getSource(); if ( source.equals ( submitButton ) ) { if ( textFeedbackUI != null ) { System.out.println ("I clicked the SubmitButton "); textFeedbackUI.checkUserAnswer ( textQuestionUI.getUserAnswer () ); } else if ( numFeedbackUI != null ) { numFeedbackUI.checkUserAnswer ( numQuestionUI.getUserAnswer () ); } else if ( mcFeedbackUI != null ) { mcFeedbackUI.checkUserAnswer ( mcQuestionUI.getUserAnswer () ); } } else if ( source.equals ( hintButton ) ) { if ( textQuestionUI != null ) textQuestionUI.displayHint(); else if ( numQuestionUI != null ) numQuestionUI.displayHint(); else if ( mcQuestionUI != null ) mcQuestionUI.displayHint(); } } }