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 }
|