/Users/johnr/Desktop/IA_14_-_Stage_P_Upload_all_2021-04-08/MyFirstGUIProject - Daniel/src/main/java/com/mycompany/myfirstguiproject/MainGUI.java
   1 /*
   2  * To change this license header, choose License Headers in Project Properties.
   3  * To change this template file, choose Tools | Templates
   4  * and open the template in the editor.
   5  */
   6 package com.mycompany.myfirstguiproject;
   7 
   8 import static com.sun.java.accessibility.util.AWTEventMonitor.addActionListener;
   9 import java.awt.AWTException;
  10 import java.awt.Color;
  11 import java.awt.Container;
  12 import java.awt.Dimension;
  13 import java.awt.Font;
  14 import java.awt.Graphics;
  15 import java.awt.GridBagLayout;
  16 import java.awt.GridLayout;
  17 import java.awt.LayoutManager;
  18 import java.awt.List;
  19 import java.awt.Point;
  20 import java.awt.event.ActionEvent;
  21 import java.awt.event.ActionListener;
  22 import java.awt.event.KeyEvent;
  23 import java.awt.event.MouseEvent;
  24 import java.awt.event.MouseListener;
  25 import java.awt.image.ColorModel;
  26 import java.io.BufferedReader;
  27 import java.io.FileNotFoundException;
  28 import java.io.FileReader;
  29 import java.io.FileWriter;
  30 import java.io.IOException;
  31 import java.util.ArrayList;
  32 import java.util.Date;
  33 import java.util.LinkedList;
  34 import java.util.StringTokenizer;
  35 import java.util.concurrent.TimeUnit;
  36 import java.util.logging.Level;
  37 import java.util.logging.Logger;
  38 import javax.swing.AbstractButton;
  39 import javax.swing.ButtonModel;
  40 import javax.swing.DefaultListModel;
  41 import javax.swing.JButton;
  42 import javax.swing.JFrame;
  43 import javax.swing.JLabel;
  44 import javax.swing.JOptionPane;
  45 import javax.swing.JPanel;
  46 import javax.swing.JSpinner.DefaultEditor;
  47 import javax.swing.JTable;
  48 import javax.swing.JToggleButton;
  49 import javax.swing.ListSelectionModel;
  50 import javax.swing.SwingConstants;
  51 import javax.swing.UIManager;
  52 import javax.swing.UnsupportedLookAndFeelException;
  53 import javax.swing.event.ChangeListener;
  54 import javax.swing.plaf.basic.BasicToggleButtonUI;
  55 import javax.swing.table.DefaultTableModel;
  56 import org.openqa.selenium.Keys;
  57 import org.openqa.selenium.WebDriver;
  58 import org.openqa.selenium.chrome.ChromeDriver;
  59 
  60 /**
  61  *
  62  * @author 16939
  63  */
  64 public class MainGUI extends javax.swing.JFrame implements ActionListener{
  65     
  66     public void fileWriterAndReaderMainMethod(boolean isWritingNotReading) throws IOException{
  67         if(isWritingNotReading){
  68             fwStudents();
  69             fwSongs();
  70             fwClasses();
  71             fwGridFormations();
  72         }
  73         else{
  74             frStudents();
  75             frSongs();
  76             frClasses();
  77             frGridFormations();
  78         }
  79     }
  80     
  81     public void fwStudents(){
  82         try {
  83             FileWriter fw = new FileWriter("Students.txt");
  84             for(int i = 0; i < students.size(); i++){
  85                 fw.write(students.get(i).getName());
  86                 fw.write(":");
  87                 fw.write(students.get(i).getEmail());
  88                 fw.write(":");
  89                 fw.write(students.get(i).getLocation());
  90                 fw.write(":");
  91                 fw.write(students.get(i).getTimeZone());
  92                 fw.write(":");
  93                 fw.write(students.get(i).getPhoneNumber());
  94                 fw.write(":");
  95                 fw.write(students.get(i).getNotes());
  96                 fw.write(":");
  97             }
  98             fw.close();
  99         } catch (IOException ex) {
 100             ex.printStackTrace();
 101         }
 102         
 103     }
 104     public void frStudents() throws IOException{
 105         try {
 106             BufferedReader br = new BufferedReader(new FileReader("Students.txt"));
 107             String fileReadIn = br.readLine();
 108             if(fileReadIn==null){
 109                 System.out.println("No students to read just yet...");
 110             }else{
 111             StringTokenizer st = new StringTokenizer(fileReadIn, ":");
 112             while(st.hasMoreTokens()){
 113                 students.add(new Student(st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken()));
 114             }
 115             refreshStudentTable();
 116             refreshExistingStudentTable();
 117             String [] studentsArray = new String[students.size()+1];
 118             studentsArray[0] = "Choose Student to Add Song";
 119             for(int i = 1; i < studentsArray.length; i++){
 120                 studentsArray[i] = students.get(i-1).getName();
 121             }
 122             AddSongToStudentCB.setModel(new javax.swing.DefaultComboBoxModel(studentsArray));
 123             }
 124         } catch (FileNotFoundException ex) {
 125             ex.printStackTrace();
 126         }
 127         
 128     }
 129     public void fwSongs(){
 130         try {
 131             FileWriter fw = new FileWriter("Songs.txt");
 132             for(int i = 0; i < songs.size(); i++){
 133                 fw.write(songs.get(i).getSongName());
 134                 fw.write(":");
 135                 fw.write(songs.get(i).getMovieName());
 136                 fw.write(":");
 137                 fw.write(String.valueOf(songs.get(i).getSongBPM()));
 138                 fw.write(":");
 139                 fw.write(songs.get(i).getDateOfPerformance());
 140                 fw.write(":");
 141                 for(int j = 0; j < songs.get(i).getCompletedStudents().size(); j++){
 142                     fw.write("[" +songs.get(i).getCompletedStudents().get(j).getName());
 143                     fw.write(":");
 144                 }
 145             }
 146             fw.close();
 147         } catch (IOException ex) {
 148             ex.printStackTrace();
 149         }
 150     }
 151     String nextName = "";
 152     int count = 0;
 153     public void frSongs() throws IOException{
 154         try {
 155             BufferedReader br = new BufferedReader(new FileReader("Songs.txt"));
 156             String fileReadIn = br.readLine();
 157             if(fileReadIn == null){
 158                 System.out.println("No songs to read just yet...");
 159             }else{
 160             StringTokenizer st = new StringTokenizer(fileReadIn, ":");
 161             while(st.hasMoreTokens()){
 162                 String name;
 163                 if(!nextName.equals("") && count > 0){
 164                     name = nextName;
 165                     nextName = "";
 166                 }else{
 167                     name = st.nextToken();
 168                     count++;
 169                 }
 170                 String movieName = st.nextToken();
 171                 int BPM = Integer.parseInt(st.nextToken());
 172                 String date = st.nextToken();
 173                 ArrayList<Student> privateStudents = new ArrayList<Student>();
 174                 boolean moreStudents = true;
 175                 while(moreStudents && st.hasMoreTokens()){
 176                     String unsureToken = st.nextToken();
 177                     if(unsureToken.charAt(0) == '['){
 178                         for(int k = 0; k < students.size(); k++){
 179                             if(unsureToken.substring(1).equals(students.get(k).getName())){
 180                                 privateStudents.add(students.get(k));
 181                             }
 182                         }
 183                     }
 184                     else{
 185                         moreStudents = false;
 186                         nextName = unsureToken;
 187                     }
 188                 }
 189                 songs.add(new Song(name, movieName, BPM, date, privateStudents));
 190             }
 191             refreshSongTable();
 192             String [] songsArray = new String[songs.size()+1];
 193             songsArray[0] = "Choose Song";
 194             for(int i = 1; i < songsArray.length; i++){
 195                songsArray[i] = songs.get(i-1).getSongName();
 196             }
 197             ClassSongCB.setModel(new javax.swing.DefaultComboBoxModel(songsArray));
 198             SongsForStudentsCB.setModel(new javax.swing.DefaultComboBoxModel(songsArray));
 199             }
 200         } catch (FileNotFoundException ex) {
 201             ex.printStackTrace();
 202         }
 203         
 204     }
 205     public void fwClasses(){
 206         try {
 207             FileWriter fw = new FileWriter("BollywoodClasses.txt");
 208             for(int i = 0; i < classes.size(); i++){
 209                 fw.write(classes.get(i).getClassName());
 210                 fw.write(":");
 211                 fw.write(classes.get(i).getClassLocation());
 212                 fw.write(":");
 213                 fw.write(classes.get(i).getClassDate());
 214                 fw.write(":");
 215                 fw.write(classes.get(i).getClassSong());
 216                 fw.write(":");
 217                 fw.write(classes.get(i).getInPersonOrZoom());
 218                 fw.write(":");
 219             }
 220             fw.close();
 221         } catch (IOException ex) {
 222             ex.printStackTrace();
 223         }
 224     }
 225     public void frClasses(){
 226         try {
 227             BufferedReader br = new BufferedReader(new FileReader("BollywoodClasses.txt"));
 228             String fileReadIn = br.readLine();
 229             if(fileReadIn==null){
 230                 System.out.println("No classes to read just yet...");
 231             }else{
 232                 StringTokenizer st = new StringTokenizer(fileReadIn, ":");
 233                 while(st.hasMoreTokens()){
 234                     classes.add(new BollywoodClass(st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken(), st.nextToken()));
 235                 }
 236             }
 237             refreshClassTable();
 238             String [] classDateArray = new String[classes.size()];
 239             for(int i = 0; i < classDateArray.length; i++){
 240                 classDateArray[i] = classes.get(i).getClassDate();
 241             }
 242             ClassDateCB.setModel(new javax.swing.DefaultComboBoxModel(classDateArray));
 243         } catch (IOException ex) {  
 244             Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
 245         }
 246     }
 247     public void fwGridFormations(){
 248         try {
 249             FileWriter fw = new FileWriter("Formations.txt");
 250             for(int i = 0; i < formations.size(); i++){
 251                 fw.write(String.valueOf(formations.get(i).size()));
 252                 fw.write(":");
 253                 for(int j = 0; j < formations.get(i).size(); j++){
 254                     fw.write(formations.get(i).get(j).toString());
 255                     fw.write(":");
 256                 }
 257             }
 258             fw.close();
 259         } catch (IOException ex) {
 260             ex.printStackTrace();
 261         }
 262     }
 263     public void frGridFormations() throws IOException{
 264         try {
 265             BufferedReader br = new BufferedReader(new FileReader("Formations.txt"));
 266             String fileReadIn = br.readLine();
 267             if(fileReadIn==null){
 268                 System.out.println("No formations to read just yet...");
 269             }else{
 270                 StringTokenizer st = new StringTokenizer(fileReadIn, ":");
 271                 while(st.hasMoreTokens()){
 272                     int formationSize = Integer.parseInt(st.nextToken());
 273                     LinkedList<String> privateButtonList = new LinkedList<String>();
 274                     for (int i = 0; i < formationSize; i++){
 275                         privateButtonList.add(st.nextToken());
 276                     }
 277                     formations.add(privateButtonList);
 278                 }
 279             }
 280         } catch (FileNotFoundException ex) {
 281             ex.printStackTrace();
 282         }
 283         
 284     }
 285    
 286     private static int numOfTotalRespondents = 0;
 287     private static int createdGridAlready = 0;
 288     public int numOfStudentsGrid = 0;
 289     private int triesToEnter = 0;
 290     
 291     //private static final String SURVEYLINK = "https://www.surveymonkey.com/analyze/browse/Q3QX6VcTZ8y_2F2w6PdfKMEGvjwPbqWiR4VVbxqErVN7g_3D";
 292     //private static final String CLASSDATE = "Feb 16";
 293     public static int respondentsTotal = 0;
 294     
 295     private ArrayList<Integer> found = new ArrayList<Integer>(); 
 296     public LinkedList<String> selectedGridButtonList = new LinkedList<String>();
 297     public static JButton[][] jbuttongrid = new JButton[15][15];
 298     public static JToggleButton[][] jtogglegrid = new JToggleButton[15][15];
 299     private ArrayList<LinkedList> formations = new ArrayList<LinkedList>();    
 300     private ArrayList<Student> students = new ArrayList<Student>();
 301     public static ArrayList<Song> songs = new ArrayList<Song>();
 302     private ArrayList<BollywoodClass> classes = new ArrayList<BollywoodClass>();
 303     public static MainGUI mainGUI = new MainGUI();
 304     public Integer colGrid = 0;
 305     public Integer rowGrid = 0;
 306     /**
 307      * Creates new form MainGUI
 308      */
 309     public MainGUI() {
 310         initComponents();
 311         try {
 312             myInit();
 313         } catch (IOException ex) {
 314             ex.printStackTrace();
 315         }
 316         
 317     }
 318     
 319     public void createGrid(){
 320         while(GridPanel.getComponentCount()!=0)
 321         GridPanel.remove(0);
 322         GridPanel.setLayout(new GridLayout(15,15));
 323         addButtons(GridPanel);
 324     }
 325     
 326 
 327     public void addButtons(Container container){
 328         createdGridAlready++;
 329         if(createdGridAlready < 2){
 330             for(int row = 0; row < 15; row++){
 331                 for(int col = 0; col < 15; col++){
 332                     jtogglegrid[row][col] = new JToggleButton();
 333                     //jtogglegrid[row][col].setUI(new BasicToggleButtonUI());
 334                     jtogglegrid[row][col].setPreferredSize(new Dimension(40,40));
 335                     jtogglegrid[row][col].setMaximumSize(new Dimension(40,40));
 336                     jtogglegrid[row][col].setMinimumSize(new Dimension(40,40));
 337                     jtogglegrid[row][col].addActionListener(this);
 338                     //jtogglegrid[row][col].setFocusPainted(false);
 339                     container.add(jtogglegrid[row][col]);
 340                     //jtogglegrid[row][col].addChangeListener(new ChangeListener());
 341                     //ButtonModel buttonModel = jtogglegrid[row][col].getModel(); 
 342                 }
 343             }
 344         }
 345     }
 346 
 347     @Override
 348     public void actionPerformed(ActionEvent e) {
 349         boolean selected = true;
 350         for(Integer j = 0; j < 15; j++){
 351             for(Integer k = 0; k < 15; k++){
 352                 if (e.getSource() == jtogglegrid[j][k]){
 353                     if(selectedGridButtonList.size()>0){
 354                         for(int check = 0; check < selectedGridButtonList.size(); check++){
 355                             if(selectedGridButtonList.get(check).equals(j.toString() + "," + k.toString())){
 356                                 selectedGridButtonList.remove(check);
 357                                 System.out.println("Element is Removed");
 358                                 selected = false;
 359                             }
 360                         }
 361                     }
 362                     else if(selectedGridButtonList.isEmpty()){
 363                             selectedGridButtonList.add(j.toString() + "," + k.toString());
 364                             System.out.println(selectedGridButtonList.getLast());
 365                             System.out.println("First Element is Added");
 366                             selected = false;
 367                     }
 368                     if(selected){
 369                         selectedGridButtonList.add(j.toString() + "," + k.toString());
 370                         System.out.println(selectedGridButtonList.getLast());
 371                         System.out.println("Element is added");
 372                     }
 373                 }
 374              }
 375          }
 376     }
 377     
 378     public String getMonthAndDay(Date date){
 379         String month = "";
 380         switch(date.getMonth()){
 381             case 0: 
 382                 month = "Jan";
 383                 break;
 384             case 1:
 385                 month = "Feb";
 386                 break;
 387             case 2: 
 388                 month = "Mar";
 389                 break;
 390             case 3:
 391                 month = "Apr";
 392                 break;
 393             case 4: 
 394                 month = "May";
 395                 break;
 396             case 5:
 397                 month = "Jun";
 398                 break;
 399             case 6: 
 400                 month = "Jul";
 401                 break;
 402             case 7:
 403                 month = "Aug";
 404                 break;
 405             case 8: 
 406                 month = "Sep";
 407                 break;
 408             case 9:
 409                 month = "Oct";
 410                 break;
 411             case 10: 
 412                 month = "Nov";
 413                 break;
 414             case 11:
 415                 month = "Dec";
 416                 break;    
 417         }
 418         return month + " " + date.getDate();
 419     }
 420 
 421     public void myInit() throws IOException{
 422         RemoveButton.setVisible(false);
 423         SendEmailButton.setVisible(false);
 424         ConfirmRemoveCB.setVisible(false);
 425         GridPanel.setVisible(true);
 426         createGrid();
 427         AllLabel.setVisible(false);
 428         danceFormationSaveButton.setVisible(true);
 429         NumberOfStudentsLabel.setVisible(false);
 430         NumberOfStudentsSpinner.setVisible(false);
 431         prevButton.setVisible(false);
 432         nextButton.setVisible(false);
 433         jLabel8.setVisible(false);
 434         jLabel10.setVisible(false);
 435         AddSongToStudentCB.setVisible(false);
 436         AddSongToStudentButton.setVisible(false);
 437         FormationsLabel.setHorizontalAlignment(SwingConstants.CENTER);
 438         RemoveButton1.setVisible(false);
 439         ConfirmRemoveCB1.setVisible(false);
 440         fileWriterAndReaderMainMethod(false);
 441     }
 442     public Thread threadProgressBar() {
 443         Thread t1 = new Thread(() -> {
 444             ExtractionProgressBar.setMaximum(respondentsTotal);
 445             while(ExtractionProgressBar.getValue() != ExtractionProgressBar.getMaximum()){
 446                     //int progress = numOfTotalRespondents - newProgress;
 447                     ExtractionProgressBar.setValue(EmailAutomation.progressCounter);
 448                     System.out.println("Max: " + respondentsTotal);
 449                     System.out.println("Current: " + EmailAutomation.emails.getSize());
 450                    try {
 451                        TimeUnit.SECONDS.sleep(1);
 452                    } catch (InterruptedException ex) {
 453                        ex.printStackTrace();
 454                    }
 455                }
 456         });
 457         return t1;
 458     }
 459     
 460     public void refreshStudentTable(){
 461         DefaultTableModel dtm1 = (DefaultTableModel) ListOfStudentsT.getModel();
 462         while(dtm1.getRowCount() != 0)
 463             dtm1.removeRow(0);
 464         for(int row = 0; row < students.size(); row++){
 465             dtm1.addRow(new Object[]{students.get(row).getName(), students.get(row).getEmail(), students.get(row).getLocation(), students.get(row).getPhoneNumber(), students.get(row).getTimeZone(), students.get(row).getNotes()});
 466         }
 467     }
 468     
 469     public void refreshExistingStudentTable(){
 470         DefaultTableModel dtm = (DefaultTableModel) ListOfExistingStudentsT.getModel();
 471         while(dtm.getRowCount() != 0)
 472             dtm.removeRow(0);
 473         for(int row = 0; row < students.size(); row++){
 474             dtm.addRow(new Object[]{students.get(row).getName(), students.get(row).getEmail(), students.get(row).getTimeZone()});
 475         } 
 476     }
 477     
 478     public void refreshSongTable(){
 479         DefaultTableModel dtm2 = (DefaultTableModel) ListOfSongsT.getModel();
 480         while(dtm2.getRowCount() != 0)
 481             dtm2.removeRow(0);
 482         for(int row = 0; row < songs.size(); row++){
 483             dtm2.addRow(new Object[]{songs.get(row).getSongName(), songs.get(row).getMovieName(), songs.get(row).getSongBPM(),songs.get(row).getDateOfPerformance()});
 484         } 
 485     }
 486     public void refreshClassTable(){
 487         DefaultTableModel dtm3 = (DefaultTableModel) ListOfClassesT.getModel();
 488         while(dtm3.getRowCount() != 0)
 489             dtm3.removeRow(0);
 490         for(int row = 0; row < classes.size(); row++){
 491             dtm3.addRow(new Object[]{classes.get(row).getClassName(), classes.get(row).getClassLocation(), classes.get(row).getClassDate(),classes.get(row).getClassSong(),classes.get(row).getInPersonOrZoom()});
 492         } 
 493     }
 494     
 495     public boolean correctStudentInfo(){
 496         if(StudentNameTF.getText().length() < 2){
 497             JOptionPane.showMessageDialog(this, "The Student Name must be filled and at least 2 characters long. Please re-enter the following information", "Error Message", HEIGHT);
 498             return false;
 499         }
 500         else if(StudentNameTF.getText().length() > 30){
 501             triesToEnter++;
 502             JOptionPane.showMessageDialog(this, "The student name seems a bit long... Consider editing it by only writing a first name", "Warning Message", HEIGHT);
 503             return false;
 504         }
 505         if(StudentEmailTF.getText().equals("")){
 506             JOptionPane.showMessageDialog(this, "Please make sure the student email is not left blank", "Error Message", HEIGHT);
 507             return false;
 508         }
 509         if(!StudentEmailTF.getText().substring(StudentEmailTF.getText().length()-4).equals(".com") && triesToEnter == 0){
 510             triesToEnter++;
 511             JOptionPane.showMessageDialog(this, "Please check to make sure the email is valid before re-entering", "Warning Message", HEIGHT);
 512             return false;
 513         }
 514         if(StudentPhoneNumberTF.getText().substring(0, 1).equals("0") && triesToEnter == 0){
 515             triesToEnter++;
 516             JOptionPane.showMessageDialog(this, "We reccomend that you add the country code to the phone number!", "Warning Message", HEIGHT);
 517             return false;
 518         }
 519         if(StudentPhoneNumberTF.getText().length() < 7 || StudentPhoneNumberTF.getText().length() > 15){
 520             JOptionPane.showMessageDialog(this, "Please make sure the phone number is in between 7 and 15 characters, inclusive", "Error Message", HEIGHT);
 521             return false;
 522         }  
 523         if(!StudentTimeZoneTF.getText().substring(0, 3).equalsIgnoreCase("GMT") && triesToEnter==0){
 524             triesToEnter++;
 525             JOptionPane.showMessageDialog(this, "Please make sure you are using the correct timezone format: GMT", "Error Message", HEIGHT);
 526             return false;
 527         }
 528         return (StudentNameTF.getText().length() > 2 && StudentNameTF.getText().length() < 30 && !StudentEmailTF.getText().equals("") && StudentEmailTF.getText().substring(StudentEmailTF.getText().length()-4).equals(".com") && !StudentPhoneNumberTF.getText().substring(0, 1).equals("0") && StudentPhoneNumberTF.getText().length() > 7 && StudentPhoneNumberTF.getText().length() < 15) || triesToEnter > 0;
 529     }
 530     
 531     public boolean correctSongInfo(){
 532         if(triesToEnter > 0){
 533             return true;
 534         }
 535         else if(SongNameTF.getText().equals("")){
 536             JOptionPane.showMessageDialog(this, "You must input a song name in the corresponding text-field", "Error Message", HEIGHT);
 537             return false;
 538         }
 539         else if(!isNumeric()){
 540             JOptionPane.showMessageDialog(this, "Please input an integer for the Song BPM", "Error Message", HEIGHT);
 541             return false;
 542         }
 543         else if(MovieNameTF.getText().length() < 30 && SongNameTF.getText().length() < 30){
 544             return true;
 545         }
 546         else{
 547             JOptionPane.showMessageDialog(this, "Make sure your inputs arent too long... Re-enter the song information" ,"Warning Message" ,HEIGHT);  
 548             return false;
 549         }
 550     }
 551     
 552     public boolean isNumeric(){
 553         
 554         if (SongBPMTF.getText() == null) {
 555         return false;
 556         }   
 557         try{
 558             int d = Integer.parseInt(SongBPMTF.getText());
 559         }
 560         catch (NumberFormatException nfe){
 561             return false;
 562         }
 563         return true;
 564     }
 565     
 566     public void makeListEmpty(JTable table){
 567         for(int row = 0; row < table.getRowCount(); row++){
 568             for(int col = 0; col < table.getColumnCount(); col++){
 569                 table.setValueAt("", row, col);
 570             }
 571         }
 572     }
 573     
 574     public String inPersonOrZoom(){
 575         if(InPersonCB.isSelected()){
 576             if(ZoomCB.isSelected()){
 577                 return "In Person and On Zoom";
 578             }else{
 579                 return "In Person";
 580             }
 581         }
 582         else if(ZoomCB.isSelected()){
 583             return "On Zoom";
 584         }
 585         return "N/A";
 586     }
 587     
 588     public boolean correctClassInfo(){
 589         if(!InPersonCB.isSelected() && !ZoomCB.isSelected()){
 590             JOptionPane.showMessageDialog(this, "Please select either In-person or Zoom class in order to input a new class", "Error Message", HEIGHT);
 591             return false;
 592         }
 593         if(ClassLocationTF.getText().equals("") ||ClassNameTF.getText().equals("")){
 594             JOptionPane.showMessageDialog(this, "The class name and location text-fields cannot be left blank for input", "Error Message", HEIGHT);
 595             return false;
 596         }
 597         if(getMonthAndDay(ClassDateChooser.getDate()).equalsIgnoreCase("")){
 598             JOptionPane.showMessageDialog(this, "Please make sure the date of the class is being inputted", "Error Message", HEIGHT);
 599         }
 600         if(ClassSongCB.getSelectedIndex() == -1 || ClassSongCB.getSelectedItem().toString().equals("Choose Song")){
 601             JOptionPane.showMessageDialog(this, "Please input a song as part of the information about the class", "Error Message", HEIGHT);
 602             return false;
 603         }
 604         else{
 605             return true;
 606         }
 607     }
 608     
 609     /**
 610      * This method is called from within the constructor to initialize the form.
 611      * WARNING: Do NOT modify this code. The content of this method is always
 612      * regenerated by the Form Editor.
 613      */






Netbeans auto-generated GUI code pasted at the bottom of this file.





1688 
1689     private void exitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {                                             
1690        
1691         System.exit(0);
1692     }                                            
1693 
1694     private void CreateOrChooseExisitingTBActionPerformed(java.awt.event.ActionEvent evt) {                                                          
1695         // TODO add your handling code here:
1696         if(CreateOrChooseExisitingTB.isSelected()){
1697             CreateOrChooseExisitingTB.setText("Choose an Existing Dance Formation");
1698         }
1699         else{
1700             CreateOrChooseExisitingTB.setText("Create a New Dance Formation");
1701         }
1702     }                                                         
1703 
1704     private void SongBPMTFActionPerformed(java.awt.event.ActionEvent evt) {                                          
1705         // TODO add your handling code here:
1706     }                                         
1707 
1708     private void StudentPhoneNumberTFActionPerformed(java.awt.event.ActionEvent evt) {                                                     
1709         // TODO add your handling code here:
1710     }                                                    
1711 
1712     private void StudentTimeZoneTFActionPerformed(java.awt.event.ActionEvent evt) {                                                  
1713         // TODO add your handling code here:
1714     }                                                 
1715 
1716     private void MovieNameTFActionPerformed(java.awt.event.ActionEvent evt) {                                            
1717         // TODO add your handling code here:
1718     }                                           
1719 
1720     private void InputSongOKButtonMouseReleased(java.awt.event.MouseEvent evt) {                                                
1721         // TODO add your handling code here:
1722         // 
1723         if(correctSongInfo()){
1724             triesToEnter = 0;
1725             songs.add(new Song(SongNameTF.getText(), MovieNameTF.getText(), Integer.parseInt(SongBPMTF.getText()), getMonthAndDay(DateOfPerformanceChooser.getDate()), new ArrayList<Student>()));
1726             String [] songsArray = new String[songs.size()+1];
1727             songsArray[0] = "Choose Song";
1728             for(int i = 1; i < songsArray.length; i++){
1729                songsArray[i] = songs.get(i-1).getSongName();
1730             }
1731             ClassSongCB.setModel(new javax.swing.DefaultComboBoxModel(songsArray));
1732             SongsForStudentsCB.setModel(new javax.swing.DefaultComboBoxModel(songsArray));
1733             
1734         }
1735         refreshSongTable();
1736         
1737     }                                               
1738 
1739     private void SongNameTFActionPerformed(java.awt.event.ActionEvent evt) {                                           
1740         // TODO add your handling code here:
1741     }                                          
1742 
1743     private void StudentLocationTFActionPerformed(java.awt.event.ActionEvent evt) {                                                  
1744         // TODO add your handling code here:
1745     }                                                 
1746 
1747     private void StudentEmailTFActionPerformed(java.awt.event.ActionEvent evt) {                                               
1748         // TODO add your handling code here:
1749     }                                              
1750 
1751     private void StudentNameTFActionPerformed(java.awt.event.ActionEvent evt) {                                              
1752         // TODO add your handling code here:
1753     }                                             
1754 
1755     private void StudentNameTFMouseReleased(java.awt.event.MouseEvent evt) {                                            
1756         // TODO add your handling code here:
1757         StudentNameTF.setText("");
1758         StudentNameTF.setForeground(Color.BLACK);
1759     }                                           
1760 
1761     private void InputStudentOKButtonMouseReleased(java.awt.event.MouseEvent evt) {                                                   
1762         // TODO add your handling code here:
1763         String phoneNumber;
1764         if(correctStudentInfo()){
1765             triesToEnter = 0;
1766             students.add(new Student(StudentNameTF.getText(), StudentEmailTF.getText(), StudentLocationTF.getText(), StudentTimeZoneTF.getText(), StudentPhoneNumberTF.getText(), StudentAdditionalNotesTF.getText()));
1767         }
1768         String [] studentsArray = new String[students.size()+1];
1769         studentsArray[0] = "Choose Student to Add Song";
1770         for(int i = 1; i < studentsArray.length; i++){
1771             studentsArray[i] = students.get(i-1).getName();
1772         }
1773         AddSongToStudentCB.setModel(new javax.swing.DefaultComboBoxModel(studentsArray));
1774         refreshStudentTable();
1775         refreshExistingStudentTable();
1776     }                                                  
1777 
1778     private void SortingSongsCBItemStateChanged(java.awt.event.ItemEvent evt) {                                                
1779         // TODO add your handling code here:
1780         SortingAndSearching sortForSong = new SortingAndSearching();
1781         
1782         if(SortingSongsCB.getSelectedItem().toString().equalsIgnoreCase("Song Name A-Z")){
1783             sortForSong.sortBySongNameAZ(songs);
1784             refreshSongTable();
1785         }
1786         else if (SortingSongsCB.getSelectedItem().toString().equalsIgnoreCase("Movie Name A-Z")){
1787             sortForSong.sortByMovieNameAZ(songs);
1788             refreshSongTable();
1789         }
1790         else if (SortingSongsCB.getSelectedItem().toString().equalsIgnoreCase("BPM (ascending)")){
1791             sortForSong.sortByBPMAscending(songs);
1792             refreshSongTable();
1793         }
1794         else if (SortingSongsCB.getSelectedItem().toString().equalsIgnoreCase("BPM (descending)")){
1795             sortForSong.sortByBPMDescending(songs);
1796             refreshSongTable();
1797         }
1798         
1799     }                                               
1800 
1801     private void SortingStudentsCBItemStateChanged(java.awt.event.ItemEvent evt) {                                                   
1802         // TODO add your handling code here:
1803         SortingAndSearching sortForStudent = new SortingAndSearching();
1804         
1805         if(SortingStudentsCB.getSelectedItem().toString().equals("Name A-Z")){
1806             sortForStudent.sortByStudentNameAZ(students);
1807             refreshStudentTable();
1808         }
1809         else if (SortingStudentsCB.getSelectedItem().toString().equals("Email A-Z")){
1810             sortForStudent.sortByStudentEmailAZ(students);
1811             refreshStudentTable();
1812         }
1813         else if(SortingStudentsCB.getSelectedItem().toString().equals("Location A-Z")){
1814             sortForStudent.sortByStudentLocationAZ(students);
1815             refreshStudentTable();
1816         }
1817         else if(SortingStudentsCB.getSelectedItem().toString().equals("GMT (Descending)")){
1818             sortForStudent.sortByStudentTimeZoneAZ(students);
1819             refreshStudentTable();
1820         }
1821         
1822     }                                                  
1823 
1824     private void StudentEmailTFMouseReleased(java.awt.event.MouseEvent evt) {                                             
1825         // TODO add your handling code here:
1826         StudentEmailTF.setText("");
1827         StudentEmailTF.setForeground(Color.BLACK);
1828     }                                            
1829 
1830     private void StudentLocationTFMouseReleased(java.awt.event.MouseEvent evt) {                                                
1831         // TODO add your handling code here:
1832         StudentLocationTF.setText("");
1833         StudentLocationTF.setForeground(Color.BLACK);
1834     }                                               
1835 
1836     private void StudentPhoneNumberTFMouseReleased(java.awt.event.MouseEvent evt) {                                                   
1837         // TODO add your handling code here:
1838         StudentPhoneNumberTF.setText("");
1839         StudentPhoneNumberTF.setForeground(Color.BLACK);
1840     }                                                  
1841 
1842     private void StudentTimeZoneTFMouseReleased(java.awt.event.MouseEvent evt) {                                                
1843         // TODO add your handling code here:
1844         StudentTimeZoneTF.setText("");
1845         StudentTimeZoneTF.setForeground(Color.BLACK);
1846     }                                               
1847 
1848     private void SearchStudentsTFMouseReleased(java.awt.event.MouseEvent evt) {                                               
1849         // TODO add your handling code here:
1850         SearchStudentsTF.setText("");
1851     }                                              
1852 
1853     private void SearchStudentsTFKeyReleased(java.awt.event.KeyEvent evt) {                                             
1854         // TODO add your handling code here:
1855         if(evt.getKeyChar() == '\n'){
1856             SortingAndSearching searchForStudent = new SortingAndSearching();
1857             String searchBar = SearchStudentsTF.getText().trim();
1858             int found = searchForStudent.binarySearchStudentName(students, searchBar);
1859             if(found == -1){
1860                 SearchStudentsTF.setText("Element Not Found");
1861             }
1862             else{
1863                 makeListEmpty(ListOfStudentsT);
1864                 ListOfStudentsT.setValueAt(students.get(found).getName(), 0, 0);
1865                 ListOfStudentsT.setValueAt(students.get(found).getEmail(), 0, 1);
1866                 ListOfStudentsT.setValueAt(students.get(found).getLocation(), 0, 2);
1867                 ListOfStudentsT.setValueAt(students.get(found).getPhoneNumber(), 0, 3);
1868                 ListOfStudentsT.setValueAt(students.get(found).getPhoneNumber(), 0, 4);
1869                 ListOfStudentsT.setValueAt(students.get(found).getNotes(), 0, 5);
1870             }
1871        }
1872     }                                            
1873 
1874     private void SongNameTFMouseReleased(java.awt.event.MouseEvent evt) {                                         
1875         // TODO add your handling code here:
1876         SongNameTF.setText("");
1877         SongNameTF.setForeground(Color.BLACK);
1878     }                                        
1879 
1880     private void MovieNameTFMouseReleased(java.awt.event.MouseEvent evt) {                                          
1881         // TODO add your handling code here:
1882         MovieNameTF.setText("");
1883         MovieNameTF.setForeground(Color.BLACK);
1884     }                                         
1885 
1886     private void SongBPMTFMouseReleased(java.awt.event.MouseEvent evt) {                                        
1887         // TODO add your handling code here:
1888         SongBPMTF.setText("");
1889         SongBPMTF.setForeground(Color.BLACK);
1890     }                                       
1891 
1892     private void EmailExtractionBMouseReleased(java.awt.event.MouseEvent evt) {                                               
1893         // TODO add your handling code here:
1894         Thread seleniumMethod = new Thread(() -> {
1895             EmailAutomation.setProperty();
1896             EmailList.clearSelection();
1897             try {
1898                 EmailAutomation.ExtractEmails(SignUpSheetLinkTF.getText(), ClassDateCB.getSelectedItem().toString(), SurveyEmailTF.getText(), SurveyPasswordTF.getText());
1899             } catch (InterruptedException ex) {
1900                 ex.printStackTrace();
1901             }
1902             EmailList.setModel(EmailAutomation.emails);
1903         });
1904         seleniumMethod.start();
1905         
1906     }                                              
1907 
1908     private void SendEmailButtonMouseReleased(java.awt.event.MouseEvent evt) {                                              
1909         // TODO add your handling code here:
1910         EmailAutomation.setProperty();
1911         try {
1912             EmailAutomation.sendEmail();
1913         } catch (InterruptedException | AWTException ex) {
1914             ex.printStackTrace();
1915         }
1916     }                                             
1917 
1918     private void InputSongOKButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                  
1919         // TODO add your handling code here:
1920     }                                                 
1921 
1922     private void InputClassButtonMouseReleased(java.awt.event.MouseEvent evt) {                                               
1923         // TODO add your handling code here:
1924         if(correctClassInfo()){
1925             classes.add(new BollywoodClass(ClassNameTF.getText(), ClassLocationTF.getText(), getMonthAndDay(ClassDateChooser.getDate()), ClassSongCB.getSelectedItem().toString(), inPersonOrZoom()));
1926             refreshClassTable();
1927         }
1928         String [] classDateArray = new String[classes.size()];
1929         for(int i = 0; i < classDateArray.length; i++){
1930             classDateArray[i] = classes.get(i).getClassDate();
1931         }
1932         ClassDateCB.setModel(new javax.swing.DefaultComboBoxModel(classDateArray));
1933     }                                              
1934 
1935     private void ClassNameTFMouseReleased(java.awt.event.MouseEvent evt) {                                          
1936         // TODO add your handling code here:
1937         ClassNameTF.setText("");
1938         ClassNameTF.setForeground(Color.BLACK);
1939     }                                         
1940 
1941     private void ClassLocationTFMouseReleased(java.awt.event.MouseEvent evt) {                                              
1942         // TODO add your handling code here:
1943         ClassLocationTF.setText("");
1944         ClassLocationTF.setForeground(Color.BLACK);
1945     }                                             
1946 
1947     private void ClassDateChooserMouseReleased(java.awt.event.MouseEvent evt) {                                               
1948         // TODO add your handling code here:
1949         ClassNameTF.setVisible(true);
1950         ClassLocationTF.setVisible(true);
1951         ClassSongCB.setVisible(true);
1952         InPersonCB.setVisible(true);
1953         ZoomCB.setVisible(true);
1954     }                                              
1955 
1956     private void RefreshButtonMouseReleased(java.awt.event.MouseEvent evt) {                                            
1957         // TODO add your handling code here:
1958         StudentNameTF.setText("Insert Student Name");
1959         StudentNameTF.setForeground(Color.gray);
1960         StudentEmailTF.setText("Insert Student Email");
1961         StudentEmailTF.setForeground(Color.gray);
1962         StudentLocationTF.setText("Insert Student Location");
1963         StudentLocationTF.setForeground(Color.gray);
1964         StudentPhoneNumberTF.setText("Insert Phone Number");
1965         StudentPhoneNumberTF.setForeground(Color.gray);
1966         StudentTimeZoneTF.setText("Insert Time Zone (GMT)");
1967         StudentTimeZoneTF.setForeground(Color.gray);
1968         StudentAdditionalNotesTF.setText("Insert Additional Notes");
1969         StudentAdditionalNotesTF.setForeground(Color.gray);
1970         SongNameTF.setText("Insert Song Name");
1971         SongNameTF.setForeground(Color.gray);
1972         MovieNameTF.setText("Insert Movie Name (year)");
1973         MovieNameTF.setForeground(Color.gray);
1974         SongBPMTF.setText("Insert Song BPM");
1975         SongBPMTF.setForeground(Color.gray);
1976     }                                           
1977 
1978     private void AddSongToStudentButtonMouseReleased(java.awt.event.MouseEvent evt) {                                                     
1979         // TODO add your handling code here:
1980         
1981         //NEED TO FIX so that when the button is clicked...
1982         //1. The song that is selected gets a student added to it.
1983         //Make sure it checks for no song selection
1984         for(int i = 0; i  < students.size();i++){
1985             if(students.get(i).getName().equals(AddSongToStudentCB.getSelectedItem().toString())){
1986                 if(ListOfSongsT.getSelectedRow() == -1){
1987                     JOptionPane.showMessageDialog(this, "You must select a song to add to the students repertoire, up in the list of songs", "Error Message", HEIGHT);
1988                 }
1989                 else{
1990                     int s = ListOfSongsT.getSelectedRow();
1991                     System.out.println(s);
1992                     songs.get(s).addCompletedStudents(students.get(i), s);
1993                     for(int j = 0; j < songs.get(s).getCompletedStudents().size();j++)
1994                         System.out.println(songs.get(s).getCompletedStudents().get(j).getName());
1995                     //Song.song.addCompletedStudents(students.get(i));
1996                     //Student [] songForStudentArray = new Student[Song.song.getCompletedStudents().size()];
1997                     //for(int j = 0; j < songForStudentArray.length; j++){
1998                         //songForStudentArray[j] = students.get(j);
1999                     //}
2000                     //SongsForStudentsCB.setModel(new javax.swing.DefaultComboBoxModel(songForStudentArray));
2001                 }
2002             }
2003         }
2004     }                                                    
2005 
2006     private void SongsForStudentsCBItemStateChanged(java.awt.event.ItemEvent evt) {                                                    
2007         // TODO add your handling code here:
2008         makeListEmpty(ListOfStudentsT);
2009         for(int i = 0; i  < songs.size(); i++){
2010             if(SongsForStudentsCB.getSelectedItem().toString().equals(songs.get(i).getSongName())){
2011                 for(int j = 0; j < songs.get(i).getCompletedStudents().size(); j++){
2012                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getName(), j, 0);
2013                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getEmail(), j, 1);
2014                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getLocation(), j, 2);
2015                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getPhoneNumber(), j, 3);
2016                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getPhoneNumber(), j, 4);
2017                     ListOfStudentsT.setValueAt(songs.get(i).getCompletedStudents().get(j).getNotes(), j, 5);
2018                 }
2019             }
2020         }
2021     }                                                   
2022 
2023     private void InputStudentOKButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                     
2024         // TODO add your handling code here:
2025     }                                                    
2026 
2027     private void ListOfStudentsTMouseReleased(java.awt.event.MouseEvent evt) {                                              
2028         // TODO add your handling code here:
2029         int index = ListOfStudentsT.getSelectedRow();
2030         if (index == -1) {
2031             RemoveButton.setVisible(false);
2032             ConfirmRemoveCB.setVisible(false);
2033         }
2034         else{
2035             RemoveButton.setVisible(true);
2036             ConfirmRemoveCB.setVisible(true);
2037         }
2038     }                                             
2039 
2040     private void RemoveButtonMouseReleased(java.awt.event.MouseEvent evt) {                                           
2041         // TODO add your handling code here:
2042         if(ListOfStudentsT.getSelectedRow() == -1 && ListOfSongsT.getSelectedRow() == -1){
2043             JOptionPane.showMessageDialog(this, "Please select a row before clicking the remove button", "Error Message", HEIGHT);
2044         }
2045         else{
2046             if(ListOfInformationTP.getSelectedIndex() == 0){
2047                 if(ConfirmRemoveCB.isSelected()){
2048                     students.remove(ListOfStudentsT.getSelectedRow());
2049                     makeListEmpty(ListOfStudentsT);
2050                     refreshStudentTable();
2051                     RemoveButton.setVisible(false);
2052                     ConfirmRemoveCB.setVisible(false);
2053                 }
2054                 else{
2055                     JOptionPane.showMessageDialog(this, "Please click the confirm button before removing an element from the table", "Error Message", HEIGHT);
2056                 }
2057             }
2058             else{
2059                 if(ConfirmRemoveCB.isSelected()){
2060                     songs.remove(ListOfSongsT.getSelectedRow());
2061                     makeListEmpty(ListOfSongsT);
2062                     refreshSongTable();
2063                 }
2064                 else{
2065                     JOptionPane.showMessageDialog(this, "Please click the confirm button before removing an element from the table", "Error Message", HEIGHT);
2066                 }
2067             }
2068         }
2069     }                                          
2070 
2071     private void EmailExtractionBActionPerformed(java.awt.event.ActionEvent evt) {                                                 
2072         // TODO add your handling code here:
2073     }                                                
2074 
2075     private void SearchSongsTFKeyReleased(java.awt.event.KeyEvent evt) {                                          
2076         // TODO add your handling code here:
2077         if(evt.getKeyChar() == '\n'){
2078             SortingAndSearching searchForSong = new SortingAndSearching();
2079             String searchBar = SearchSongsTF.getText();
2080             int found = searchForSong.binarySearchSongName(songs, searchBar);
2081             if(found == -1){
2082                 SearchSongsTF.setText("Element Not Found");
2083             }
2084             else{
2085                 makeListEmpty(ListOfStudentsT);
2086                 ListOfSongsT.setValueAt(songs.get(found).getSongName(), 0, 0);
2087                 ListOfSongsT.setValueAt(songs.get(found).getMovieName(), 0, 1);
2088                 ListOfSongsT.setValueAt(songs.get(found).getSongBPM(), 0, 2);
2089                 ListOfSongsT.setValueAt(songs.get(found).getDateOfPerformance(), 0, 3);
2090             }
2091        }
2092     }                                         
2093 
2094     private int j = 0;
2095     
2096     private void CreateOrChooseExisitingTBItemStateChanged(java.awt.event.ItemEvent evt) {                                                           
2097         // TODO add your handling code here:
2098         if(CreateOrChooseExisitingTB.isSelected()){
2099             NumberOfStudentsSpinner.setValue(Integer.valueOf(0)); //how to set the text in the spinner to 0
2100             ((DefaultEditor) NumberOfStudentsSpinner.getEditor()).getTextField().setText("0");
2101             System.out.println("Formation Size: "+formations.size());
2102             //need an action listener for if the uparrow is clickced tthen it will find the next biggest formation to display.
2103             j=0;
2104             prevButton.setVisible(false);
2105             if((Integer) NumberOfStudentsSpinner.getValue() == 0 && !formations.isEmpty()){//needs to change causenow the spinner wont be 0
2106                 addGrids(j);
2107                 AllLabel.setVisible(true);
2108                 FormationsLabel.setVisible(false);
2109                 danceFormationSaveButton.setVisible(false);
2110                 NumberOfStudentsLabel.setVisible(true);
2111                 NumberOfStudentsSpinner.setVisible(true);
2112                 nextButton.setVisible(false);
2113             }
2114             else{
2115                 JOptionPane.showMessageDialog(this, "There are no formations to be displayed. Please create a new formation first", "Error Message", HEIGHT);
2116                 CreateOrChooseExisitingTB.setSelected(false);
2117                 AllLabel.setVisible(false);
2118             }
2119             if(formations.size()-1>j){
2120                 nextButton.setVisible(true);
2121             }
2122             /*if the spinner is 0 then just add the first grid
2123             if its not 0 then search for which formations have that size in the spinner
2124             */
2125             //initiateFormationsPanel(); //- not necessary since right now using grid panel thus dont need a whole new panel
2126         }
2127         else{
2128             FormationsLabel.setVisible(true);
2129             GridPanel.setVisible(true);
2130             AllLabel.setVisible(false);
2131             createdGridAlready = 0;
2132             createGrid();
2133             danceFormationSaveButton.setVisible(true);
2134             NumberOfStudentsLabel.setVisible(false);
2135             NumberOfStudentsSpinner.setVisible(false);
2136             prevButton.setVisible(false);
2137             nextButton.setVisible(false);
2138         }
2139     }                                                          
2140 
2141     
2142     private void danceFormationSaveButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                         
2143         // TODO add your handling code here:
2144         formations.add(new LinkedList<String>(selectedGridButtonList));
2145         selectedGridButtonList.clear();
2146         while(GridPanel.getComponentCount()!=0)
2147             GridPanel.remove(0);
2148         createdGridAlready = 0;
2149         addButtons(GridPanel);
2150         JOptionPane.showMessageDialog(this, "You have sucessfully created and saved a new dance formation!", "Success Message", HEIGHT);
2151         
2152         /*for(int row =0; row < 28; row++){
2153             for(int col = 0; row < 28; row++){
2154                 
2155                 if(jtogglegrid[row][col].isSelected()){
2156                     numOfStudentsGrid++;
2157                     System.out.println(numOfStudentsGrid);
2158                     jtogglegrid[row][col].setSelected(false);
2159                 }
2160             }//DOESNT WORK BECAUSE THE BUTTON ON THE GRID PANEL IS SELECTED, NOT THE ONE IN THE  ARRAY
2161         }
2162         //possibly need a checker for no students selected
2163         formations.add(new Formation(numOfStudentsGrid, jtogglegrid, gridLayout));
2164         numOfStudentsGrid = 0;
2165         //Need to make an array/linked list for grids - as well as class grid 
2166         //for loop through allthe buttons and see which ones  are selected.*/
2167     }                                                        
2168 
2169 
2170 int test;
2171     private void InputKeyReleased(java.awt.event.KeyEvent evt) {                                  
2172         // TODO add your handling code here:
2173     }                                 
2174 
2175     private void NumberOfStudentsSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {                                                     
2176         // TODO add your handling code here:
2177         j = 0;
2178         /*if(evt.equals(Keys.UP)){
2179             for(int i = 0; i < formations.size(); i++){
2180                 if(formations.get(i).size() > (Integer)NumberOfStudentsSpinner.getValue()){
2181                     ((DefaultEditor) NumberOfStudentsSpinner.getEditor()).getTextField().setText(String.valueOf(formations.get(i).size()));
2182                     NumberOfStudentsSpinner.setValue(Integer.valueOf(String.valueOf(formations.get(i).size())));
2183                 }else if(formations.get(i).size() > (Integer)NumberOfStudentsSpinner.getValue()){
2184                     ((DefaultEditor) NumberOfStudentsSpinner.getEditor()).getTextField().setText(String.valueOf(formations.get(i).size()));
2185                     NumberOfStudentsSpinner.setValue(Integer.valueOf(String.valueOf(formations.get(i).size())));
2186                 }
2187             }
2188         } right now if its a big jump in number of students in one formation  then another then u need to clicck it multiple tims for the formations to show*/
2189         found.clear();
2190         for(int i = 0; i < formations.size(); i++){
2191             if(formations.get(i).size() == (Integer) NumberOfStudentsSpinner.getValue()){
2192                 //add fiormations to panel
2193                 System.out.println("Found formation at:" + i);
2194                 found.add(i); // Stores the index of where the spinner is the same value as the number of values in the linked list in formations
2195             }
2196         }
2197         if(found.size() >1){
2198             nextButton.setVisible(true);
2199         }
2200         else{
2201             nextButton.setVisible(false);
2202         }
2203         if((Integer) NumberOfStudentsSpinner.getValue() > 0 ){
2204             AllLabel.setVisible(false);
2205         }
2206         addGrids(found.get(0));
2207     }                                                    
2208 
2209     private void nextButtonKeyReleased(java.awt.event.KeyEvent evt) {                                       
2210         // TODO add your handling code here:
2211         
2212     }                                      
2213 
2214     private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
2215         // TODO add your handling code here:
2216         
2217         if((Integer) NumberOfStudentsSpinner.getValue() == 0){
2218             nextButton.setVisible(false);
2219             j += 1;
2220             addGrids(j);
2221             prevButton.setVisible(true);
2222             if(formations.size()-1>j){
2223                 nextButton.setVisible(true);
2224             }
2225             AllLabel.setVisible(true);
2226         }
2227         else{
2228             AllLabel.setVisible(false);
2229             nextButton.setVisible(false);
2230             j+=1;
2231             addGrids(found.get(j));
2232             prevButton.setVisible(true);
2233             if(found.size()-1>j){
2234                 nextButton.setVisible(true);
2235             }
2236         }
2237         NumberOfStudentsSpinner.setVisible(false);
2238         NumberOfStudentsLabel.setVisible(false);
2239     }                                          
2240 
2241     private void prevButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
2242         // TODO add your handling code here:
2243         
2244         if((Integer) NumberOfStudentsSpinner.getValue() == 0){
2245             j -= 1;
2246             addGrids(j);
2247             nextButton.setVisible(true);
2248             prevButton.setVisible(false);
2249             if(j>0){
2250                 prevButton.setVisible(true);
2251             }
2252             AllLabel.setVisible(true);
2253         }
2254         else{
2255             j -= 1;
2256             addGrids(found.get(j));
2257             nextButton.setVisible(true);
2258             prevButton.setVisible(false);
2259             if(j>0){
2260                 prevButton.setVisible(true);
2261             }
2262             AllLabel.setVisible(false);
2263         }
2264         
2265         if(prevButton.isVisible()){
2266             NumberOfStudentsSpinner.setVisible(false);
2267             NumberOfStudentsLabel.setVisible(false);
2268         }
2269         else{
2270             NumberOfStudentsSpinner.setVisible(true);
2271             NumberOfStudentsLabel.setVisible(true);
2272         }
2273     }                                          
2274 
2275     private void NumberOfStudentsSpinnerKeyTyped(java.awt.event.KeyEvent evt) {                                                 
2276         // TODO add your handling code here:
2277         if(evt.equals(Keys.ENTER)){
2278             j = 0;
2279             found.clear();
2280             for(int i = 0; i < formations.size(); i++){
2281                 if(formations.get(i).size() == (Integer) NumberOfStudentsSpinner.getValue()){
2282                     //add fiormations to panel
2283                     System.out.println("Found formation at:" + i);
2284                     found.add(i); // Stores the index of where the spinner is the same value as the number of values in the linked list in formations
2285                 }
2286             }
2287             if(found.size() >1){
2288             nextButton.setVisible(true);
2289             }
2290             else{
2291                 nextButton.setVisible(false);
2292             }
2293             addGrids(found.get(j));
2294         }
2295     }                                                
2296 
2297     private void SurveyEmailTFActionPerformed(java.awt.event.ActionEvent evt) {                                              
2298         // TODO add your handling code here:
2299     }                                             
2300 
2301     private void AddHighlightedEmailsButtonMouseReleased(java.awt.event.MouseEvent evt) {                                                         
2302         // TODO add your handling code here:
2303         if(ListOfExistingStudentsT.getSelectedRow() == -1){
2304             JOptionPane.showMessageDialog(this, "Please select a row to add the respective student email", "Error Message", HEIGHT);
2305         }
2306         else{
2307             EmailAutomation.emails.addElement(students.get(ListOfExistingStudentsT.getSelectedRow()).getEmail());
2308             EmailList.clearSelection();
2309             EmailList.setModel(EmailAutomation.emails);
2310         }
2311     }                                                        
2312 
2313     private void StudentAdditionalNotesTFMouseReleased(java.awt.event.MouseEvent evt) {                                                       
2314         // TODO add your handling code here:
2315         StudentAdditionalNotesTF.setText("");
2316         StudentAdditionalNotesTF.setForeground(Color.BLACK);
2317     }                                                      
2318 
2319     private void SortingStudentsCBActionPerformed(java.awt.event.ActionEvent evt) {                                                  
2320         // TODO add your handling code here:
2321     }                                                 
2322 
2323     private void ListOfInformationTPMouseReleased(java.awt.event.MouseEvent evt) {                                                  
2324         // TODO add your handling code here:
2325         if(ListOfInformationTP.getSelectedIndex() == 0){
2326             jLabel8.setVisible(false);
2327             jLabel10.setVisible(false);
2328             AddSongToStudentCB.setVisible(false);
2329             AddSongToStudentButton.setVisible(false);
2330         }
2331         else{
2332             jLabel8.setVisible(true);
2333             jLabel10.setVisible(true);
2334             AddSongToStudentCB.setVisible(true);
2335             AddSongToStudentButton.setVisible(true);
2336         }
2337     }                                                 
2338 
2339     private void ListOfSongsTMouseReleased(java.awt.event.MouseEvent evt) {                                           
2340         // TODO add your handling code here:
2341         int index = ListOfSongsT.getSelectedRow();
2342         if (index == -1) {
2343             RemoveButton.setVisible(false);
2344             ConfirmRemoveCB.setVisible(false);
2345         }
2346         else{
2347             RemoveButton.setVisible(true);
2348             ConfirmRemoveCB.setVisible(true);
2349         }
2350     }                                          
2351 
2352     private void RefreshButton1MouseReleased(java.awt.event.MouseEvent evt) {                                             
2353         // TODO add your handling code here:
2354         makeListEmpty(ListOfStudentsT);
2355         refreshStudentTable();
2356     }                                            
2357 
2358     private void RefreshButton2MouseReleased(java.awt.event.MouseEvent evt) {                                             
2359         // TODO add your handling code here:
2360         makeListEmpty(ListOfSongsT);
2361         refreshSongTable();
2362     }                                            
2363 
2364     private void ConfirmRemoveCB1ActionPerformed(java.awt.event.ActionEvent evt) {                                                 
2365         // TODO add your handling code here:
2366     }                                                
2367 
2368     private void ListOfClassesTMouseReleased(java.awt.event.MouseEvent evt) {                                             
2369         // TODO add your handling code here:
2370         int index = ListOfClassesT.getSelectedRow();
2371         
2372         if(ListOfClassesT.getSelectedRow() == -1){
2373             RemoveButton1.setVisible(false);
2374             ConfirmRemoveCB1.setVisible(false);
2375         }
2376         else{
2377             RemoveButton1.setVisible(true);
2378             ConfirmRemoveCB1.setVisible(true);
2379         }
2380     }                                            
2381 
2382     private void RemoveButton1KeyReleased(java.awt.event.KeyEvent evt) {                                          
2383         // TODO add your handling code here:
2384     }                                         
2385 
2386     private void RemoveButton1MouseReleased(java.awt.event.MouseEvent evt) {                                            
2387         // TODO add your handling code here:
2388         int index = ListOfClassesT.getSelectedRow();
2389         if(ConfirmRemoveCB1.isSelected() && index != -1){
2390             classes.remove(index);
2391             makeListEmpty(ListOfClassesT);
2392             refreshClassTable();
2393             RemoveButton1.setVisible(false);
2394             ConfirmRemoveCB1.setVisible(false);
2395         }
2396         else if(index == -1 && ConfirmRemoveCB1.isSelected()){
2397             JOptionPane.showMessageDialog(this, "Please select a row on the table before pressing the remove button", "Error Message", HEIGHT);
2398         }
2399         else if(!ConfirmRemoveCB1.isSelected()){
2400             JOptionPane.showMessageDialog(this, "Please select the confirm check box before removing an item from the table", "Error Message", HEIGHT);
2401         }
2402     }                                           
2403 
2404     private void saveMenuItemMouseReleased(java.awt.event.MouseEvent evt) {                                           
2405         try {
2406             // TODO add your handling code here:
2407             fileWriterAndReaderMainMethod(true);
2408         } catch (IOException ex) {
2409             ex.printStackTrace();
2410         }
2411     }                                          
2412 
2413 
2414     public void addGrids(int foundJ){
2415         while(GridPanel.getComponentCount()!=0){
2416             GridPanel.remove(0);
2417         }
2418         for(int row = 0; row < 15; row++){
2419                 for(int col = 0; col < 15; col++){
2420                     jbuttongrid[row][col] = new JButton();
2421                     jbuttongrid[row][col].setPreferredSize(new Dimension(40,40));
2422                     jbuttongrid[row][col].setMaximumSize(new Dimension(40,40));
2423                     jbuttongrid[row][col].setMinimumSize(new Dimension(40,40));
2424                     jbuttongrid[row][col].setVisible(false);
2425                     //jbuttongrid[row][col].setContentAreaFilled(false);
2426                     for(int loop = 0; loop < formations.get(foundJ).size(); loop++){
2427                         if(formations.get(foundJ).get(loop).toString().length() == 5 && Integer.parseInt(String.valueOf(formations.get(foundJ).get(loop).toString().substring(0, 2))) == (row)){
2428                             if(Integer.parseInt(String.valueOf(formations.get(foundJ).get(loop).toString().substring(3,5)))==(col)){
2429                                 jbuttongrid[row][col].setVisible(true);
2430                             }
2431                         }
2432                         if(formations.get(foundJ).get(loop).toString().length() == 4 && formations.get(foundJ).get(loop).toString().charAt(2) == ','){
2433                             if(Integer.parseInt(String.valueOf(formations.get(foundJ).get(loop).toString().substring(0,2))) == (row) && Character.getNumericValue(formations.get(foundJ).get(loop).toString().charAt(3))==(col)){
2434                                 jbuttongrid[row][col].setVisible(true);
2435                             }   
2436                         }
2437                         if(formations.get(foundJ).get(loop).toString().length() == 4 && formations.get(foundJ).get(loop).toString().charAt(1) == ','){
2438                             if(Character.getNumericValue(formations.get(foundJ).get(loop).toString().charAt(0)) == (row) && Integer.parseInt(String.valueOf(formations.get(foundJ).get(loop).toString().substring(2))) == (col)){
2439                                 jbuttongrid[row][col].setVisible(true);
2440                             }
2441                         }
2442                         if(formations.get(foundJ).get(loop).toString().length() == 3 && Character.getNumericValue(formations.get(foundJ).get(loop).toString().charAt(0)) == (row)){
2443                             if(Character.getNumericValue(formations.get(foundJ).get(loop).toString().charAt(2)) == col){
2444                                 jbuttongrid[row][col].setVisible(true);
2445                                 
2446                             }
2447                         }
2448                     }
2449                 GridPanel.add(jbuttongrid[row][col]);
2450             }
2451         }
2452         Input.setSelectedIndex(0);
2453         Input.setSelectedIndex(3);
2454     }
2455     
2456     /**
2457      * @param args the command line arguments
2458      */
2459     public static void main(String args[]) throws ClassNotFoundException, InstantiationException {
2460         try {
2461             /* Set the Nimbus look and feel */
2462             //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
2463             /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
2464             * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
2465             */
2466             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
2467             //</editor-fold>
2468 
2469             /* Create and display the form */
2470         } catch (IllegalAccessException ex) {
2471             Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
2472         } catch (UnsupportedLookAndFeelException ex) {
2473             Logger.getLogger(MainGUI.class.getName()).log(Level.SEVERE, null, ex);
2474         }
2475        
2476         
2477         java.awt.EventQueue.invokeLater(new Runnable() {
2478             public void run() {
2479                 mainGUI.setVisible(true);
2480             }
2481         });
2482     }




Netbeans auto-generated GUI code:



614     @SuppressWarnings("unchecked")
 615     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
 616     private void initComponents() {
 617 
 618         ErrorPopup = new javax.swing.JPopupMenu();
 619         jLabel11 = new javax.swing.JLabel();
 620         Input = new javax.swing.JTabbedPane();
 621         jPanel1 = new javax.swing.JPanel();
 622         InputStudentOKButton = new javax.swing.JButton();
 623         StudentNameTF = new javax.swing.JTextField();
 624         StudentEmailTF = new javax.swing.JTextField();
 625         StudentLocationTF = new javax.swing.JTextField();
 626         jLabel1 = new javax.swing.JLabel();
 627         jLabel2 = new javax.swing.JLabel();
 628         SongNameTF = new javax.swing.JTextField();
 629         jTabbedPane1 = new javax.swing.JTabbedPane();
 630         ListOfInformationTP = new javax.swing.JTabbedPane();
 631         jPanel5 = new javax.swing.JPanel();
 632         jScrollPane1 = new javax.swing.JScrollPane();
 633         ListOfStudentsT = new javax.swing.JTable();
 634         SearchStudentsTF = new javax.swing.JTextField();
 635         SortingStudentsCB = new javax.swing.JComboBox<>();
 636         SongsForStudentsCB = new javax.swing.JComboBox<>();
 637         RefreshButton1 = new javax.swing.JButton();
 638         jPanel4 = new javax.swing.JPanel();
 639         jScrollPane2 = new javax.swing.JScrollPane();
 640         ListOfSongsT = new javax.swing.JTable();
 641         SearchSongsTF = new javax.swing.JTextField();
 642         SortingSongsCB = new javax.swing.JComboBox<>();
 643         RefreshButton2 = new javax.swing.JButton();
 644         InputSongOKButton = new javax.swing.JButton();
 645         DateOfPerformanceChooser = new com.toedter.calendar.JDateChooser();
 646         MovieNameTF = new javax.swing.JTextField();
 647         StudentTimeZoneTF = new javax.swing.JTextField();
 648         StudentPhoneNumberTF = new javax.swing.JTextField();
 649         SongBPMTF = new javax.swing.JTextField();
 650         AddSongToStudentCB = new javax.swing.JComboBox<>();
 651         AddSongToStudentButton = new javax.swing.JButton();
 652         RefreshButton = new javax.swing.JButton();
 653         jLabel8 = new javax.swing.JLabel();
 654         jLabel10 = new javax.swing.JLabel();
 655         ConfirmRemoveCB = new javax.swing.JCheckBox();
 656         RemoveButton = new javax.swing.JButton();
 657         jScrollPane7 = new javax.swing.JScrollPane();
 658         StudentAdditionalNotesTF = new javax.swing.JTextArea();
 659         jPanel2 = new javax.swing.JPanel();
 660         jScrollPane3 = new javax.swing.JScrollPane();
 661         ListOfClassesT = new javax.swing.JTable();
 662         jLabel3 = new javax.swing.JLabel();
 663         InputClassButton = new javax.swing.JButton();
 664         ClassNameTF = new javax.swing.JTextField();
 665         ZoomCB = new javax.swing.JCheckBox();
 666         InPersonCB = new javax.swing.JCheckBox();
 667         ClassSongCB = new javax.swing.JComboBox<>();
 668         ClassLocationTF = new javax.swing.JTextField();
 669         jLabel4 = new javax.swing.JLabel();
 670         jLabel5 = new javax.swing.JLabel();
 671         ClassDateChooser = new com.toedter.calendar.JDateChooser();
 672         RemoveButton1 = new javax.swing.JButton();
 673         ConfirmRemoveCB1 = new javax.swing.JCheckBox();
 674         jPanel6 = new javax.swing.JPanel();
 675         EmailExtractionB = new javax.swing.JButton();
 676         jScrollPane4 = new javax.swing.JScrollPane();
 677         EmailList = new javax.swing.JList<>();
 678         SendEmailButton = new javax.swing.JButton();
 679         jLabel9 = new javax.swing.JLabel();
 680         jScrollPane5 = new javax.swing.JScrollPane();
 681         ListOfExistingStudentsT = new javax.swing.JTable();
 682         AddHighlightedEmailsButton = new javax.swing.JButton();
 683         ExtractionProgressBar = new javax.swing.JProgressBar();
 684         ClassDateCB = new javax.swing.JComboBox<>();
 685         jLabel7 = new javax.swing.JLabel();
 686         SurveyEmailTF = new javax.swing.JTextField();
 687         SurveyPasswordTF = new javax.swing.JTextField();
 688         jLabel6 = new javax.swing.JLabel();
 689         jScrollPane6 = new javax.swing.JScrollPane();
 690         SignUpSheetLinkTF = new javax.swing.JTextArea();
 691         random = new javax.swing.JPanel();
 692         NumberOfStudentsSpinner = new javax.swing.JSpinner();
 693         CreateOrChooseExisitingTB = new javax.swing.JToggleButton();
 694         NumberOfStudentsLabel = new javax.swing.JLabel();
 695         GridPanel = new javax.swing.JPanel();
 696         danceFormationSaveButton = new javax.swing.JButton();
 697         prevButton = new javax.swing.JButton();
 698         nextButton = new javax.swing.JButton();
 699         AllLabel = new javax.swing.JLabel();
 700         FormationsLabel = new javax.swing.JLabel();
 701         menuBar = new javax.swing.JMenuBar();
 702         fileMenu = new javax.swing.JMenu();
 703         openMenuItem = new javax.swing.JMenuItem();
 704         saveMenuItem = new javax.swing.JMenuItem();
 705         saveAsMenuItem = new javax.swing.JMenuItem();
 706         exitMenuItem = new javax.swing.JMenuItem();
 707         editMenu = new javax.swing.JMenu();
 708         cutMenuItem = new javax.swing.JMenuItem();
 709         copyMenuItem = new javax.swing.JMenuItem();
 710         pasteMenuItem = new javax.swing.JMenuItem();
 711         deleteMenuItem = new javax.swing.JMenuItem();
 712         helpMenu = new javax.swing.JMenu();
 713         contentsMenuItem = new javax.swing.JMenuItem();
 714         aboutMenuItem = new javax.swing.JMenuItem();
 715 
 716         jLabel11.setText("jLabel11");
 717 
 718         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 719 
 720         Input.addKeyListener(new java.awt.event.KeyAdapter() {
 721             public void keyReleased(java.awt.event.KeyEvent evt) {
 722                 InputKeyReleased(evt);
 723             }
 724         });
 725 
 726         jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
 727 
 728         InputStudentOKButton.setBackground(new java.awt.Color(255, 255, 255));
 729         InputStudentOKButton.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
 730         InputStudentOKButton.setForeground(new java.awt.Color(102, 102, 255));
 731         InputStudentOKButton.setText("OK");
 732         InputStudentOKButton.addMouseListener(new java.awt.event.MouseAdapter() {
 733             public void mouseReleased(java.awt.event.MouseEvent evt) {
 734                 InputStudentOKButtonMouseReleased(evt);
 735             }
 736         });
 737         InputStudentOKButton.addActionListener(new java.awt.event.ActionListener() {
 738             public void actionPerformed(java.awt.event.ActionEvent evt) {
 739                 InputStudentOKButtonActionPerformed(evt);
 740             }
 741         });
 742         jPanel1.add(InputStudentOKButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 222, -1, -1));
 743 
 744         StudentNameTF.setColumns(5);
 745         StudentNameTF.setForeground(new java.awt.Color(204, 204, 204));
 746         StudentNameTF.setText("Insert Student Name");
 747         StudentNameTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
 748         StudentNameTF.addMouseListener(new java.awt.event.MouseAdapter() {
 749             public void mouseReleased(java.awt.event.MouseEvent evt) {
 750                 StudentNameTFMouseReleased(evt);
 751             }
 752         });
 753         StudentNameTF.addActionListener(new java.awt.event.ActionListener() {
 754             public void actionPerformed(java.awt.event.ActionEvent evt) {
 755                 StudentNameTFActionPerformed(evt);
 756             }
 757         });
 758         jPanel1.add(StudentNameTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(26, 44, 211, 36));
 759 
 760         StudentEmailTF.setForeground(new java.awt.Color(204, 204, 204));
 761         StudentEmailTF.setText("Insert Student Email");
 762         StudentEmailTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
 763         StudentEmailTF.addMouseListener(new java.awt.event.MouseAdapter() {
 764             public void mouseReleased(java.awt.event.MouseEvent evt) {
 765                 StudentEmailTFMouseReleased(evt);
 766             }
 767         });
 768         StudentEmailTF.addActionListener(new java.awt.event.ActionListener() {
 769             public void actionPerformed(java.awt.event.ActionEvent evt) {
 770                 StudentEmailTFActionPerformed(evt);
 771             }
 772         });
 773         jPanel1.add(StudentEmailTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(26, 89, 211, 35));
 774 
 775         StudentLocationTF.setForeground(new java.awt.Color(204, 204, 204));
 776         StudentLocationTF.setText("Insert Student Location");
 777         StudentLocationTF.setMaximumSize(new java.awt.Dimension(157, 26));
 778         StudentLocationTF.setMinimumSize(new java.awt.Dimension(157, 26));
 779         StudentLocationTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
 780         StudentLocationTF.addMouseListener(new java.awt.event.MouseAdapter() {
 781             public void mouseReleased(java.awt.event.MouseEvent evt) {
 782                 StudentLocationTFMouseReleased(evt);
 783             }
 784         });
 785         StudentLocationTF.addActionListener(new java.awt.event.ActionListener() {
 786             public void actionPerformed(java.awt.event.ActionEvent evt) {
 787                 StudentLocationTFActionPerformed(evt);
 788             }
 789         });
 790         jPanel1.add(StudentLocationTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(26, 134, 211, 34));
 791 
 792         jLabel1.setFont(new java.awt.Font("Lucida Grande", 2, 18)); // NOI18N
 793         jLabel1.setText("Input New Student Information");
 794         jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(125, 22, -1, -1));
 795 
 796         jLabel2.setFont(new java.awt.Font("Lucida Grande", 2, 18)); // NOI18N
 797         jLabel2.setText("Input Song Information");
 798         jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(546, 23, -1, -1));
 799 
 800         SongNameTF.setForeground(new java.awt.Color(204, 204, 204));
 801         SongNameTF.setText("Insert Song Name");
 802         SongNameTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
 803         SongNameTF.addMouseListener(new java.awt.event.MouseAdapter() {
 804             public void mouseReleased(java.awt.event.MouseEvent evt) {
 805                 SongNameTFMouseReleased(evt);
 806             }
 807         });
 808         SongNameTF.addActionListener(new java.awt.event.ActionListener() {
 809             public void actionPerformed(java.awt.event.ActionEvent evt) {
 810                 SongNameTFActionPerformed(evt);
 811             }
 812         });
 813         jPanel1.add(SongNameTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(528, 45, 238, 37));
 814         jPanel1.add(jTabbedPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(803, 552, 232, -1));
 815 
 816         ListOfInformationTP.addMouseListener(new java.awt.event.MouseAdapter() {
 817             public void mouseReleased(java.awt.event.MouseEvent evt) {
 818                 ListOfInformationTPMouseReleased(evt);
 819             }
 820         });
 821 
 822         ListOfStudentsT.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N
 823         ListOfStudentsT.setModel(new javax.swing.table.DefaultTableModel(
 824             new Object [][] {
 825 
 826             },
 827             new String [] {
 828                 "Name", "Email", "Location", "Phone Number", "Time Zone (GMT)", "Notes"
 829             }
 830         ) {
 831             Class[] types = new Class [] {
 832                 java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.class, java.lang.String.class, java.lang.String.class
 833             };
 834 
 835             public Class getColumnClass(int columnIndex) {
 836                 return types [columnIndex];
 837             }
 838         });
 839         ListOfStudentsT.setGridColor(new java.awt.Color(153, 153, 153));
 840         ListOfStudentsT.setRowHeight(20);
 841         ListOfStudentsT.setShowGrid(true);
 842         ListOfStudentsT.addMouseListener(new java.awt.event.MouseAdapter() {
 843             public void mouseReleased(java.awt.event.MouseEvent evt) {
 844                 ListOfStudentsTMouseReleased(evt);
 845             }
 846         });
 847         jScrollPane1.setViewportView(ListOfStudentsT);
 848 
 849         SearchStudentsTF.setText("Search in List...");
 850         SearchStudentsTF.addMouseListener(new java.awt.event.MouseAdapter() {
 851             public void mouseReleased(java.awt.event.MouseEvent evt) {
 852                 SearchStudentsTFMouseReleased(evt);
 853             }
 854         });
 855         SearchStudentsTF.addKeyListener(new java.awt.event.KeyAdapter() {
 856             public void keyReleased(java.awt.event.KeyEvent evt) {
 857                 SearchStudentsTFKeyReleased(evt);
 858             }
 859         });
 860 
 861         SortingStudentsCB.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Sort By...", "Name A-Z", "Email A-Z", "Location A-Z", "GMT (Descending)" }));
 862         SortingStudentsCB.addItemListener(new java.awt.event.ItemListener() {
 863             public void itemStateChanged(java.awt.event.ItemEvent evt) {
 864                 SortingStudentsCBItemStateChanged(evt);
 865             }
 866         });
 867         SortingStudentsCB.addActionListener(new java.awt.event.ActionListener() {
 868             public void actionPerformed(java.awt.event.ActionEvent evt) {
 869                 SortingStudentsCBActionPerformed(evt);
 870             }
 871         });
 872 
 873         SongsForStudentsCB.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Add Songs..." }));
 874         SongsForStudentsCB.addItemListener(new java.awt.event.ItemListener() {
 875             public void itemStateChanged(java.awt.event.ItemEvent evt) {
 876                 SongsForStudentsCBItemStateChanged(evt);
 877             }
 878         });
 879 
 880         RefreshButton1.setIcon(new javax.swing.ImageIcon("/Users/16939/Desktop/RefreshIcon.png")); // NOI18N
 881         RefreshButton1.addMouseListener(new java.awt.event.MouseAdapter() {
 882             public void mouseReleased(java.awt.event.MouseEvent evt) {
 883                 RefreshButton1MouseReleased(evt);
 884             }
 885         });
 886 
 887         javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
 888         jPanel5.setLayout(jPanel5Layout);
 889         jPanel5Layout.setHorizontalGroup(
 890             jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 891             .addGroup(jPanel5Layout.createSequentialGroup()
 892                 .addContainerGap()
 893                 .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 894                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
 895                         .addComponent(RefreshButton1)
 896                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 897                         .addComponent(SortingStudentsCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 898                         .addGap(81, 81, 81)
 899                         .addComponent(SongsForStudentsCB, javax.swing.GroupLayout.PREFERRED_SIZE, 181, javax.swing.GroupLayout.PREFERRED_SIZE)
 900                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 901                         .addComponent(SearchStudentsTF, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
 902                     .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 764, Short.MAX_VALUE))
 903                 .addContainerGap())
 904         );
 905         jPanel5Layout.setVerticalGroup(
 906             jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 907             .addGroup(jPanel5Layout.createSequentialGroup()
 908                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 909                 .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 910                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 911                         .addComponent(SongsForStudentsCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 912                         .addComponent(SearchStudentsTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 913                         .addComponent(SortingStudentsCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
 914                     .addComponent(RefreshButton1, javax.swing.GroupLayout.Alignment.TRAILING))
 915                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
 916                 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 243, javax.swing.GroupLayout.PREFERRED_SIZE)
 917                 .addContainerGap())
 918         );
 919 
 920         ListOfInformationTP.addTab("List of Students", jPanel5);
 921 
 922         ListOfSongsT.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N
 923         ListOfSongsT.setModel(new javax.swing.table.DefaultTableModel(
 924             new Object [][] {
 925 
 926             },
 927             new String [] {
 928                 "Song Name", "Movie Name (year)", "Song BPM", "Date of Performance"
 929             }
 930         ));
 931         ListOfSongsT.setGridColor(new java.awt.Color(153, 153, 153));
 932         ListOfSongsT.setRowHeight(20);
 933         ListOfSongsT.setShowGrid(true);
 934         ListOfSongsT.addMouseListener(new java.awt.event.MouseAdapter() {
 935             public void mouseReleased(java.awt.event.MouseEvent evt) {
 936                 ListOfSongsTMouseReleased(evt);
 937             }
 938         });
 939         jScrollPane2.setViewportView(ListOfSongsT);
 940         if (ListOfSongsT.getColumnModel().getColumnCount() > 0) {
 941             ListOfSongsT.getColumnModel().getColumn(2).setPreferredWidth(20);
 942             ListOfSongsT.getColumnModel().getColumn(3).setResizable(false);
 943             ListOfSongsT.getColumnModel().getColumn(3).setPreferredWidth(130);
 944         }
 945 
 946         SearchSongsTF.setText("Search in List...");
 947         SearchSongsTF.addKeyListener(new java.awt.event.KeyAdapter() {
 948             public void keyReleased(java.awt.event.KeyEvent evt) {
 949                 SearchSongsTFKeyReleased(evt);
 950             }
 951         });
 952 
 953         SortingSongsCB.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Sort By...", "Song Name A-Z", "Movie Name A-Z", "BPM (ascending)", "BPM (descending)" }));
 954         SortingSongsCB.addItemListener(new java.awt.event.ItemListener() {
 955             public void itemStateChanged(java.awt.event.ItemEvent evt) {
 956                 SortingSongsCBItemStateChanged(evt);
 957             }
 958         });
 959 
 960         RefreshButton2.setIcon(new javax.swing.ImageIcon("/Users/16939/Desktop/RefreshIcon.png")); // NOI18N
 961         RefreshButton2.addMouseListener(new java.awt.event.MouseAdapter() {
 962             public void mouseReleased(java.awt.event.MouseEvent evt) {
 963                 RefreshButton2MouseReleased(evt);
 964             }
 965         });
 966 
 967         javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
 968         jPanel4.setLayout(jPanel4Layout);
 969         jPanel4Layout.setHorizontalGroup(
 970             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 971             .addGroup(jPanel4Layout.createSequentialGroup()
 972                 .addContainerGap()
 973                 .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 974                     .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 770, Short.MAX_VALUE)
 975                     .addGroup(jPanel4Layout.createSequentialGroup()
 976                         .addComponent(RefreshButton2)
 977                         .addGap(3, 3, 3)
 978                         .addComponent(SortingSongsCB, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
 979                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 980                         .addComponent(SearchSongsTF, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
 981                         .addContainerGap())))
 982         );
 983         jPanel4Layout.setVerticalGroup(
 984             jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
 985             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel4Layout.createSequentialGroup()
 986                 .addContainerGap()
 987                 .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
 988                     .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
 989                         .addComponent(SearchSongsTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
 990                         .addComponent(SortingSongsCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
 991                     .addComponent(RefreshButton2))
 992                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
 993                 .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)
 994                 .addContainerGap())
 995         );
 996 
 997         ListOfInformationTP.addTab("List of Songs", jPanel4);
 998 
 999         jPanel1.add(ListOfInformationTP, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 269, -1, -1));
1000 
1001         InputSongOKButton.setBackground(new java.awt.Color(255, 255, 255));
1002         InputSongOKButton.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1003         InputSongOKButton.setForeground(new java.awt.Color(102, 102, 255));
1004         InputSongOKButton.setText("OK");
1005         InputSongOKButton.addMouseListener(new java.awt.event.MouseAdapter() {
1006             public void mouseReleased(java.awt.event.MouseEvent evt) {
1007                 InputSongOKButtonMouseReleased(evt);
1008             }
1009         });
1010         InputSongOKButton.addActionListener(new java.awt.event.ActionListener() {
1011             public void actionPerformed(java.awt.event.ActionEvent evt) {
1012                 InputSongOKButtonActionPerformed(evt);
1013             }
1014         });
1015         jPanel1.add(InputSongOKButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(591, 222, -1, -1));
1016 
1017         DateOfPerformanceChooser.setToolTipText("Choose Date");
1018         jPanel1.add(DateOfPerformanceChooser, new org.netbeans.lib.awtextra.AbsoluteConstraints(529, 173, 238, 37));
1019         DateOfPerformanceChooser.getAccessibleContext().setAccessibleName("");
1020 
1021         MovieNameTF.setForeground(new java.awt.Color(204, 204, 204));
1022         MovieNameTF.setText("Insert Movie Name (year)");
1023         MovieNameTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
1024         MovieNameTF.addMouseListener(new java.awt.event.MouseAdapter() {
1025             public void mouseReleased(java.awt.event.MouseEvent evt) {
1026                 MovieNameTFMouseReleased(evt);
1027             }
1028         });
1029         MovieNameTF.addActionListener(new java.awt.event.ActionListener() {
1030             public void actionPerformed(java.awt.event.ActionEvent evt) {
1031                 MovieNameTFActionPerformed(evt);
1032             }
1033         });
1034         jPanel1.add(MovieNameTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(528, 88, 238, 37));
1035 
1036         StudentTimeZoneTF.setForeground(new java.awt.Color(204, 204, 204));
1037         StudentTimeZoneTF.setText("Insert Time Zone (GMT)");
1038         StudentTimeZoneTF.setMaximumSize(new java.awt.Dimension(157, 26));
1039         StudentTimeZoneTF.setMinimumSize(new java.awt.Dimension(157, 26));
1040         StudentTimeZoneTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
1041         StudentTimeZoneTF.addMouseListener(new java.awt.event.MouseAdapter() {
1042             public void mouseReleased(java.awt.event.MouseEvent evt) {
1043                 StudentTimeZoneTFMouseReleased(evt);
1044             }
1045         });
1046         StudentTimeZoneTF.addActionListener(new java.awt.event.ActionListener() {
1047             public void actionPerformed(java.awt.event.ActionEvent evt) {
1048                 StudentTimeZoneTFActionPerformed(evt);
1049             }
1050         });
1051         jPanel1.add(StudentTimeZoneTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(255, 44, 201, 36));
1052 
1053         StudentPhoneNumberTF.setForeground(new java.awt.Color(204, 204, 204));
1054         StudentPhoneNumberTF.setText("Insert Phone Number");
1055         StudentPhoneNumberTF.setMaximumSize(new java.awt.Dimension(143, 26));
1056         StudentPhoneNumberTF.setMinimumSize(new java.awt.Dimension(143, 26));
1057         StudentPhoneNumberTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
1058         StudentPhoneNumberTF.addMouseListener(new java.awt.event.MouseAdapter() {
1059             public void mouseReleased(java.awt.event.MouseEvent evt) {
1060                 StudentPhoneNumberTFMouseReleased(evt);
1061             }
1062         });
1063         StudentPhoneNumberTF.addActionListener(new java.awt.event.ActionListener() {
1064             public void actionPerformed(java.awt.event.ActionEvent evt) {
1065                 StudentPhoneNumberTFActionPerformed(evt);
1066             }
1067         });
1068         jPanel1.add(StudentPhoneNumberTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(26, 179, 211, 34));
1069 
1070         SongBPMTF.setForeground(new java.awt.Color(204, 204, 204));
1071         SongBPMTF.setText("Insert Song BPM");
1072         SongBPMTF.setSelectedTextColor(new java.awt.Color(204, 204, 204));
1073         SongBPMTF.addMouseListener(new java.awt.event.MouseAdapter() {
1074             public void mouseReleased(java.awt.event.MouseEvent evt) {
1075                 SongBPMTFMouseReleased(evt);
1076             }
1077         });
1078         SongBPMTF.addActionListener(new java.awt.event.ActionListener() {
1079             public void actionPerformed(java.awt.event.ActionEvent evt) {
1080                 SongBPMTFActionPerformed(evt);
1081             }
1082         });
1083         jPanel1.add(SongBPMTF, new org.netbeans.lib.awtextra.AbsoluteConstraints(529, 131, 238, 36));
1084 
1085         AddSongToStudentCB.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Choose Student to Add Song", "Student 1", "Student 2" }));
1086         jPanel1.add(AddSongToStudentCB, new org.netbeans.lib.awtextra.AbsoluteConstraints(561, 617, -1, -1));
1087 
1088         AddSongToStudentButton.setBackground(new java.awt.Color(255, 255, 255));
1089         AddSongToStudentButton.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1090         AddSongToStudentButton.setForeground(new java.awt.Color(102, 102, 255));
1091         AddSongToStudentButton.setText("Add Song");
1092         AddSongToStudentButton.addMouseListener(new java.awt.event.MouseAdapter() {
1093             public void mouseReleased(java.awt.event.MouseEvent evt) {
1094                 AddSongToStudentButtonMouseReleased(evt);
1095             }
1096         });
1097         jPanel1.add(AddSongToStudentButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(561, 651, 116, -1));
1098 
1099         RefreshButton.setIcon(new javax.swing.ImageIcon("/Users/16939/Desktop/RefreshIcon.png")); // NOI18N
1100         RefreshButton.addMouseListener(new java.awt.event.MouseAdapter() {
1101             public void mouseReleased(java.awt.event.MouseEvent evt) {
1102                 RefreshButtonMouseReleased(evt);
1103             }
1104         });
1105         jPanel1.add(RefreshButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(14, 6, -1, -1));
1106 
1107         jLabel8.setText("Select One Song on List and then:");
1108         jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(332, 621, -1, -1));
1109 
1110         jLabel10.setText("Adding Student to Song:");
1111         jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 656, -1, -1));
1112 
1113         ConfirmRemoveCB.setText("Confirm");
1114         jPanel1.add(ConfirmRemoveCB, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 652, -1, -1));
1115 
1116         RemoveButton.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1117         RemoveButton.setText("Remove");
1118         RemoveButton.addMouseListener(new java.awt.event.MouseAdapter() {
1119             public void mouseReleased(java.awt.event.MouseEvent evt) {
1120                 RemoveButtonMouseReleased(evt);
1121             }
1122         });
1123         jPanel1.add(RemoveButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(14, 616, -1, -1));
1124 
1125         StudentAdditionalNotesTF.setColumns(20);
1126         StudentAdditionalNotesTF.setForeground(new java.awt.Color(204, 204, 204));
1127         StudentAdditionalNotesTF.setRows(5);
1128         StudentAdditionalNotesTF.setText("\n\n\nInsert Additional Notes");
1129         StudentAdditionalNotesTF.addMouseListener(new java.awt.event.MouseAdapter() {
1130             public void mouseReleased(java.awt.event.MouseEvent evt) {
1131                 StudentAdditionalNotesTFMouseReleased(evt);
1132             }
1133         });
1134         jScrollPane7.setViewportView(StudentAdditionalNotesTF);
1135 
1136         jPanel1.add(jScrollPane7, new org.netbeans.lib.awtextra.AbsoluteConstraints(255, 89, 201, 124));
1137 
1138         Input.addTab("Inputting Information", jPanel1);
1139 
1140         ListOfClassesT.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N
1141         ListOfClassesT.setModel(new javax.swing.table.DefaultTableModel(
1142             new Object [][] {
1143 
1144             },
1145             new String [] {
1146                 "Class Name", "Class Location", "Class Date", "Class Song", "In-Person/Zoom"
1147             }
1148         ));
1149         ListOfClassesT.setGridColor(new java.awt.Color(153, 153, 153));
1150         ListOfClassesT.setShowGrid(true);
1151         ListOfClassesT.addMouseListener(new java.awt.event.MouseAdapter() {
1152             public void mouseReleased(java.awt.event.MouseEvent evt) {
1153                 ListOfClassesTMouseReleased(evt);
1154             }
1155         });
1156         jScrollPane3.setViewportView(ListOfClassesT);
1157 
1158         jLabel3.setFont(new java.awt.Font("Lucida Grande", 1, 18)); // NOI18N
1159         jLabel3.setText("Up-Coming Classes");
1160 
1161         InputClassButton.setBackground(new java.awt.Color(255, 255, 255));
1162         InputClassButton.setFont(new java.awt.Font("Lucida Grande", 1, 14)); // NOI18N
1163         InputClassButton.setForeground(new java.awt.Color(102, 102, 255));
1164         InputClassButton.setText("OK");
1165         InputClassButton.addMouseListener(new java.awt.event.MouseAdapter() {
1166             public void mouseReleased(java.awt.event.MouseEvent evt) {
1167                 InputClassButtonMouseReleased(evt);
1168             }
1169         });
1170 
1171         ClassNameTF.setForeground(new java.awt.Color(204, 204, 204));
1172         ClassNameTF.setText("  Insert Class Name");
1173         ClassNameTF.addMouseListener(new java.awt.event.MouseAdapter() {
1174             public void mouseReleased(java.awt.event.MouseEvent evt) {
1175                 ClassNameTFMouseReleased(evt);
1176             }
1177         });
1178 
1179         ZoomCB.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1180         ZoomCB.setText("Zoom");
1181 
1182         InPersonCB.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1183         InPersonCB.setText("In-Person");
1184 
1185         ClassLocationTF.setForeground(new java.awt.Color(204, 204, 204));
1186         ClassLocationTF.setText("  Insert Class Location");
1187         ClassLocationTF.addMouseListener(new java.awt.event.MouseAdapter() {
1188             public void mouseReleased(java.awt.event.MouseEvent evt) {
1189                 ClassLocationTFMouseReleased(evt);
1190             }
1191         });
1192 
1193         jLabel4.setFont(new java.awt.Font("Lucida Grande", 2, 18)); // NOI18N
1194         jLabel4.setText("Pick a Date in Below to Start Inputting a New Class");
1195 
1196         ClassDateChooser.addMouseListener(new java.awt.event.MouseAdapter() {
1197             public void mouseReleased(java.awt.event.MouseEvent evt) {
1198                 ClassDateChooserMouseReleased(evt);
1199             }
1200         });
1201 
1202         RemoveButton1.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1203         RemoveButton1.setText("Remove");
1204         RemoveButton1.addMouseListener(new java.awt.event.MouseAdapter() {
1205             public void mouseReleased(java.awt.event.MouseEvent evt) {
1206                 RemoveButton1MouseReleased(evt);
1207             }
1208         });
1209         RemoveButton1.addKeyListener(new java.awt.event.KeyAdapter() {
1210             public void keyReleased(java.awt.event.KeyEvent evt) {
1211                 RemoveButton1KeyReleased(evt);
1212             }
1213         });
1214 
1215         ConfirmRemoveCB1.setText("Confirm");
1216         ConfirmRemoveCB1.addActionListener(new java.awt.event.ActionListener() {
1217             public void actionPerformed(java.awt.event.ActionEvent evt) {
1218                 ConfirmRemoveCB1ActionPerformed(evt);
1219             }
1220         });
1221 
1222         javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
1223         jPanel2.setLayout(jPanel2Layout);
1224         jPanel2Layout.setHorizontalGroup(
1225             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1226             .addGroup(jPanel2Layout.createSequentialGroup()
1227                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1228                     .addGroup(jPanel2Layout.createSequentialGroup()
1229                         .addGap(164, 164, 164)
1230                         .addComponent(jLabel4)
1231                         .addGap(48, 48, 48)
1232                         .addComponent(jLabel5))
1233                     .addGroup(jPanel2Layout.createSequentialGroup()
1234                         .addGap(253, 253, 253)
1235                         .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
1236                             .addComponent(ClassDateChooser, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1237                             .addComponent(ClassNameTF)
1238                             .addComponent(ClassLocationTF, javax.swing.GroupLayout.DEFAULT_SIZE, 260, Short.MAX_VALUE)))
1239                     .addGroup(jPanel2Layout.createSequentialGroup()
1240                         .addGap(14, 14, 14)
1241                         .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1242                             .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 778, javax.swing.GroupLayout.PREFERRED_SIZE)
1243                             .addGroup(jPanel2Layout.createSequentialGroup()
1244                                 .addComponent(RemoveButton1)
1245                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1246                                 .addComponent(ConfirmRemoveCB1))))
1247                     .addGroup(jPanel2Layout.createSequentialGroup()
1248                         .addGap(269, 269, 269)
1249                         .addComponent(ClassSongCB, javax.swing.GroupLayout.PREFERRED_SIZE, 230, javax.swing.GroupLayout.PREFERRED_SIZE))
1250                     .addGroup(jPanel2Layout.createSequentialGroup()
1251                         .addGap(342, 342, 342)
1252                         .addComponent(InputClassButton))
1253                     .addGroup(jPanel2Layout.createSequentialGroup()
1254                         .addGap(280, 280, 280)
1255                         .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1256                             .addComponent(jLabel3)
1257                             .addGroup(jPanel2Layout.createSequentialGroup()
1258                                 .addComponent(InPersonCB)
1259                                 .addGap(18, 18, 18)
1260                                 .addComponent(ZoomCB)))))
1261                 .addContainerGap(17, Short.MAX_VALUE))
1262         );
1263         jPanel2Layout.setVerticalGroup(
1264             jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1265             .addGroup(jPanel2Layout.createSequentialGroup()
1266                 .addGap(26, 26, 26)
1267                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1268                     .addComponent(jLabel4)
1269                     .addComponent(jLabel5))
1270                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1271                 .addComponent(ClassDateChooser, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
1272                 .addGap(8, 8, 8)
1273                 .addComponent(ClassNameTF, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
1274                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1275                 .addComponent(ClassLocationTF, javax.swing.GroupLayout.DEFAULT_SIZE, 42, Short.MAX_VALUE)
1276                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1277                 .addComponent(ClassSongCB, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
1278                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1279                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1280                     .addComponent(InPersonCB)
1281                     .addComponent(ZoomCB, javax.swing.GroupLayout.Alignment.TRAILING))
1282                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1283                 .addComponent(InputClassButton)
1284                 .addGap(18, 18, 18)
1285                 .addComponent(jLabel3)
1286                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1287                 .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 331, javax.swing.GroupLayout.PREFERRED_SIZE)
1288                 .addGap(14, 14, 14)
1289                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1290                     .addComponent(RemoveButton1)
1291                     .addComponent(ConfirmRemoveCB1)))
1292         );
1293 
1294         Input.addTab("Class Calendar", jPanel2);
1295 
1296         EmailExtractionB.setText("Extract Emails from Sign-Up Sheet");
1297         EmailExtractionB.addMouseListener(new java.awt.event.MouseAdapter() {
1298             public void mouseReleased(java.awt.event.MouseEvent evt) {
1299                 EmailExtractionBMouseReleased(evt);
1300             }
1301         });
1302         EmailExtractionB.addActionListener(new java.awt.event.ActionListener() {
1303             public void actionPerformed(java.awt.event.ActionEvent evt) {
1304                 EmailExtractionBActionPerformed(evt);
1305             }
1306         });
1307 
1308         EmailList.setModel(new javax.swing.AbstractListModel<String>() {
1309             String[] strings = { "The emails will be added below:", "Email 1", "Email 2", "Email 3", "Email 4", "Email 5", "Email 6", "Email 7" };
1310             public int getSize() { return strings.length; }
1311             public String getElementAt(int i) { return strings[i]; }
1312         });
1313         jScrollPane4.setViewportView(EmailList);
1314 
1315         SendEmailButton.setText("Send Email");
1316         SendEmailButton.addMouseListener(new java.awt.event.MouseAdapter() {
1317             public void mouseReleased(java.awt.event.MouseEvent evt) {
1318                 SendEmailButtonMouseReleased(evt);
1319             }
1320         });
1321 
1322         jLabel9.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1323         jLabel9.setText("Choose Exsisting Student Email(s) to Add to List");
1324 
1325         ListOfExistingStudentsT.setFont(new java.awt.Font("Lucida Grande", 0, 14)); // NOI18N
1326         ListOfExistingStudentsT.setModel(new javax.swing.table.DefaultTableModel(
1327             new Object [][] {
1328 
1329             },
1330             new String [] {
1331                 "Name", "Email", "Time Zone"
1332             }
1333         ) {
1334             Class[] types = new Class [] {
1335                 java.lang.String.class, java.lang.String.class, java.lang.Object.class
1336             };
1337             boolean[] canEdit = new boolean [] {
1338                 false, false, false
1339             };
1340 
1341             public Class getColumnClass(int columnIndex) {
1342                 return types [columnIndex];
1343             }
1344 
1345             public boolean isCellEditable(int rowIndex, int columnIndex) {
1346                 return canEdit [columnIndex];
1347             }
1348         });
1349         ListOfExistingStudentsT.setGridColor(new java.awt.Color(153, 153, 153));
1350         ListOfExistingStudentsT.setRowHeight(20);
1351         ListOfExistingStudentsT.setShowGrid(true);
1352         jScrollPane5.setViewportView(ListOfExistingStudentsT);
1353         if (ListOfExistingStudentsT.getColumnModel().getColumnCount() > 0) {
1354             ListOfExistingStudentsT.getColumnModel().getColumn(0).setResizable(false);
1355             ListOfExistingStudentsT.getColumnModel().getColumn(1).setResizable(false);
1356             ListOfExistingStudentsT.getColumnModel().getColumn(2).setResizable(false);
1357         }
1358 
1359         AddHighlightedEmailsButton.setText("Add Highlighted Emails to the List");
1360         AddHighlightedEmailsButton.addMouseListener(new java.awt.event.MouseAdapter() {
1361             public void mouseReleased(java.awt.event.MouseEvent evt) {
1362                 AddHighlightedEmailsButtonMouseReleased(evt);
1363             }
1364         });
1365 
1366         ExtractionProgressBar.setForeground(new java.awt.Color(51, 51, 255));
1367         ExtractionProgressBar.setToolTipText("");
1368         ExtractionProgressBar.setMaximumSize(new java.awt.Dimension(32767, 50));
1369         ExtractionProgressBar.setMinimumSize(new java.awt.Dimension(10, 50));
1370         ExtractionProgressBar.setPreferredSize(new java.awt.Dimension(146, 80));
1371 
1372         ClassDateCB.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "No Upcoming Classes" }));
1373 
1374         jLabel7.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1375         jLabel7.setText("Choose Date and Input Survey Link");
1376 
1377         SurveyEmailTF.setForeground(new java.awt.Color(153, 153, 153));
1378         SurveyEmailTF.setText("Insert Survey Monkey Email");
1379         SurveyEmailTF.addActionListener(new java.awt.event.ActionListener() {
1380             public void actionPerformed(java.awt.event.ActionEvent evt) {
1381                 SurveyEmailTFActionPerformed(evt);
1382             }
1383         });
1384 
1385         SurveyPasswordTF.setForeground(new java.awt.Color(153, 153, 153));
1386         SurveyPasswordTF.setText("Insert Survey Monkey Password");
1387 
1388         jLabel6.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1389         jLabel6.setText("Survey Monkey Login Information");
1390 
1391         SignUpSheetLinkTF.setColumns(20);
1392         SignUpSheetLinkTF.setRows(5);
1393         SignUpSheetLinkTF.setText("https://www.surveymonkey.com/analyze/browse/Q3QX6VcTZ8y_2F2w6PdfKMEGvjwPbqWiR4VVbxqErVN7g_3D");
1394         jScrollPane6.setViewportView(SignUpSheetLinkTF);
1395 
1396         javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
1397         jPanel6.setLayout(jPanel6Layout);
1398         jPanel6Layout.setHorizontalGroup(
1399             jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1400             .addGroup(jPanel6Layout.createSequentialGroup()
1401                 .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1402                     .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1403                         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
1404                             .addContainerGap()
1405                             .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1406                                 .addComponent(SurveyPasswordTF, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE)
1407                                 .addComponent(SurveyEmailTF, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE)))
1408                         .addGroup(jPanel6Layout.createSequentialGroup()
1409                             .addGap(32, 32, 32)
1410                             .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1411                                 .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
1412                                     .addComponent(jScrollPane4)
1413                                     .addComponent(ExtractionProgressBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1414                                     .addComponent(EmailExtractionB, javax.swing.GroupLayout.PREFERRED_SIZE, 277, javax.swing.GroupLayout.PREFERRED_SIZE))
1415                                 .addGroup(jPanel6Layout.createSequentialGroup()
1416                                     .addGap(69, 69, 69)
1417                                     .addComponent(SendEmailButton)))))
1418                     .addGroup(jPanel6Layout.createSequentialGroup()
1419                         .addGap(59, 59, 59)
1420                         .addComponent(jLabel6))
1421                     .addGroup(jPanel6Layout.createSequentialGroup()
1422                         .addGap(52, 52, 52)
1423                         .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1424                             .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1425                             .addComponent(jLabel7)))
1426                     .addGroup(jPanel6Layout.createSequentialGroup()
1427                         .addGap(74, 74, 74)
1428                         .addComponent(ClassDateCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
1429                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1430                 .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1431                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
1432                         .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 439, javax.swing.GroupLayout.PREFERRED_SIZE)
1433                         .addGap(21, 21, 21))
1434                     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
1435                         .addComponent(jLabel9)
1436                         .addGap(83, 83, 83))))
1437             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
1438                 .addGap(104, 436, Short.MAX_VALUE)
1439                 .addComponent(AddHighlightedEmailsButton)
1440                 .addGap(113, 113, 113))
1441         );
1442         jPanel6Layout.setVerticalGroup(
1443             jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1444             .addGroup(jPanel6Layout.createSequentialGroup()
1445                 .addGap(24, 24, 24)
1446                 .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1447                     .addGroup(jPanel6Layout.createSequentialGroup()
1448                         .addComponent(jLabel9)
1449                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1450                         .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 396, javax.swing.GroupLayout.PREFERRED_SIZE)
1451                         .addGap(18, 18, 18)
1452                         .addComponent(AddHighlightedEmailsButton)
1453                         .addGap(199, 199, 199))
1454                     .addGroup(jPanel6Layout.createSequentialGroup()
1455                         .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
1456                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
1457                         .addComponent(ClassDateCB, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1458                         .addGap(12, 12, 12)
1459                         .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
1460                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
1461                         .addComponent(jLabel6)
1462                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1463                         .addComponent(SurveyEmailTF, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
1464                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1465                         .addComponent(SurveyPasswordTF, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
1466                         .addGap(38, 38, 38)
1467                         .addComponent(EmailExtractionB, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
1468                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1469                         .addComponent(ExtractionProgressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
1470                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1471                         .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 235, javax.swing.GroupLayout.PREFERRED_SIZE)
1472                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
1473                         .addComponent(SendEmailButton)
1474                         .addGap(47, 47, 47))))
1475         );
1476 
1477         Input.addTab("Email Extraction", jPanel6);
1478 
1479         NumberOfStudentsSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
1480             public void stateChanged(javax.swing.event.ChangeEvent evt) {
1481                 NumberOfStudentsSpinnerStateChanged(evt);
1482             }
1483         });
1484         NumberOfStudentsSpinner.addKeyListener(new java.awt.event.KeyAdapter() {
1485             public void keyTyped(java.awt.event.KeyEvent evt) {
1486                 NumberOfStudentsSpinnerKeyTyped(evt);
1487             }
1488         });
1489 
1490         CreateOrChooseExisitingTB.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
1491         CreateOrChooseExisitingTB.setText("Create an Existing Dance Formation");
1492         CreateOrChooseExisitingTB.addItemListener(new java.awt.event.ItemListener() {
1493             public void itemStateChanged(java.awt.event.ItemEvent evt) {
1494                 CreateOrChooseExisitingTBItemStateChanged(evt);
1495             }
1496         });
1497         CreateOrChooseExisitingTB.addActionListener(new java.awt.event.ActionListener() {
1498             public void actionPerformed(java.awt.event.ActionEvent evt) {
1499                 CreateOrChooseExisitingTBActionPerformed(evt);
1500             }
1501         });
1502 
1503         NumberOfStudentsLabel.setText("Number of Students:");
1504 
1505         javax.swing.GroupLayout GridPanelLayout = new javax.swing.GroupLayout(GridPanel);
1506         GridPanel.setLayout(GridPanelLayout);
1507         GridPanelLayout.setHorizontalGroup(
1508             GridPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1509             .addGap(0, 0, Short.MAX_VALUE)
1510         );
1511         GridPanelLayout.setVerticalGroup(
1512             GridPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1513             .addGap(0, 586, Short.MAX_VALUE)
1514         );
1515 
1516         danceFormationSaveButton.setText("Click Here to Save Dance Formation");
1517         danceFormationSaveButton.addActionListener(new java.awt.event.ActionListener() {
1518             public void actionPerformed(java.awt.event.ActionEvent evt) {
1519                 danceFormationSaveButtonActionPerformed(evt);
1520             }
1521         });
1522 
1523         prevButton.setText("prev");
1524         prevButton.addActionListener(new java.awt.event.ActionListener() {
1525             public void actionPerformed(java.awt.event.ActionEvent evt) {
1526                 prevButtonActionPerformed(evt);
1527             }
1528         });
1529 
1530         nextButton.setText("next");
1531         nextButton.addActionListener(new java.awt.event.ActionListener() {
1532             public void actionPerformed(java.awt.event.ActionEvent evt) {
1533                 nextButtonActionPerformed(evt);
1534             }
1535         });
1536         nextButton.addKeyListener(new java.awt.event.KeyAdapter() {
1537             public void keyReleased(java.awt.event.KeyEvent evt) {
1538                 nextButtonKeyReleased(evt);
1539             }
1540         });
1541 
1542         AllLabel.setText("Displaying ALL Formations");
1543 
1544         FormationsLabel.setFont(new java.awt.Font("Lucida Grande", 3, 15)); // NOI18N
1545         FormationsLabel.setText("Add New Formations by Selecting Grid Boxes");
1546 
1547         javax.swing.GroupLayout randomLayout = new javax.swing.GroupLayout(random);
1548         random.setLayout(randomLayout);
1549         randomLayout.setHorizontalGroup(
1550             randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1551             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, randomLayout.createSequentialGroup()
1552                 .addGap(27, 27, 27)
1553                 .addGroup(randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1554                     .addGroup(randomLayout.createSequentialGroup()
1555                         .addGroup(randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
1556                             .addGroup(randomLayout.createSequentialGroup()
1557                                 .addComponent(prevButton, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
1558                                 .addGap(144, 144, 144)
1559                                 .addComponent(FormationsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1560                                 .addGap(124, 124, 124)
1561                                 .addComponent(nextButton))
1562                             .addComponent(GridPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
1563                         .addGap(29, 29, 29))
1564                     .addGroup(randomLayout.createSequentialGroup()
1565                         .addComponent(CreateOrChooseExisitingTB)
1566                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1567                         .addComponent(danceFormationSaveButton)
1568                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1569                         .addComponent(NumberOfStudentsLabel)
1570                         .addGap(12, 12, 12)
1571                         .addComponent(NumberOfStudentsSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
1572                         .addContainerGap())))
1573             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, randomLayout.createSequentialGroup()
1574                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1575                 .addComponent(AllLabel)
1576                 .addGap(19, 19, 19))
1577         );
1578         randomLayout.setVerticalGroup(
1579             randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1580             .addGroup(randomLayout.createSequentialGroup()
1581                 .addContainerGap()
1582                 .addGroup(randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1583                     .addComponent(nextButton)
1584                     .addComponent(prevButton)
1585                     .addComponent(FormationsLabel))
1586                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1587                 .addComponent(GridPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
1588                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
1589                 .addComponent(AllLabel)
1590                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
1591                 .addGroup(randomLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
1592                     .addComponent(CreateOrChooseExisitingTB)
1593                     .addComponent(danceFormationSaveButton)
1594                     .addComponent(NumberOfStudentsLabel)
1595                     .addComponent(NumberOfStudentsSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
1596                 .addGap(17, 17, 17))
1597         );
1598 
1599         Input.addTab("Dance Formations", random);
1600 
1601         fileMenu.setMnemonic('f');
1602         fileMenu.setText("File");
1603 
1604         openMenuItem.setMnemonic('o');
1605         openMenuItem.setText("Open");
1606         fileMenu.add(openMenuItem);
1607 
1608         saveMenuItem.setMnemonic('s');
1609         saveMenuItem.setText("Save");
1610         saveMenuItem.addMouseListener(new java.awt.event.MouseAdapter() {
1611             public void mouseReleased(java.awt.event.MouseEvent evt) {
1612                 saveMenuItemMouseReleased(evt);
1613             }
1614         });
1615         fileMenu.add(saveMenuItem);
1616 
1617         saveAsMenuItem.setMnemonic('a');
1618         saveAsMenuItem.setText("Save As ...");
1619         saveAsMenuItem.setDisplayedMnemonicIndex(5);
1620         fileMenu.add(saveAsMenuItem);
1621 
1622         exitMenuItem.setMnemonic('x');
1623         exitMenuItem.setText("Exit");
1624         exitMenuItem.addActionListener(new java.awt.event.ActionListener() {
1625             public void actionPerformed(java.awt.event.ActionEvent evt) {
1626                 exitMenuItemActionPerformed(evt);
1627             }
1628         });
1629         fileMenu.add(exitMenuItem);
1630 
1631         menuBar.add(fileMenu);
1632 
1633         editMenu.setMnemonic('e');
1634         editMenu.setText("Edit");
1635 
1636         cutMenuItem.setMnemonic('t');
1637         cutMenuItem.setText("Cut");
1638         editMenu.add(cutMenuItem);
1639 
1640         copyMenuItem.setMnemonic('y');
1641         copyMenuItem.setText("Copy");
1642         editMenu.add(copyMenuItem);
1643 
1644         pasteMenuItem.setMnemonic('p');
1645         pasteMenuItem.setText("Paste");
1646         editMenu.add(pasteMenuItem);
1647 
1648         deleteMenuItem.setMnemonic('d');
1649         deleteMenuItem.setText("Delete");
1650         editMenu.add(deleteMenuItem);
1651 
1652         menuBar.add(editMenu);
1653 
1654         helpMenu.setMnemonic('h');
1655         helpMenu.setText("Help");
1656 
1657         contentsMenuItem.setMnemonic('c');
1658         contentsMenuItem.setText("Contents");
1659         helpMenu.add(contentsMenuItem);
1660 
1661         aboutMenuItem.setMnemonic('a');
1662         aboutMenuItem.setText("About");
1663         helpMenu.add(aboutMenuItem);
1664 
1665         menuBar.add(helpMenu);
1666 
1667         setJMenuBar(menuBar);
1668 
1669         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
1670         getContentPane().setLayout(layout);
1671         layout.setHorizontalGroup(
1672             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1673             .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
1674                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
1675                 .addComponent(Input, javax.swing.GroupLayout.PREFERRED_SIZE, 830, javax.swing.GroupLayout.PREFERRED_SIZE)
1676                 .addContainerGap())
1677         );
1678         layout.setVerticalGroup(
1679             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
1680             .addGroup(layout.createSequentialGroup()
1681                 .addContainerGap()
1682                 .addComponent(Input)
1683                 .addContainerGap())
1684         );
1685 
1686         pack();
1687     }// </editor-fold>  

2483 
2484     // Variables declaration - do not modify                     
2485     private javax.swing.JButton AddHighlightedEmailsButton;
2486     private javax.swing.JButton AddSongToStudentButton;
2487     private javax.swing.JComboBox<String> AddSongToStudentCB;
2488     private javax.swing.JLabel AllLabel;
2489     private javax.swing.JComboBox<String> ClassDateCB;
2490     private com.toedter.calendar.JDateChooser ClassDateChooser;
2491     private javax.swing.JTextField ClassLocationTF;
2492     private javax.swing.JTextField ClassNameTF;
2493     private javax.swing.JComboBox<String> ClassSongCB;
2494     private javax.swing.JCheckBox ConfirmRemoveCB;
2495     private javax.swing.JCheckBox ConfirmRemoveCB1;
2496     private javax.swing.JToggleButton CreateOrChooseExisitingTB;
2497     private com.toedter.calendar.JDateChooser DateOfPerformanceChooser;
2498     private javax.swing.JButton EmailExtractionB;
2499     private javax.swing.JList<String> EmailList;
2500     private javax.swing.JPopupMenu ErrorPopup;
2501     public javax.swing.JProgressBar ExtractionProgressBar;
2502     private javax.swing.JLabel FormationsLabel;
2503     private javax.swing.JPanel GridPanel;
2504     private javax.swing.JCheckBox InPersonCB;
2505     private javax.swing.JTabbedPane Input;
2506     private javax.swing.JButton InputClassButton;
2507     private javax.swing.JButton InputSongOKButton;
2508     private javax.swing.JButton InputStudentOKButton;
2509     private javax.swing.JTable ListOfClassesT;
2510     private javax.swing.JTable ListOfExistingStudentsT;
2511     private javax.swing.JTabbedPane ListOfInformationTP;
2512     private javax.swing.JTable ListOfSongsT;
2513     private javax.swing.JTable ListOfStudentsT;
2514     private javax.swing.JTextField MovieNameTF;
2515     private javax.swing.JLabel NumberOfStudentsLabel;
2516     private javax.swing.JSpinner NumberOfStudentsSpinner;
2517     private javax.swing.JButton RefreshButton;
2518     private javax.swing.JButton RefreshButton1;
2519     private javax.swing.JButton RefreshButton2;
2520     private javax.swing.JButton RemoveButton;
2521     private javax.swing.JButton RemoveButton1;
2522     private javax.swing.JTextField SearchSongsTF;
2523     private javax.swing.JTextField SearchStudentsTF;
2524     private javax.swing.JButton SendEmailButton;
2525     private javax.swing.JTextArea SignUpSheetLinkTF;
2526     private javax.swing.JTextField SongBPMTF;
2527     private javax.swing.JTextField SongNameTF;
2528     private javax.swing.JComboBox<String> SongsForStudentsCB;
2529     private javax.swing.JComboBox<String> SortingSongsCB;
2530     private javax.swing.JComboBox<String> SortingStudentsCB;
2531     private javax.swing.JTextArea StudentAdditionalNotesTF;
2532     private javax.swing.JTextField StudentEmailTF;
2533     private javax.swing.JTextField StudentLocationTF;
2534     private javax.swing.JTextField StudentNameTF;
2535     private javax.swing.JTextField StudentPhoneNumberTF;
2536     private javax.swing.JTextField StudentTimeZoneTF;
2537     private javax.swing.JTextField SurveyEmailTF;
2538     private javax.swing.JTextField SurveyPasswordTF;
2539     private javax.swing.JCheckBox ZoomCB;
2540     private javax.swing.JMenuItem aboutMenuItem;
2541     private javax.swing.JMenuItem contentsMenuItem;
2542     private javax.swing.JMenuItem copyMenuItem;
2543     private javax.swing.JMenuItem cutMenuItem;
2544     private javax.swing.JButton danceFormationSaveButton;
2545     private javax.swing.JMenuItem deleteMenuItem;
2546     private javax.swing.JMenu editMenu;
2547     private javax.swing.JMenuItem exitMenuItem;
2548     private javax.swing.JMenu fileMenu;
2549     private javax.swing.JMenu helpMenu;
2550     private javax.swing.JLabel jLabel1;
2551     private javax.swing.JLabel jLabel10;
2552     private javax.swing.JLabel jLabel11;
2553     private javax.swing.JLabel jLabel2;
2554     private javax.swing.JLabel jLabel3;
2555     private javax.swing.JLabel jLabel4;
2556     private javax.swing.JLabel jLabel5;
2557     private javax.swing.JLabel jLabel6;
2558     private javax.swing.JLabel jLabel7;
2559     private javax.swing.JLabel jLabel8;
2560     private javax.swing.JLabel jLabel9;
2561     private javax.swing.JPanel jPanel1;
2562     private javax.swing.JPanel jPanel2;
2563     private javax.swing.JPanel jPanel4;
2564     private javax.swing.JPanel jPanel5;
2565     private javax.swing.JPanel jPanel6;
2566     private javax.swing.JScrollPane jScrollPane1;
2567     private javax.swing.JScrollPane jScrollPane2;
2568     private javax.swing.JScrollPane jScrollPane3;
2569     private javax.swing.JScrollPane jScrollPane4;
2570     private javax.swing.JScrollPane jScrollPane5;
2571     private javax.swing.JScrollPane jScrollPane6;
2572     private javax.swing.JScrollPane jScrollPane7;
2573     private javax.swing.JTabbedPane jTabbedPane1;
2574     private javax.swing.JMenuBar menuBar;
2575     private javax.swing.JButton nextButton;
2576     private javax.swing.JMenuItem openMenuItem;
2577     private javax.swing.JMenuItem pasteMenuItem;
2578     private javax.swing.JButton prevButton;
2579     private javax.swing.JPanel random;
2580     private javax.swing.JMenuItem saveAsMenuItem;
2581     private javax.swing.JMenuItem saveMenuItem;
2582     // End of variables declaration                   
2583 
2584 }
2585