view InstructionsPanel.java @ 36:69dafbbfc422

Print usage if incorrect number of CL arguments
author Jeremy Gow <jeremy.gow@gmail.com>
date Wed, 14 Nov 2012 21:53:01 +0000
parents 4031cbb02f08
children 0e030f32a6e2
line wrap: on
line source
/*=============================================================================
 * File:       InstructionsPanel.java
 * Author:     Marcus Pearce <m.pearce@gold.ac.uk>
 * Created:    <2007-12-05 10:57:31 marcusp>
 * Time-stamp: <2007-12-14 16:29:55 marcusp>
 *=============================================================================
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import java.io.*;

public class InstructionsPanel extends JPanel { 

    /* invalid subject id */ 
    public static final int INVALID_SUBJECT_ID = -1000; 

    /* variables */ 
    private ExperimentGui gui; 
    private JTextField subjectIDField; 
    private JButton nextButton = new JButton(); 
    
    /* accessors */ 
    public JButton getNextButton() { return nextButton; }
    
    /* constructor */ 
    public InstructionsPanel (ExperimentGui eg) { 

        gui = eg; 
        Experiment exp = gui.getExperiment(); 
        
        String file = exp.getInstructionsFile(); 
        JScrollPane instructionsPane = createInstructionsPane(file); 

        JLabel label = new JLabel("Participant ID: ");
        subjectIDField = new JTextField(10);

        nextButton = new JButton("Continue"); 

        JPanel subjectIDPane = new JPanel(); 
        subjectIDPane.add(label);
        subjectIDPane.add(subjectIDField); 
        subjectIDPane.add(nextButton); 

        this.setLayout (new BorderLayout());
        this.add(instructionsPane, BorderLayout.CENTER); 
        this.add(subjectIDPane, BorderLayout.SOUTH);
    }

    /* methods */ 

    public int getSubjectID() {
        int subjID;
        try {
            subjID = Integer.parseInt(subjectIDField.getText());
        } catch (NumberFormatException e) {
            subjID = INVALID_SUBJECT_ID; 
        }
        return subjID; 
    }
    
    private JScrollPane createInstructionsPane(String instructionsFile) {
        
        JEditorPane editorPane = new JEditorPane();

        try { 
            FileReader reader = new FileReader(new File(instructionsFile)); 
            editorPane.setEditable(false);
            editorPane.setContentType("text/html");
            editorPane.read(reader, null);
        } catch (Exception e) { 
            System.out.println(e.getMessage());
        }
        
        JScrollPane editorScrollPane = new JScrollPane(editorPane);
        editorScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        editorScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        editorScrollPane.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Instructions"), BorderFactory.createEmptyBorder(5,5,5,5)));
        editorScrollPane.setPreferredSize(new Dimension(300, 250));
        editorScrollPane.setMinimumSize(new Dimension(10, 10));
        return editorScrollPane;
    }

    public void addNextButtonListener(ActionListener al) { 
        nextButton.addActionListener(al); 
    }
}