annotate InstructionsPanel.java @ 52:76e99859bdb4 tip

Add class files for previous changes.
author Marcus Pearce <marcus.pearce@eecs.qmul.ac.uk>
date Wed, 25 Feb 2015 10:11:04 +0000
parents 0e030f32a6e2
children
rev   line source
m@0 1 /*=============================================================================
m@0 2 * File: InstructionsPanel.java
m@0 3 * Author: Marcus Pearce <m.pearce@gold.ac.uk>
m@0 4 * Created: <2007-12-05 10:57:31 marcusp>
m@0 5 * Time-stamp: <2007-12-14 16:29:55 marcusp>
m@0 6 *=============================================================================
m@0 7 */
m@0 8
m@0 9 import java.awt.*;
m@0 10 import java.awt.event.*;
m@0 11 import javax.swing.*;
m@0 12 import javax.swing.text.*;
m@0 13 import java.io.*;
jeremy@37 14 import java.util.regex.Pattern;
m@0 15
m@0 16 public class InstructionsPanel extends JPanel {
m@0 17
m@0 18 /* invalid subject id */
jeremy@37 19 public static final String INVALID_SUBJECT_ID = "----";
m@0 20
m@0 21 /* variables */
m@0 22 private ExperimentGui gui;
m@0 23 private JTextField subjectIDField;
m@0 24 private JButton nextButton = new JButton();
m@0 25
m@0 26 /* accessors */
m@0 27 public JButton getNextButton() { return nextButton; }
m@0 28
m@0 29 /* constructor */
m@0 30 public InstructionsPanel (ExperimentGui eg) {
m@0 31
m@0 32 gui = eg;
m@0 33 Experiment exp = gui.getExperiment();
m@0 34
m@0 35 String file = exp.getInstructionsFile();
m@0 36 JScrollPane instructionsPane = createInstructionsPane(file);
m@0 37
m@0 38 JLabel label = new JLabel("Participant ID: ");
m@0 39 subjectIDField = new JTextField(10);
m@0 40
m@0 41 nextButton = new JButton("Continue");
m@0 42
m@0 43 JPanel subjectIDPane = new JPanel();
m@0 44 subjectIDPane.add(label);
m@0 45 subjectIDPane.add(subjectIDField);
m@0 46 subjectIDPane.add(nextButton);
m@0 47
m@0 48 this.setLayout (new BorderLayout());
m@0 49 this.add(instructionsPane, BorderLayout.CENTER);
m@0 50 this.add(subjectIDPane, BorderLayout.SOUTH);
m@0 51 }
m@0 52
m@0 53 /* methods */
m@0 54
jeremy@37 55 public String getSubjectID() {
jeremy@37 56 String subjID = subjectIDField.getText();
jeremy@37 57 Pattern nonAlphaNum = Pattern.compile("[^a-zA-Z0-9]");
jeremy@37 58
jeremy@37 59 if (nonAlphaNum.matcher(subjID).find()) {
m@0 60 subjID = INVALID_SUBJECT_ID;
m@0 61 }
jeremy@37 62
m@0 63 return subjID;
m@0 64 }
m@0 65
m@0 66 private JScrollPane createInstructionsPane(String instructionsFile) {
m@0 67
m@0 68 JEditorPane editorPane = new JEditorPane();
m@0 69
m@0 70 try {
m@0 71 FileReader reader = new FileReader(new File(instructionsFile));
m@0 72 editorPane.setEditable(false);
m@0 73 editorPane.setContentType("text/html");
m@0 74 editorPane.read(reader, null);
m@0 75 } catch (Exception e) {
m@0 76 System.out.println(e.getMessage());
m@0 77 }
m@0 78
m@0 79 JScrollPane editorScrollPane = new JScrollPane(editorPane);
m@0 80 editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
m@0 81 editorScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
m@0 82
m@0 83 editorScrollPane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Instructions"), BorderFactory.createEmptyBorder(5,5,5,5)));
m@0 84 editorScrollPane.setPreferredSize(new Dimension(300, 250));
m@0 85 editorScrollPane.setMinimumSize(new Dimension(10, 10));
m@0 86 return editorScrollPane;
m@0 87 }
m@0 88
m@0 89 public void addNextButtonListener(ActionListener al) {
m@0 90 nextButton.addActionListener(al);
m@0 91 }
m@0 92 }