Puka - Software for Detection of Breaths in Strain Gauge Recordings 1.0.0

File: <base>/sourceCode/subjectData/SubjectInfo.java (38,098 bytes)
/*
 * SubjectInfo.java
 *
 * Created on April 8, 2002, 2:04 PM
 */

package subjectData;

/**
 *
 * @author  Joset A. Etzel
 */
import java.io.*; import java.util.*; import javax.swing.*; import java.sql.*;
import javax.swing.filechooser.*; import java.awt.*; import java.awt.event.*; import subjectData.*;

public class SubjectInfo extends javax.swing.JInternalFrame {
  Connection conData; Statement stmSQL;   //variables for sql database access
	private boolean bolStarted = false; 
		
    /** Creates new form SubjectInfo */
    public SubjectInfo() {
	  ResultSet rssSubjects;
        initComponents();
        
        //connect to the database
        try { 
		  Class.forName("org.gjt.mm.mysql.Driver"); 
		  conData = SubjectData.getDatabaseConnection();
        } catch (Exception e) { e.printStackTrace(); }
        FillCombos();  
        
        try {  //get the education categories
            stmSQL = conData.createStatement();
            rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'Education' ORDER BY boxChoice"); 
            while(rssSubjects.next()) { cboEducation.addItem(rssSubjects.getString("boxChoice")); }

            stmSQL = conData.createStatement();
            rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'Ethnicity' ORDER BY boxChoice"); 
            while(rssSubjects.next()) { cboEthnicity.addItem(rssSubjects.getString("boxChoice")); }

            stmSQL = conData.createStatement();
            rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'Hearing' ORDER BY boxChoice"); 
            while(rssSubjects.next()) { cboHearing.addItem(rssSubjects.getString("boxChoice")); }

            stmSQL = conData.createStatement();
            rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'Sight' ORDER BY boxChoice"); 
            while(rssSubjects.next()) { cboSight.addItem(rssSubjects.getString("boxChoice")); }

            stmSQL = conData.createStatement();
            rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'Handedness' ORDER BY boxChoice"); 
            while(rssSubjects.next()) { cboHandedness.addItem(rssSubjects.getString("boxChoice")); }
            
          stmSQL = conData.createStatement();  //stmSQL is global - have to get it ready
          rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'SubjectType'"); 
          while(rssSubjects.next()) { cboType.addItem(rssSubjects.getString("boxChoice")); }
					
          rssSubjects = stmSQL.executeQuery("SELECT boxChoice FROM comboBoxes WHERE boxID = 'SubjectSubType'"); 
          while(rssSubjects.next()) { cboSubType.addItem(rssSubjects.getString("boxChoice")); }		
          
        } catch(java.sql.SQLException e) { e.printStackTrace(); }
		
		bolStarted = true;  //set flag so know that the form is all loaded
        DisableGUI();
    }

    private void FillCombos() {
        //fills cboSubject from the database
        String strNames = ""; String strTemp = "";
        
		bolStarted = false;  //so cboSubject won't try to update the screen
        cboSubject.removeAllItems(); 
        try {
            stmSQL = conData.createStatement();  //stmSQL is global - have to get it ready
            ResultSet rssSubjects = stmSQL.executeQuery("SELECT subID, PPG, firstName, middleInitial, lastName FROM subject ORDER BY lastName, PPG");
            cboSubject.addItem("");
						while(rssSubjects.next()) {  //fill up cboSubject w/subject names & PPG numbers
                strTemp = rssSubjects.getString("PPG");
                if ( strTemp.equals("") == false ) { strNames = rssSubjects.getInt("subID") + ": " + strTemp; }
                else { strNames = rssSubjects.getInt("subID") + ": " + rssSubjects.getString("lastName") + ", " + rssSubjects.getString("firstName") + " " + rssSubjects.getString("middleInitial") + "."; }
                cboSubject.addItem(strNames); }
			
        } catch(java.sql.SQLException e) { e.printStackTrace(); }   
		bolStarted = true;  //routine is done
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
  private void initComponents() {//GEN-BEGIN:initComponents
    java.awt.GridBagConstraints gridBagConstraints;

    lblFirstName = new javax.swing.JLabel();
    txtFirstName = new javax.swing.JTextField();
    lblLastName = new javax.swing.JLabel();
    txtLastName = new javax.swing.JTextField();
    cboGender = new javax.swing.JComboBox();
    cboGender.addItem("male");
    cboGender.addItem("female");
    lblYear = new javax.swing.JLabel();
    cboEducation = new javax.swing.JComboBox();
    lblEducation = new javax.swing.JLabel();
    lblLesion = new javax.swing.JLabel();
    cboLesion = new javax.swing.JComboBox();
    cboLesion.addItem("yes");
    cboLesion.addItem("no");
    lblGender = new javax.swing.JLabel();
    lblMonth = new javax.swing.JLabel();
    lblMiddle = new javax.swing.JLabel();
    txtMiddleInitial = new javax.swing.JTextField();
    cboSubject = new javax.swing.JComboBox();
    cmdAdd = new javax.swing.JButton();
    cmdDelete = new javax.swing.JButton();
    cmdClose = new javax.swing.JButton();
    lblEthnicity = new javax.swing.JLabel();
    cboEthnicity = new javax.swing.JComboBox();
    lblHearing = new javax.swing.JLabel();
    lblSight = new javax.swing.JLabel();
    lblHandedness = new javax.swing.JLabel();
    cboHearing = new javax.swing.JComboBox();
    cboSight = new javax.swing.JComboBox();
    cboHandedness = new javax.swing.JComboBox();
    txtComment = new javax.swing.JTextField();
    lblComment = new javax.swing.JLabel();
    lblOr = new javax.swing.JLabel();
    lblName = new javax.swing.JLabel();
    txtPPG = new javax.swing.JTextField();
    txtBirthDate = new javax.swing.JTextField();
    cmdSave = new javax.swing.JButton();
    jSeparator3 = new javax.swing.JSeparator();
    lblType = new javax.swing.JLabel();
    cboType = new javax.swing.JComboBox();
    lblSubType = new javax.swing.JLabel();
    cboSubType = new javax.swing.JComboBox();
    cmdEdit = new javax.swing.JButton();
    cmdCancel = new javax.swing.JButton();

    getContentPane().setLayout(new java.awt.GridBagLayout());

    setIconifiable(true);
    setMaximizable(true);
    setResizable(true);
    setTitle("Work With Subjects");
    setMinimumSize(new java.awt.Dimension(790, 250));
    setPreferredSize(new java.awt.Dimension(790, 250));
    lblFirstName.setText("first");
    lblFirstName.setToolTipText("");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 3;
    getContentPane().add(lblFirstName, gridBagConstraints);

    txtFirstName.setMinimumSize(new java.awt.Dimension(130, 26));
    txtFirstName.setPreferredSize(new java.awt.Dimension(130, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.ipady = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(txtFirstName, gridBagConstraints);

    lblLastName.setText("last");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 3;
    getContentPane().add(lblLastName, gridBagConstraints);

    txtLastName.setMinimumSize(new java.awt.Dimension(130, 21));
    txtLastName.setPreferredSize(new java.awt.Dimension(130, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.ipady = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    getContentPane().add(txtLastName, gridBagConstraints);

    cboGender.setMaximumRowCount(2);
    cboGender.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboGender, gridBagConstraints);

    lblYear.setText("(yyyy-mm-dd, or 0000-00-00 if unknown)");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.gridwidth = 5;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblYear, gridBagConstraints);

    cboEducation.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboEducation, gridBagConstraints);

    lblEducation.setText("education:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblEducation, gridBagConstraints);

    lblLesion.setText("lesion: ");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblLesion, gridBagConstraints);

    cboLesion.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.ipady = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboLesion, gridBagConstraints);

    lblGender.setText("gender:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblGender, gridBagConstraints);

    lblMonth.setText("birth date:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblMonth, gridBagConstraints);

    lblMiddle.setText("MI");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 3;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblMiddle, gridBagConstraints);

    txtMiddleInitial.setColumns(2);
    txtMiddleInitial.setMinimumSize(new java.awt.Dimension(11, 21));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(txtMiddleInitial, gridBagConstraints);

    cboSubject.setPreferredSize(new java.awt.Dimension(200, 20));
    cboSubject.addItemListener(new java.awt.event.ItemListener() {
      public void itemStateChanged(java.awt.event.ItemEvent evt) {
        cboSubjectItemStateChanged(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(cboSubject, gridBagConstraints);

    cmdAdd.setMnemonic('A');
    cmdAdd.setText("Add New");
    cmdAdd.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdAddActionPerformed(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
    getContentPane().add(cmdAdd, gridBagConstraints);

    cmdDelete.setMnemonic('D');
    cmdDelete.setText("Delete");
    cmdDelete.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdDeleteActionPerformed(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 6;
    gridBagConstraints.gridy = 0;
    getContentPane().add(cmdDelete, gridBagConstraints);

    cmdClose.setMnemonic('C');
    cmdClose.setText("Close");
    cmdClose.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdCloseActionPerformed(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 6;
    gridBagConstraints.gridy = 10;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
    getContentPane().add(cmdClose, gridBagConstraints);

    lblEthnicity.setText("ethnicity:  ");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblEthnicity, gridBagConstraints);

    cboEthnicity.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboEthnicity, gridBagConstraints);

    lblHearing.setText("hearing:  ");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 4;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblHearing, gridBagConstraints);

    lblSight.setText("sight:  ");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 4;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblSight, gridBagConstraints);

    lblHandedness.setText("handedness:  ");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 4;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblHandedness, gridBagConstraints);

    cboHearing.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboHearing, gridBagConstraints);

    cboSight.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboSight, gridBagConstraints);

    cboHandedness.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 5;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(cboHandedness, gridBagConstraints);

    txtComment.setMinimumSize(new java.awt.Dimension(100, 26));
    txtComment.setPreferredSize(new java.awt.Dimension(620, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 8;
    gridBagConstraints.gridwidth = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(4, 4, 0, 0);
    getContentPane().add(txtComment, gridBagConstraints);

    lblComment.setText("comment:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 8;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(lblComment, gridBagConstraints);

    lblOr.setText("OR enter ID code:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 4;
    gridBagConstraints.gridy = 2;
    getContentPane().add(lblOr, gridBagConstraints);

    lblName.setText("enter name:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 2;
    getContentPane().add(lblName, gridBagConstraints);

    txtPPG.setMinimumSize(new java.awt.Dimension(40, 26));
    txtPPG.setPreferredSize(new java.awt.Dimension(80, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 2;
    gridBagConstraints.gridwidth = 2;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    getContentPane().add(txtPPG, gridBagConstraints);

    txtBirthDate.setText("0000-00-00");
    txtBirthDate.setMinimumSize(new java.awt.Dimension(100, 20));
    txtBirthDate.setPreferredSize(new java.awt.Dimension(130, 20));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 1;
    gridBagConstraints.gridy = 4;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 0);
    getContentPane().add(txtBirthDate, gridBagConstraints);

    cmdSave.setMnemonic('S');
    cmdSave.setText("Save");
    cmdSave.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdSaveActionPerformed(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 5;
    gridBagConstraints.gridy = 0;
    getContentPane().add(cmdSave, gridBagConstraints);

    jSeparator3.setMinimumSize(new java.awt.Dimension(200, 3));
    jSeparator3.setPreferredSize(new java.awt.Dimension(500, 3));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.gridwidth = 7;
    gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0);
    getContentPane().add(jSeparator3, gridBagConstraints);

    lblType.setText("subject type:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    getContentPane().add(lblType, gridBagConstraints);

    cboType.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 6;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 0);
    getContentPane().add(cboType, gridBagConstraints);

    lblSubType.setText("subject subtype:");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
    getContentPane().add(lblSubType, gridBagConstraints);

    cboSubType.setPreferredSize(new java.awt.Dimension(150, 19));
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 7;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 0);
    getContentPane().add(cboSubType, gridBagConstraints);

    cmdEdit.setLabel("Edit");
    cmdEdit.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdEditActionPerformed(evt);
      }
    });

    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 3;
    gridBagConstraints.gridy = 0;
    getContentPane().add(cmdEdit, gridBagConstraints);

    cmdCancel.setText("Cancel");
    cmdCancel.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
        cmdCancelActionPerformed(evt);
      }
    });

    getContentPane().add(cmdCancel, new java.awt.GridBagConstraints());

    pack();
  }//GEN-END:initComponents

	private void cmdCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelActionPerformed
		DisableGUI();
		cboSubject.setSelectedIndex(0);  ClearScreen();
	}//GEN-LAST:event_cmdCancelActionPerformed

  private void cmdEditActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdEditActionPerformed
    //enable the GUI so can edit the information
		if (!((String)cboSubject.getSelectedItem()).equals("")) {EnableGUI(); } 		
  }//GEN-LAST:event_cmdEditActionPerformed

	private void cmdSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSaveActionPerformed
		//add the new subject's info or do the edit, as needed
        String strFirstName = ""; String strLastName = ""; String strGender = ""; String strMiddle = "";
        String strEducation = ""; String strSQL = ""; String strEthnicity = ""; String strBirth = "";
        String strBirthDate = ""; String strLesion = ""; String strPPG = ""; String strSubID = "";
        String strSight = ""; String strHearing = ""; String strHandedness = ""; String strComment = "";
        String strTemp = ""; boolean bolAddingNew = false;
        
        //get the subject ID from the combo box
        strSight = (String)cboSubject.getSelectedItem();
				if (strSight.equals("")) { bolAddingNew = true; } 
				else { 
					bolAddingNew = false; 
					strSubID = strSight.substring(0, strSight.indexOf(":")); 
				}

        //get the values from the user input and put into correct format
        strFirstName = txtFirstName.getText(); strLastName = txtLastName.getText(); strMiddle = txtMiddleInitial.getText();
        strBirth = txtBirthDate.getText(); strGender = (String)cboGender.getSelectedItem(); strPPG = txtPPG.getText();
        strEducation = (String)cboEducation.getSelectedItem(); strLesion = (String)cboLesion.getSelectedItem();
        strEthnicity = (String)cboEthnicity.getSelectedItem(); strSight = (String)cboSight.getSelectedItem(); 
        strHearing = (String)cboHearing.getSelectedItem(); strHandedness = (String)cboHandedness.getSelectedItem(); 
        strComment = txtComment.getText(); //strHandComment = txtHandedness.getText();
        if (strLesion.equals("yes") == true) { strLesion = "1"; } else { strLesion = "0"; }
        if (strGender.equals("female") == true) { strGender = "f"; } else { strGender = "m"; }
        
        //check for errors in the text boxes; show message box & exit if errors
        if(strFirstName.equals("") == true && strPPG.equals("") == true) { JOptionPane.showMessageDialog(null, "Please enter the subject's first name or a PPG identifier.", "Missing Data Error", JOptionPane.ERROR_MESSAGE); return; }
        if(strMiddle.equals("") == true && strPPG.equals("") == true) { JOptionPane.showMessageDialog(null, "Please enter the subject's middle initial or a PPG identifier.", "Missing Data Error", JOptionPane.ERROR_MESSAGE); return; }
        if(strMiddle.length() != 1 && strPPG.equals("") == true) { JOptionPane.showMessageDialog(null, "Please enter the subject's middle initial as one letter or ? if unknown.", "Missing Data Error", JOptionPane.ERROR_MESSAGE); return; }
        if(strLastName.equals("") == true && strPPG.equals("") == true) { JOptionPane.showMessageDialog(null, "Please enter the subject's last name or a PPG identifier.", "Missing Data Error", JOptionPane.ERROR_MESSAGE); return; }
        if(strPPG.equals("") == false && (strFirstName.equals("") == false | strMiddle.equals("") == false | strLastName.equals("") == false)) { JOptionPane.showMessageDialog(null, "Please enter the subject's name or a PPG identifier, not both.", "Data Error", JOptionPane.ERROR_MESSAGE); return; }
        if (strBirth.equals("?") == true) { strBirth = "0000-00-00"; }
        else if (SubjectData.CheckDate(strBirth, "the birth date field") == false) { return; }
        
        //add escape characters, if needed
        strComment = SubjectData.AddEscapeChars(strComment); 
        
        if (bolAddingNew == true) {  //make sql string to ADD a new row for a new subject
            strSQL = "INSERT INTO subject VALUES (NULL, '" + strPPG + "', '" + strFirstName + "', '" + strMiddle + "', '" + 
						strLastName + "', '" + strGender + "', '" + 
             strBirth + "', '" +  strEducation + "', '" + strLesion + "', '" + strEthnicity + "', '" + strHearing + "', '" + 
						 strSight + "', '" + strHandedness + "', '" + (String)cboType.getSelectedItem() + "', '" + 
						 (String)cboSubType.getSelectedItem() + "', '" + strComment + "')";  } 
        else {   //updating an existing row in the database
             strSQL = "UPDATE subject SET PPG = '" + strPPG + "', firstName = '" + strFirstName + "', middleInitial = '" + 
						 strMiddle + "', lastName = '" + strLastName + "', gender = '" 
             + strGender + "', birth = '" + strBirth + "', education = '" + strEducation + "', brainLesion = '" + strLesion + 
						 "', ethnicity = '" + strEthnicity
             + "', hearing = '" + strHearing + "', sight = '" + strSight + "', handedness = '" + strHandedness + "', subjectType='" + 
						 (String)cboType.getSelectedItem() + "', subjectSubType = '"  + (String)cboSubType.getSelectedItem()
             + "', comment = '" + strComment + "' WHERE subID = '" + strSubID + "'"; }
        
        try { //put data into the database as a new row
            stmSQL = conData.createStatement();
            stmSQL.executeUpdate(strSQL);               
        } catch(java.sql.SQLException e) { e.printStackTrace(); }

    FillCombos();  //put the subject's names in the combo box since changed
	  if (strPPG.equals("") == false) { strTemp = strSubID + ": " + strPPG; }  //create the entry's text so can match cboSubject
		else { strTemp = strSubID + ": " + strLastName + ", " + strFirstName + " " + strMiddle + "."; }
		DisableGUI();
		cboSubject.setSelectedIndex(0);  ClearScreen();
	}//GEN-LAST:event_cmdSaveActionPerformed

	private void cboSubjectItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboSubjectItemStateChanged
		//show the information for the subject that was just selected
    String strTemp = ""; String strSubID = ""; boolean bolTemp = false; String strYear = ""; String strMonth = "";
		
		if (bolStarted == true) {  //flag is set to true after the form is completely loaded
			//load the highlighted subject's information on the screen
			strTemp = (String)cboSubject.getSelectedItem();
			if (strTemp.equals("")) { DisableGUI(); ClearScreen(); return; }
      strSubID = strTemp.substring(0, strTemp.indexOf(":")); //ID is always the first part before the :

      try { //get all of the data from the database and put it up on the screen
				ResultSet rssSubjects = stmSQL.executeQuery("SELECT * FROM subject WHERE subID = " + strSubID);
        rssSubjects.next();  //move forward so can get the data out of the database
        txtPPG.setText(rssSubjects.getString("PPG"));
        txtFirstName.setText(rssSubjects.getString("firstName"));
        txtLastName.setText(rssSubjects.getString("lastName"));
        txtMiddleInitial.setText(rssSubjects.getString("middleInitial"));
        cboEthnicity.setSelectedItem(rssSubjects.getString("ethnicity"));
        cboHearing.setSelectedItem(rssSubjects.getString("hearing"));
        cboSight.setSelectedItem(rssSubjects.getString("sight"));
        cboHandedness.setSelectedItem(rssSubjects.getString("handedness"));  
        txtComment.setText(rssSubjects.getString("comment"));
        txtBirthDate.setText(rssSubjects.getString("birth"));
        strTemp = rssSubjects.getString("gender");
        if (strTemp.equals("f") == true) { cboGender.setSelectedItem("female"); }
        else { cboGender.setSelectedItem("male"); }
        cboEducation.setSelectedItem(rssSubjects.getString("education"));
				cboType.setSelectedItem(rssSubjects.getString("subjectType"));
				cboSubType.setSelectedItem(rssSubjects.getString("subjectSubType"));
        bolTemp = rssSubjects.getBoolean("brainLesion");
        if (bolTemp == true) { cboLesion.setSelectedItem("yes"); }
        else { cboLesion.setSelectedItem("no"); }
      } catch(java.sql.SQLException e) { e.printStackTrace(); }     
      DisableGUI();
	}
	}//GEN-LAST:event_cboSubjectItemStateChanged
 
    private void cmdCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCloseActionPerformed
			//close the frame
      try {  this.setClosed(true); }
      catch(java.beans.PropertyVetoException e) { e.printStackTrace(); }
    }//GEN-LAST:event_cmdCloseActionPerformed

    private void cmdDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdDeleteActionPerformed
        //delete the session selected in cboSubject
        int intAnswer = 0; String strTemp = ""; String strSubID = ""; String strTemp2 = "";
        String strTime = ""; String strMovie = ""; boolean bolMade = true; String strHour = "";
        
        //check if a subject and session are selected and get the IDs
        strTemp = (String)cboSubject.getSelectedItem();  
        if (strTemp.equals("") == true) { return; } 
        strSubID = strTemp.substring(0, strTemp.indexOf(":")); //ID is always the first part before the :
        
        //ask the user if they are sure they want to do the delete, exit if not
        intAnswer = JOptionPane.showConfirmDialog(null, "The subject " + strTemp + " will be deleted from the database.  Are you sure you want to delete this subject?", "File Delete Confirm", JOptionPane.YES_NO_OPTION); 
        if (intAnswer == JOptionPane.NO_OPTION) { return; } 
        
      //look to see if there are any sessions for this subject in session, exit if so
      try {  
        stmSQL = conData.createStatement();  //stmSQL & conData are global
        ResultSet rssSubjects = stmSQL.executeQuery("SELECT sessionID FROM sessionData WHERE subID = \"" + strSubID + "\"");    
				if (rssSubjects.next() == true) { JOptionPane.showMessageDialog(null, "All movies and sessions for this subject must be deleted before the subject can be deleted. \nPlease close this screen and open the screen for working on session data first.", "Database Error", JOptionPane.ERROR_MESSAGE); return; }
      } catch(java.sql.SQLException e) { e.printStackTrace();  JOptionPane.showMessageDialog(null, "There has been a database error.", "Serious Database Error", JOptionPane.ERROR_MESSAGE); return; }

      //delete the existing record from the subject table
			try {  
        stmSQL = conData.createStatement();  //stmSQL & conData are global
				stmSQL.executeUpdate("DELETE FROM subject WHERE subID = \"" + strSubID +  "\"");          
      } catch(java.sql.SQLException e) { e.printStackTrace();  JOptionPane.showMessageDialog(null, "There has been an error deleting the database entry.", "Database Deletion Error", JOptionPane.ERROR_MESSAGE); return; }
      
			FillCombos(); 
			cboSubject.setSelectedIndex(0);  ClearScreen();
			DisableGUI();
    }//GEN-LAST:event_cmdDeleteActionPerformed

    private void cmdAddActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdAddActionPerformed
      //adjust GUI so can add a new subject to the database
      cboSubject.setSelectedIndex(0);  ClearScreen();  //call sub to blank out & reset the subject info GUI
      EnableGUI();
    }//GEN-LAST:event_cmdAddActionPerformed
       
    private void DisableGUI() {
      //set all of the text boxes, combo boxes, and labels to disabled.
      
      txtBirthDate.setEditable(false);
      txtComment.setEditable(false);
      txtFirstName.setEditable(false);
      txtLastName.setEditable(false);
      txtMiddleInitial.setEditable(false);
      txtPPG.setEditable(false);
      cboEducation.setEnabled(false);
      cboEthnicity.setEnabled(false);
      cboGender.setEnabled(false);
      cboHandedness.setEnabled(false);
      cboHearing.setEnabled(false);
      cboLesion.setEnabled(false);
      cboSight.setEnabled(false);
      cboSubType.setEnabled(false);
      cboType.setEnabled(false);
      cmdSave.setEnabled(false);
      cmdDelete.setEnabled(true);  cmdAdd.setEnabled(true); 
			cmdEdit.setEnabled(true);  cboSubject.setEditable(true);  //reverse of others
    }
    
     private void EnableGUI() {
      //set all of the text boxes, combo boxes, and labels to disabled.
      
      txtBirthDate.setEditable(true);
      txtComment.setEditable(true);
      txtFirstName.setEditable(true);
      txtLastName.setEditable(true);
      txtMiddleInitial.setEditable(true);
      txtPPG.setEditable(true);
      cboEducation.setEnabled(true);
      cboEthnicity.setEnabled(true);
      cboGender.setEnabled(true);
      cboHandedness.setEnabled(true);
      cboHearing.setEnabled(true);
      cboLesion.setEnabled(true);
      cboSight.setEnabled(true);
      cboSubType.setEnabled(true);
      cboType.setEnabled(true);
      cmdSave.setEnabled(true);
			cmdDelete.setEnabled(false); cmdAdd.setEnabled(false); 
			cmdEdit.setEnabled(false); cboSubject.setEditable(false);  //reverse of others
    }
     
    private void ClearScreen() {
        // sub blanks out the text-entry boxes
        txtFirstName.setText(""); txtLastName.setText(""); txtMiddleInitial.setText(""); txtComment.setText(""); 
        cboGender.setSelectedIndex(0); txtPPG.setText(""); txtBirthDate.setText("0000-00-00");
        cboEducation.setSelectedIndex(0); cboLesion.setSelectedIndex(0); cboEthnicity.setSelectedIndex(0); 
        cboHandedness.setSelectedIndex(0); cboHearing.setSelectedIndex(0); cboSight.setSelectedIndex(0); 
				cboType.setSelectedIndex(0); cboSubType.setSelectedIndex(0);
    }
    
  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JComboBox cboEducation;
  private javax.swing.JComboBox cboEthnicity;
  private javax.swing.JComboBox cboGender;
  private javax.swing.JComboBox cboHandedness;
  private javax.swing.JComboBox cboHearing;
  private javax.swing.JComboBox cboLesion;
  private javax.swing.JComboBox cboSight;
  private javax.swing.JComboBox cboSubType;
  private javax.swing.JComboBox cboSubject;
  private javax.swing.JComboBox cboType;
  private javax.swing.JButton cmdAdd;
  private javax.swing.JButton cmdCancel;
  private javax.swing.JButton cmdClose;
  private javax.swing.JButton cmdDelete;
  private javax.swing.JButton cmdEdit;
  private javax.swing.JButton cmdSave;
  private javax.swing.JSeparator jSeparator3;
  private javax.swing.JLabel lblComment;
  private javax.swing.JLabel lblEducation;
  private javax.swing.JLabel lblEthnicity;
  private javax.swing.JLabel lblFirstName;
  private javax.swing.JLabel lblGender;
  private javax.swing.JLabel lblHandedness;
  private javax.swing.JLabel lblHearing;
  private javax.swing.JLabel lblLastName;
  private javax.swing.JLabel lblLesion;
  private javax.swing.JLabel lblMiddle;
  private javax.swing.JLabel lblMonth;
  private javax.swing.JLabel lblName;
  private javax.swing.JLabel lblOr;
  private javax.swing.JLabel lblSight;
  private javax.swing.JLabel lblSubType;
  private javax.swing.JLabel lblType;
  private javax.swing.JLabel lblYear;
  private javax.swing.JTextField txtBirthDate;
  private javax.swing.JTextField txtComment;
  private javax.swing.JTextField txtFirstName;
  private javax.swing.JTextField txtLastName;
  private javax.swing.JTextField txtMiddleInitial;
  private javax.swing.JTextField txtPPG;
  // End of variables declaration//GEN-END:variables

}