m@0: /*============================================================================= m@0: * File: InstructionsPanel.java m@0: * Author: Marcus Pearce m@0: * Created: <2007-12-05 10:57:31 marcusp> m@0: * Time-stamp: <2007-12-14 16:29:55 marcusp> m@0: *============================================================================= m@0: */ m@0: m@0: import java.awt.*; m@0: import java.awt.event.*; m@0: import javax.swing.*; m@0: import javax.swing.text.*; m@0: import java.io.*; jeremy@37: import java.util.regex.Pattern; m@0: m@0: public class InstructionsPanel extends JPanel { m@0: m@0: /* invalid subject id */ jeremy@37: public static final String INVALID_SUBJECT_ID = "----"; m@0: m@0: /* variables */ m@0: private ExperimentGui gui; m@0: private JTextField subjectIDField; m@0: private JButton nextButton = new JButton(); m@0: m@0: /* accessors */ m@0: public JButton getNextButton() { return nextButton; } m@0: m@0: /* constructor */ m@0: public InstructionsPanel (ExperimentGui eg) { m@0: m@0: gui = eg; m@0: Experiment exp = gui.getExperiment(); m@0: m@0: String file = exp.getInstructionsFile(); m@0: JScrollPane instructionsPane = createInstructionsPane(file); m@0: m@0: JLabel label = new JLabel("Participant ID: "); m@0: subjectIDField = new JTextField(10); m@0: m@0: nextButton = new JButton("Continue"); m@0: m@0: JPanel subjectIDPane = new JPanel(); m@0: subjectIDPane.add(label); m@0: subjectIDPane.add(subjectIDField); m@0: subjectIDPane.add(nextButton); m@0: m@0: this.setLayout (new BorderLayout()); m@0: this.add(instructionsPane, BorderLayout.CENTER); m@0: this.add(subjectIDPane, BorderLayout.SOUTH); m@0: } m@0: m@0: /* methods */ m@0: jeremy@37: public String getSubjectID() { jeremy@37: String subjID = subjectIDField.getText(); jeremy@37: Pattern nonAlphaNum = Pattern.compile("[^a-zA-Z0-9]"); jeremy@37: jeremy@37: if (nonAlphaNum.matcher(subjID).find()) { m@0: subjID = INVALID_SUBJECT_ID; m@0: } jeremy@37: m@0: return subjID; m@0: } m@0: m@0: private JScrollPane createInstructionsPane(String instructionsFile) { m@0: m@0: JEditorPane editorPane = new JEditorPane(); m@0: m@0: try { m@0: FileReader reader = new FileReader(new File(instructionsFile)); m@0: editorPane.setEditable(false); m@0: editorPane.setContentType("text/html"); m@0: editorPane.read(reader, null); m@0: } catch (Exception e) { m@0: System.out.println(e.getMessage()); m@0: } m@0: m@0: JScrollPane editorScrollPane = new JScrollPane(editorPane); m@0: editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); m@0: editorScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); m@0: m@0: editorScrollPane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Instructions"), BorderFactory.createEmptyBorder(5,5,5,5))); m@0: editorScrollPane.setPreferredSize(new Dimension(300, 250)); m@0: editorScrollPane.setMinimumSize(new Dimension(10, 10)); m@0: return editorScrollPane; m@0: } m@0: m@0: public void addNextButtonListener(ActionListener al) { m@0: nextButton.addActionListener(al); m@0: } m@0: }