view SubjectDataPanel.java @ 11:85b03f084d63

Fix incorrect info about zero-indexing in README. Ignore-this: ed7a491d54fa129a7e2e9bb08c20f17a
author Marcus Pearce <m.pearce@gold.ac.uk>
date Fri, 04 Nov 2011 18:21:49 +0000
parents 4031cbb02f08
children 284c23df4652
line wrap: on
line source
/*=============================================================================
 * File:       SubjectDataPanel.java
 * Author:     Marcus Pearce <m.pearce@gold.ac.uk>
 * Created:    <2007-02-14 11:28:27 marcusp>
 * Time-stamp: <2008-03-11 18:09:47 marcusp>
 *=============================================================================
 */

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.ArrayList; 

public class SubjectDataPanel extends JPanel { 

    /* variables */ 
    private JTextField ageField, trainingField, topfield, instrumentField, 
        participationField, listeningField, nationalityField; 
    private JComboBox sexBox, handBox, hearingBox, instrumentBox, trainingBox, 
        ethnicityBox;
    private JButton finishButton; 

    private SubjectResults results; 

    /* accessors */ 
    public JButton getFinishButton() { return finishButton; }

    /* constructor */ 
    public SubjectDataPanel(ExperimentGui gui, SubjectResults sr) { 
	
	results = sr; 

	JPanel questionsPanel = new JPanel(); 
	questionsPanel.setLayout(new GridLayout(12,1)); 
	questionsPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(""),BorderFactory.createEmptyBorder(5,5,5,5)), questionsPanel.getBorder()));
	
	String[] yesNoOptions = { "", "Yes", "No" };

        // Age 
	ageField = new JTextField(10);
	questionsPanel.add(new JLabel("Age: ")); 
	questionsPanel.add(ageField); 

        // Gender 
	String[] sexBoxOptions = { "", "Male", "Female" }; 
	sexBox = new JComboBox(sexBoxOptions); 
	sexBox.setSelectedIndex(0); 
	questionsPanel.add(new JLabel("Gender: ")); 
	questionsPanel.add(sexBox); 

        // Ethnicity 
	String[] ethnicityBoxOptions = 
            { "", "Asian", "Black", "Chinese", "Mixed", "Other", "White", 
              "Undisclosed" }; 
	ethnicityBox = new JComboBox(ethnicityBoxOptions); 
	questionsPanel.add(new JLabel("Ethnicity: ")); 
	questionsPanel.add(ethnicityBox); 
        
        // Nationality 
	nationalityField = new JTextField(10);
	questionsPanel.add(new JLabel("Nationality: ")); 
	questionsPanel.add(nationalityField); 

        // Handedness 
	String[] handBoxOptions = { "", "Right-handed", "Left-handed" };
	handBox = new JComboBox(handBoxOptions); 
	handBox.setSelectedIndex(0); 
	questionsPanel.add(new JLabel("Handedness: ")); 
	questionsPanel.add(handBox); 

        // Hearing 
        hearingBox = new JComboBox(yesNoOptions); 
        questionsPanel.add(new JLabel("Do you have any hearing difficulties?")); 
	questionsPanel.add(hearingBox); 

        // Instrument / Sing
        instrumentBox = new JComboBox(yesNoOptions); 
	instrumentField = new JTextField(10); 
	
        questionsPanel.add(new JLabel("Do you play an instrument/sing?")); 
	questionsPanel.add(instrumentBox); 

	questionsPanel.add(new JLabel("If so, for how many years have you played/sung? ")); 
	questionsPanel.add(instrumentField); 
        
        // Musical Training
        trainingBox = new JComboBox(yesNoOptions); 
	trainingField = new JTextField(10); 

	questionsPanel.add(new JLabel("Have you had formal musical training?")); 
        questionsPanel.add(trainingBox); 

        questionsPanel.add(new JLabel("If so, for how many years?")); 
	questionsPanel.add(trainingField); 
        
        // Musical Participation 
	participationField = new JTextField(10); 

	questionsPanel.add(new JLabel("How many hours a week do you spend practising/participating in music?")); 
        questionsPanel.add(participationField); 

        // Musical Listening 
        listeningField = new JTextField(10); 
	questionsPanel.add(new JLabel("How many hours per day do you spend listening to music?")); 
        questionsPanel.add(listeningField); 
        
        // Put it all together 
        JPanel finishPanel = new JPanel(); 
	finishButton = new JButton("Finish."); 
        finishPanel.add(finishButton); 

        JPanel topPanel = new JPanel(); 
        topPanel.add(new JLabel("Please answer the following questions:"), 
                     BorderLayout.NORTH); 
        
        JPanel questionsPanel2 = new JPanel(); 
        questionsPanel2.setLayout(new BorderLayout()); 
        questionsPanel2.add(questionsPanel, BorderLayout.NORTH); 

	//getRootPane().setDefaultButton(finishButton);
        this.setLayout (new BorderLayout());
        add(topPanel, BorderLayout.NORTH); 
	add(questionsPanel2,BorderLayout.CENTER); 
	add(finishPanel,BorderLayout.SOUTH); 
    } 

    public void storeData() { 
	ArrayList subjectData = new ArrayList();
	String[] id = {"ID", Integer.toString(results.getSubjectID())}; 
	subjectData.add(id);        
	String[] age = {"Age",ageField.getText()}; 
	subjectData.add(age);
	String[] sex = {"Gender",(String)sexBox.getSelectedItem()}; 
	subjectData.add(sex);
	String[] hand = {"Hand",(String)handBox.getSelectedItem()}; 
	subjectData.add(hand);
	String[] ethnicity = {"Ethnic",(String)ethnicityBox.getSelectedItem()}; 
	subjectData.add(ethnicity);
	String[] nationality = {"Nationality",nationalityField.getText()}; 
	subjectData.add(nationality); 
	String[] hear = {"HearingDiff", (String)hearingBox.getSelectedItem()}; 
	subjectData.add(hear); 
	String[] instrument1 = 
            {"Instrument", (String)instrumentBox.getSelectedItem()}; 
	subjectData.add(instrument1); 
	String[] instrument2 = {"InstrumentYears",instrumentField.getText()}; 
	subjectData.add(instrument2); 
	String[] training1 = {"Training", (String)trainingBox.getSelectedItem()};
	subjectData.add(training1); 
	String[] training2 = {"TrainingYears",trainingField.getText()}; 
	subjectData.add(training2); 
	String[] participation = {"Participation",participationField.getText()}; 
	subjectData.add(participation); 
	String[] listening = {"Listening",listeningField.getText()}; 
	subjectData.add(listening); 
	
        results.setSubjectData(subjectData); 
    } 

    public boolean allDataEntered () { 
        if (ageField.getText().equals("") || 
            sexBox.getSelectedItem().equals("") ||
            handBox.getSelectedItem().equals("") ||
            ethnicityBox.getSelectedItem().equals("") || 
            nationalityField.getText().equals("") || 
            hearingBox.getSelectedItem().equals("") ||
            instrumentBox.getSelectedItem().equals("") ||
            instrumentField.getText().equals("") ||
            trainingBox.getSelectedItem().equals("") ||
            trainingField.getText().equals("") ||
            participationField.getText().equals("") ||
            listeningField.getText().equals(""))
            return false; 
        else return true; 
    }

    public void addFinishButtonListener(ActionListener al) { 
        finishButton.addActionListener(al); 
    }
}