scoutapp.MainWindow.java Source code

Java tutorial

Introduction

Here is the source code for scoutapp.MainWindow.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package scoutapp;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

//Excel File Read Packages
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author spencersharp
 * @author emccosky
 */
public class MainWindow extends javax.swing.JFrame {

    private Season season;
    private String[][] teamListData;
    private String[][] teamMatchesData;
    private String[][] rankingsData;
    private String[][] matchesData;
    private Competition currentComp;
    private Match currentMatch;
    String compSelection;

    /**
     * Creates new form MainWindow
     */
    public MainWindow() {
        initData();
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        addTeamDialog = new javax.swing.JDialog();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        addDialog_teamNumField = new javax.swing.JTextField();
        addDialog_teamNameField = new javax.swing.JTextField();
        addDialog_addButton = new javax.swing.JButton();
        addDialog_cancelButton = new javax.swing.JButton();
        addMatchDialog = new javax.swing.JDialog();
        jPanel2 = new javax.swing.JPanel();
        jLabel26 = new javax.swing.JLabel();
        Blue1Field = new javax.swing.JTextField();
        jLabel28 = new javax.swing.JLabel();
        Blue2Field = new javax.swing.JTextField();
        jLabel30 = new javax.swing.JLabel();
        BlueScoreField = new javax.swing.JTextField();
        jLabel31 = new javax.swing.JLabel();
        BluePenaltiesField = new javax.swing.JTextField();
        jLabel34 = new javax.swing.JLabel();
        jScrollPane7 = new javax.swing.JScrollPane();
        BlueComments = new javax.swing.JTextArea();
        jPanel3 = new javax.swing.JPanel();
        jLabel32 = new javax.swing.JLabel();
        Red1Field = new javax.swing.JTextField();
        jLabel33 = new javax.swing.JLabel();
        Red2Field = new javax.swing.JTextField();
        jLabel35 = new javax.swing.JLabel();
        RedScoreField = new javax.swing.JTextField();
        jLabel36 = new javax.swing.JLabel();
        RedPenaltiesField = new javax.swing.JTextField();
        jLabel37 = new javax.swing.JLabel();
        jScrollPane8 = new javax.swing.JScrollPane();
        RedComments = new javax.swing.JTextArea();
        ConfirmAddDialogButton = new javax.swing.JButton();
        CancelAddDialogButton = new javax.swing.JButton();
        editMatchDialog = new javax.swing.JDialog();
        jPanel6 = new javax.swing.JPanel();
        jLabel38 = new javax.swing.JLabel();
        Blue1Field1 = new javax.swing.JTextField();
        jLabel39 = new javax.swing.JLabel();
        Blue2Field1 = new javax.swing.JTextField();
        jLabel40 = new javax.swing.JLabel();
        BlueScoreField1 = new javax.swing.JTextField();
        jLabel41 = new javax.swing.JLabel();
        BluePenaltiesField1 = new javax.swing.JTextField();
        jLabel42 = new javax.swing.JLabel();
        jScrollPane9 = new javax.swing.JScrollPane();
        BlueComments1 = new javax.swing.JTextArea();
        jPanel7 = new javax.swing.JPanel();
        jLabel43 = new javax.swing.JLabel();
        Red1Field1 = new javax.swing.JTextField();
        jLabel44 = new javax.swing.JLabel();
        Red2Field1 = new javax.swing.JTextField();
        jLabel45 = new javax.swing.JLabel();
        RedScoreField1 = new javax.swing.JTextField();
        jLabel46 = new javax.swing.JLabel();
        RedPenaltiesField1 = new javax.swing.JTextField();
        jLabel47 = new javax.swing.JLabel();
        jScrollPane10 = new javax.swing.JScrollPane();
        RedComments1 = new javax.swing.JTextArea();
        ConfirmAddDialogButton1 = new javax.swing.JButton();
        CancelAddDialogButton1 = new javax.swing.JButton();
        Tabs = new javax.swing.JTabbedPane();
        Team_Tab = new javax.swing.JPanel();
        jScrollPane4 = new javax.swing.JScrollPane();
        TeamTable = new javax.swing.JTable();
        teamNameLabel = new javax.swing.JLabel();
        teamNumLabel = new javax.swing.JLabel();
        jScrollPane5 = new javax.swing.JScrollPane();
        teamMatchesTable = new javax.swing.JTable();
        jLabel6 = new javax.swing.JLabel();
        teamNameField = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        teamLocationField = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        teamNumField = new javax.swing.JTextField();
        jPanel1 = new javax.swing.JPanel();
        pushbotRadio = new javax.swing.JRadioButton();
        notPushbotRadio = new javax.swing.JRadioButton();
        jLabel13 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        debrisFloorBox = new javax.swing.JCheckBox();
        debrisLowBox = new javax.swing.JCheckBox();
        debrisMidBox = new javax.swing.JCheckBox();
        debrisHighBox = new javax.swing.JCheckBox();
        jLabel17 = new javax.swing.JLabel();
        jLabel18 = new javax.swing.JLabel();
        lowZoneBox = new javax.swing.JCheckBox();
        midZoneBox = new javax.swing.JCheckBox();
        highZoneBox = new javax.swing.JCheckBox();
        hangBox = new javax.swing.JCheckBox();
        noneEndgameBox = new javax.swing.JCheckBox();
        autoClimbersBox = new javax.swing.JCheckBox();
        autoNoneBox = new javax.swing.JCheckBox();
        autoLowZoneBox = new javax.swing.JCheckBox();
        autoMidZoneBox = new javax.swing.JCheckBox();
        autoHighZoneBox = new javax.swing.JCheckBox();
        autoBeaconBox = new javax.swing.JCheckBox();
        autoPartlyBox = new javax.swing.JCheckBox();
        jLabel19 = new javax.swing.JLabel();
        debrisLevelSlider = new javax.swing.JSlider();
        jLabel20 = new javax.swing.JLabel();
        climbLevelSlider = new javax.swing.JSlider();
        jLabel21 = new javax.swing.JLabel();
        hangLevelSlider = new javax.swing.JSlider();
        jLabel22 = new javax.swing.JLabel();
        jLabel23 = new javax.swing.JLabel();
        jScrollPane6 = new javax.swing.JScrollPane();
        robotDesignField = new javax.swing.JTextArea();
        baseTypeField = new javax.swing.JTextField();
        jLabel24 = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        teamAdjectiveField = new javax.swing.JTextField();
        addTeamButton = new javax.swing.JButton();
        removeTeamButton = new javax.swing.JButton();
        Match_Tab = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        MatchTable = new javax.swing.JTable();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        MatchNumLabel = new javax.swing.JLabel();
        CompetitionLabel = new javax.swing.JLabel();
        DateLabel = new javax.swing.JLabel();
        jPanel4 = new javax.swing.JPanel();
        Blue1Label = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        Blue2Label = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        CommentsField = new javax.swing.JScrollPane();
        BlueCommentsField = new javax.swing.JTextArea();
        BlueScoreLabel = new javax.swing.JLabel();
        jLabel27 = new javax.swing.JLabel();
        jPanel5 = new javax.swing.JPanel();
        jLabel12 = new javax.swing.JLabel();
        Red1Label = new javax.swing.JLabel();
        jLabel14 = new javax.swing.JLabel();
        jLabel16 = new javax.swing.JLabel();
        Red2Label = new javax.swing.JLabel();
        jScrollPane3 = new javax.swing.JScrollPane();
        RedCommentsField = new javax.swing.JTextArea();
        RedScoreLabel = new javax.swing.JLabel();
        jLabel29 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();
        Rank_Tab = new javax.swing.JPanel();
        ThisCompRadio = new javax.swing.JRadioButton();
        SeasonRadio = new javax.swing.JRadioButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        RankTable = new javax.swing.JTable();
        GoToTeamPage = new javax.swing.JButton();
        topMenuBar = new javax.swing.JMenuBar();
        seasonMenu = new javax.swing.JMenu();
        seasonOpenOption = new javax.swing.JMenuItem();
        seasonSaveOption = new javax.swing.JMenuItem();
        seasonSaveAsOption = new javax.swing.JMenuItem();
        seasonCloseOption = new javax.swing.JMenuItem();
        dataMenu = new javax.swing.JMenu();
        dataImportTeamsOption = new javax.swing.JMenuItem();
        dataExportTeamsOption = new javax.swing.JMenuItem();
        dataExportRankingsOption = new javax.swing.JMenuItem();
        dataImportMatchesOption = new javax.swing.JMenuItem();
        dataExportMatchesOption = new javax.swing.JMenuItem();
        compMenu = new javax.swing.JMenu();
        compImportOption = new javax.swing.JMenuItem();
        compExportOption = new javax.swing.JMenuItem();
        currentCompMenu = new javax.swing.JMenu();
        compCurrentSelectOption = new javax.swing.JMenuItem();
        compCurrentReplaceOption = new javax.swing.JMenuItem();

        addTeamDialog.setMinimumSize(new java.awt.Dimension(335, 160));
        addTeamDialog.setModal(true);
        addTeamDialog.setResizable(false);

        jLabel4.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel4.setText("Team Number:");

        jLabel5.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel5.setText("Team Name:");

        addDialog_addButton.setText("Add Team");
        addDialog_addButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addDialog_addButtonActionPerformed(evt);
            }
        });

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

        javax.swing.GroupLayout addTeamDialogLayout = new javax.swing.GroupLayout(addTeamDialog.getContentPane());
        addTeamDialog.getContentPane().setLayout(addTeamDialogLayout);
        addTeamDialogLayout.setHorizontalGroup(addTeamDialogLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(addTeamDialogLayout.createSequentialGroup().addContainerGap().addGroup(addTeamDialogLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(addTeamDialogLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addGroup(addTeamDialogLayout.createSequentialGroup().addComponent(jLabel4)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(addDialog_teamNumField))
                                .addGroup(addTeamDialogLayout.createSequentialGroup().addComponent(jLabel5)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(addDialog_teamNameField,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 226,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGroup(addTeamDialogLayout.createSequentialGroup().addGap(69, 69, 69)
                                .addComponent(addDialog_addButton)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(addDialog_cancelButton)))
                        .addContainerGap(19, Short.MAX_VALUE)));
        addTeamDialogLayout.setVerticalGroup(addTeamDialogLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(addTeamDialogLayout.createSequentialGroup().addContainerGap().addGroup(addTeamDialogLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel4)
                        .addComponent(addDialog_teamNumField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(
                                addTeamDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(jLabel5).addComponent(addDialog_teamNameField,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(
                                addTeamDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(addDialog_addButton).addComponent(addDialog_cancelButton))
                        .addContainerGap(64, Short.MAX_VALUE)));

        addMatchDialog.setMinimumSize(new java.awt.Dimension(430, 600));
        addMatchDialog.setModal(true);
        addMatchDialog.setResizable(false);

        jPanel2.setBackground(new java.awt.Color(0, 102, 255));
        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Blue Alliance",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.white));
        jPanel2.setMaximumSize(new java.awt.Dimension(392, 200));
        jPanel2.setMinimumSize(new java.awt.Dimension(392, 200));

        jLabel26.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel26.setForeground(new java.awt.Color(255, 255, 255));
        jLabel26.setText("Blue 1:");

        jLabel28.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel28.setForeground(new java.awt.Color(255, 255, 255));
        jLabel28.setText("Blue 2:");

        jLabel30.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel30.setForeground(new java.awt.Color(255, 255, 255));
        jLabel30.setText("Score:");

        jLabel31.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel31.setForeground(new java.awt.Color(255, 255, 255));
        jLabel31.setText("Penalties:");

        jLabel34.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel34.setForeground(new java.awt.Color(255, 255, 255));
        jLabel34.setText("Comments:");

        BlueComments.setColumns(20);
        BlueComments.setRows(5);
        jScrollPane7.setViewportView(BlueComments);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jScrollPane7)
                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel26)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Blue1Field))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel2Layout.createSequentialGroup().addComponent(jLabel28)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(Blue2Field))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout
                                        .createSequentialGroup().addComponent(jLabel30)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(BlueScoreField, javax.swing.GroupLayout.PREFERRED_SIZE, 122,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel31)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(BluePenaltiesField, javax.swing.GroupLayout.DEFAULT_SIZE, 133,
                                                Short.MAX_VALUE))
                                .addGroup(jPanel2Layout.createSequentialGroup().addComponent(jLabel34).addGap(0, 0,
                                        Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel26)
                                .addComponent(Blue1Field, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel28).addComponent(Blue2Field,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel30)
                                .addComponent(BlueScoreField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel31).addComponent(BluePenaltiesField,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel34)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)));

        jPanel3.setBackground(new java.awt.Color(255, 51, 51));
        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Red Alliance",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.white));
        jPanel3.setMaximumSize(new java.awt.Dimension(392, 200));
        jPanel3.setMinimumSize(new java.awt.Dimension(392, 200));

        jLabel32.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel32.setForeground(new java.awt.Color(255, 255, 255));
        jLabel32.setText("Red 1:");

        jLabel33.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel33.setForeground(new java.awt.Color(255, 255, 255));
        jLabel33.setText("Red 2:");

        jLabel35.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel35.setForeground(new java.awt.Color(255, 255, 255));
        jLabel35.setText("Score:");

        jLabel36.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel36.setForeground(new java.awt.Color(255, 255, 255));
        jLabel36.setText("Penalties:");

        jLabel37.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel37.setForeground(new java.awt.Color(255, 255, 255));
        jLabel37.setText("Comments:");

        RedComments.setColumns(20);
        RedComments.setRows(5);
        jScrollPane8.setViewportView(RedComments);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(jPanel3Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap().addGroup(jPanel3Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jScrollPane8)
                        .addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel32)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(Red1Field))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                jPanel3Layout.createSequentialGroup().addComponent(jLabel33)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Red2Field))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                jPanel3Layout.createSequentialGroup().addComponent(jLabel35)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(RedScoreField, javax.swing.GroupLayout.PREFERRED_SIZE, 122,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel36)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(RedPenaltiesField, javax.swing.GroupLayout.DEFAULT_SIZE, 133,
                                                Short.MAX_VALUE))
                        .addGroup(jPanel3Layout.createSequentialGroup().addComponent(jLabel37).addGap(0, 0,
                                Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel32)
                                .addComponent(Red1Field, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel33).addComponent(Red2Field,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel35)
                                .addComponent(RedScoreField, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel36).addComponent(RedPenaltiesField,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel37)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)));

        ConfirmAddDialogButton.setText("Confirm");
        ConfirmAddDialogButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ConfirmAddDialogButtonActionPerformed(evt);
            }
        });

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

        javax.swing.GroupLayout addMatchDialogLayout = new javax.swing.GroupLayout(addMatchDialog.getContentPane());
        addMatchDialog.getContentPane().setLayout(addMatchDialogLayout);
        addMatchDialogLayout.setHorizontalGroup(
                addMatchDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(addMatchDialogLayout.createSequentialGroup().addContainerGap()
                                .addGroup(addMatchDialogLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGroup(addMatchDialogLayout.createSequentialGroup()
                                                .addComponent(ConfirmAddDialogButton)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(CancelAddDialogButton)))
                                .addContainerGap()));
        addMatchDialogLayout.setVerticalGroup(addMatchDialogLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(addMatchDialogLayout.createSequentialGroup().addContainerGap()
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(
                                addMatchDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(ConfirmAddDialogButton).addComponent(CancelAddDialogButton))
                        .addContainerGap(44, Short.MAX_VALUE)));

        editMatchDialog.setMinimumSize(new java.awt.Dimension(430, 600));
        editMatchDialog.setModal(true);
        editMatchDialog.setResizable(false);

        jPanel6.setBackground(new java.awt.Color(0, 102, 255));
        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Blue Alliance",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.white));
        jPanel6.setMaximumSize(new java.awt.Dimension(392, 200));
        jPanel6.setMinimumSize(new java.awt.Dimension(392, 200));

        jLabel38.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel38.setForeground(new java.awt.Color(255, 255, 255));
        jLabel38.setText("Blue 1:");

        jLabel39.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel39.setForeground(new java.awt.Color(255, 255, 255));
        jLabel39.setText("Blue 2:");

        jLabel40.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel40.setForeground(new java.awt.Color(255, 255, 255));
        jLabel40.setText("Score:");

        jLabel41.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel41.setForeground(new java.awt.Color(255, 255, 255));
        jLabel41.setText("Penalties:");

        jLabel42.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel42.setForeground(new java.awt.Color(255, 255, 255));
        jLabel42.setText("Comments:");

        BlueComments1.setColumns(20);
        BlueComments1.setRows(5);
        jScrollPane9.setViewportView(BlueComments1);

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(jPanel6Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jScrollPane9)
                                .addGroup(jPanel6Layout.createSequentialGroup().addComponent(jLabel38)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Blue1Field1))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel6Layout.createSequentialGroup().addComponent(jLabel39)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(Blue2Field1))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout
                                        .createSequentialGroup().addComponent(jLabel40)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(BlueScoreField1, javax.swing.GroupLayout.PREFERRED_SIZE, 122,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel41)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(BluePenaltiesField1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                133, Short.MAX_VALUE))
                                .addGroup(jPanel6Layout.createSequentialGroup().addComponent(jLabel42).addGap(0, 0,
                                        Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel38)
                                .addComponent(Blue1Field1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel39).addComponent(Blue2Field1,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel40)
                                .addComponent(BlueScoreField1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel41).addComponent(BluePenaltiesField1,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel42)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)));

        jPanel7.setBackground(new java.awt.Color(255, 51, 51));
        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Red Alliance",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.white));
        jPanel7.setMaximumSize(new java.awt.Dimension(392, 200));
        jPanel7.setMinimumSize(new java.awt.Dimension(392, 200));

        jLabel43.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel43.setForeground(new java.awt.Color(255, 255, 255));
        jLabel43.setText("Red 1:");

        jLabel44.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel44.setForeground(new java.awt.Color(255, 255, 255));
        jLabel44.setText("Red 2:");

        jLabel45.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel45.setForeground(new java.awt.Color(255, 255, 255));
        jLabel45.setText("Score:");

        jLabel46.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel46.setForeground(new java.awt.Color(255, 255, 255));
        jLabel46.setText("Penalties:");

        jLabel47.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel47.setForeground(new java.awt.Color(255, 255, 255));
        jLabel47.setText("Comments:");

        RedComments1.setColumns(20);
        RedComments1.setRows(5);
        jScrollPane10.setViewportView(RedComments1);

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(jPanel7Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel7Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jScrollPane10)
                                .addGroup(jPanel7Layout.createSequentialGroup().addComponent(jLabel43)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Red1Field1))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel7Layout.createSequentialGroup().addComponent(jLabel44)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(Red2Field1))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout
                                        .createSequentialGroup().addComponent(jLabel45)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(RedScoreField1, javax.swing.GroupLayout.PREFERRED_SIZE, 122,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel46)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(RedPenaltiesField1, javax.swing.GroupLayout.DEFAULT_SIZE, 133,
                                                Short.MAX_VALUE))
                                .addGroup(jPanel7Layout.createSequentialGroup().addComponent(jLabel47).addGap(0, 0,
                                        Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel7Layout.setVerticalGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel7Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel43)
                                .addComponent(Red1Field1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel44).addComponent(Red2Field1,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel45)
                                .addComponent(RedScoreField1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel46).addComponent(RedPenaltiesField1,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel47)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane10, javax.swing.GroupLayout.DEFAULT_SIZE, 67, Short.MAX_VALUE)));

        ConfirmAddDialogButton1.setText("Confirm");
        ConfirmAddDialogButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ConfirmAddDialogButton1ActionPerformed(evt);
            }
        });

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

        javax.swing.GroupLayout editMatchDialogLayout = new javax.swing.GroupLayout(
                editMatchDialog.getContentPane());
        editMatchDialog.getContentPane().setLayout(editMatchDialogLayout);
        editMatchDialogLayout.setHorizontalGroup(
                editMatchDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(editMatchDialogLayout.createSequentialGroup().addContainerGap()
                                .addGroup(editMatchDialogLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGroup(editMatchDialogLayout.createSequentialGroup()
                                                .addComponent(ConfirmAddDialogButton1)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(CancelAddDialogButton1)))
                                .addContainerGap()));
        editMatchDialogLayout.setVerticalGroup(editMatchDialogLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(editMatchDialogLayout.createSequentialGroup().addContainerGap()
                        .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(editMatchDialogLayout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(ConfirmAddDialogButton1).addComponent(CancelAddDialogButton1))
                        .addContainerGap(144, Short.MAX_VALUE)));

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(1100, 700));
        setResizable(false);

        Tabs.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                TabsStateChanged(evt);
            }
        });

        TeamTable.setModel(new TeamListTableModel(teamListData));
        TeamTable.getTableHeader().setReorderingAllowed(false);
        TeamTable.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 1) {
                    JTable target = (JTable) e.getSource();
                    int row = target.getSelectedRow();
                    int column = target.getSelectedColumn();
                    viewTeamStats(TeamTable.getValueAt(row, 0));
                }
            }
        });
        jScrollPane4.setViewportView(TeamTable);

        teamNameLabel.setFont(new java.awt.Font("Miriam", 1, 36)); // NOI18N
        teamNameLabel.setText("Team Name Goes Here");
        teamNameLabel.setMaximumSize(new java.awt.Dimension(512, 38));
        teamNameLabel.setMinimumSize(new java.awt.Dimension(512, 38));
        teamNameLabel.setPreferredSize(new java.awt.Dimension(512, 38));

        teamNumLabel.setFont(new java.awt.Font("Miriam", 1, 48)); // NOI18N
        teamNumLabel.setText("####");

        teamMatchesTable.setModel(new TeamMatchesTableModel(teamMatchesData));
        jScrollPane5.setViewportView(teamMatchesTable);

        jLabel6.setFont(new java.awt.Font("Miriam", 1, 14)); // NOI18N
        jLabel6.setText("Name:");

        teamNameField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                teamNameFieldFocusLost(evt);
            }
        });

        jLabel8.setFont(new java.awt.Font("Miriam", 1, 14)); // NOI18N
        jLabel8.setText("Location:");

        teamLocationField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                teamLocationFieldFocusLost(evt);
            }
        });

        jLabel10.setFont(new java.awt.Font("Miriam", 1, 14)); // NOI18N
        jLabel10.setText("Number:");

        teamNumField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                teamNumFieldFocusLost(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        pushbotRadio.setFont(pushbotRadio.getFont().deriveFont(pushbotRadio.getFont().getSize() + 3f));
        pushbotRadio.setText("Pushbot");

        notPushbotRadio.setFont(notPushbotRadio.getFont().deriveFont(notPushbotRadio.getFont().getSize() + 3f));
        notPushbotRadio.setText("Not Push Bot");

        jLabel13.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel13.setText("Abilities:");

        jLabel15.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel15.setText("Debris:");

        debrisFloorBox.setText("Floor Goal");
        debrisFloorBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                debrisFloorBoxActionPerformed(evt);
            }
        });

        debrisLowBox.setText("Low Goal");

        debrisMidBox.setText("Mid Goal");
        debrisMidBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                debrisMidBoxActionPerformed(evt);
            }
        });

        debrisHighBox.setText("High Goal");

        jLabel17.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel17.setText("Autonomous:");

        jLabel18.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel18.setText("Robot Information");

        lowZoneBox.setText("Low Zone");
        lowZoneBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                lowZoneBoxActionPerformed(evt);
            }
        });

        midZoneBox.setText("Mid Zone");

        highZoneBox.setText("High Zone");
        highZoneBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                highZoneBoxActionPerformed(evt);
            }
        });

        hangBox.setText("Hang");

        noneEndgameBox.setText("None");

        autoClimbersBox.setText("Climbers");

        autoNoneBox.setText("None");

        autoLowZoneBox.setText("Low Zone");
        autoLowZoneBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                autoLowZoneBoxActionPerformed(evt);
            }
        });

        autoMidZoneBox.setText("Mid Zone");

        autoHighZoneBox.setText("High Zone");
        autoHighZoneBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                autoHighZoneBoxActionPerformed(evt);
            }
        });

        autoBeaconBox.setText("Beacon");
        autoBeaconBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                autoBeaconBoxActionPerformed(evt);
            }
        });

        autoPartlyBox.setText("Partly");

        jLabel19.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        jLabel19.setText("End Game:");

        jLabel20.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel20.setText("Debris Scoring Level");

        jLabel21.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel21.setText("Mountain Climb Level");

        jLabel22.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel22.setText("Hang Level:");

        jLabel23.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel23.setText("Base Type:");

        robotDesignField.setColumns(20);
        robotDesignField.setRows(5);
        jScrollPane6.setViewportView(robotDesignField);

        baseTypeField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                baseTypeFieldActionPerformed(evt);
            }
        });

        jLabel24.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel24.setText("Robot Design Comments:");

        jLabel25.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jLabel25.setText("Team Adjective:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(jPanel1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGroup(
                                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(jPanel1Layout.createSequentialGroup().addGap(78, 78, 78)
                                                .addComponent(pushbotRadio).addGap(18, 18, 18)
                                                .addComponent(notPushbotRadio))
                                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
                                                .addComponent(jLabel13))
                                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
                                                .addComponent(jLabel15)))
                                .addGap(0, 0, Short.MAX_VALUE))
                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(debrisFloorBox)
                                        .addGap(33, 33, 33).addComponent(debrisLowBox)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(debrisMidBox).addGap(18, 18, 18).addComponent(debrisHighBox))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel1Layout.createSequentialGroup().addComponent(autoClimbersBox)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(autoBeaconBox).addGap(223, 223, 223))
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        jPanel1Layout.createSequentialGroup().addComponent(autoNoneBox)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(autoPartlyBox).addGap(18, 18, 18)
                                                .addComponent(autoLowZoneBox).addGap(10, 10, 10)
                                                .addComponent(autoMidZoneBox).addGap(10, 10, 10)
                                                .addComponent(autoHighZoneBox))
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(noneEndgameBox)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(lowZoneBox).addGap(10, 10, 10).addComponent(midZoneBox)
                                        .addGap(10, 10, 10).addComponent(highZoneBox).addGap(10, 10, 10)
                                        .addComponent(hangBox))
                                .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel17).addComponent(jLabel18).addComponent(jLabel19))
                                        .addGap(0, 0, Short.MAX_VALUE)))))
                        .addContainerGap())
                .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel21)
                                                .addPreferredGap(
                                                        javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                .addComponent(climbLevelSlider,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addComponent(hangLevelSlider, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel20)
                                        .addGap(18, 18, 18).addComponent(debrisLevelSlider,
                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGap(38, 38, 38))
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jScrollPane6)
                        .addGroup(jPanel1Layout.createSequentialGroup().addGroup(jPanel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jLabel22)
                                .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel23)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(baseTypeField, javax.swing.GroupLayout.PREFERRED_SIZE, 256,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addComponent(jLabel24)).addGap(0, 0, Short.MAX_VALUE))
                        .addGroup(jPanel1Layout.createSequentialGroup().addComponent(jLabel25)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(teamAdjectiveField)))
                        .addContainerGap()));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(pushbotRadio).addComponent(notPushbotRadio))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel13).addGap(11, 11, 11).addComponent(jLabel15)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(debrisFloorBox).addComponent(debrisLowBox).addComponent(debrisMidBox)
                                .addComponent(debrisHighBox))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel17).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(autoClimbersBox).addComponent(autoBeaconBox))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(autoLowZoneBox).addComponent(autoMidZoneBox)
                                .addComponent(autoHighZoneBox).addComponent(autoNoneBox)
                                .addComponent(autoPartlyBox))
                        .addGap(6, 6, 6).addComponent(jLabel19)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(lowZoneBox).addComponent(midZoneBox).addComponent(highZoneBox)
                                .addComponent(hangBox).addComponent(noneEndgameBox))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jLabel18).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(
                                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(debrisLevelSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                Short.MAX_VALUE)
                                        .addComponent(jLabel20, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(
                                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(climbLevelSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                Short.MAX_VALUE)
                                        .addComponent(jLabel21))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(
                                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(hangLevelSlider, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
                                                Short.MAX_VALUE)
                                        .addComponent(jLabel22))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel23).addComponent(baseTypeField,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel24)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 64,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel25).addComponent(teamAdjectiveField,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        addTeamButton.setText("Add Team");
        addTeamButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addTeamButtonActionPerformed(evt);
            }
        });

        removeTeamButton.setText("Remove Team");

        javax.swing.GroupLayout Team_TabLayout = new javax.swing.GroupLayout(Team_Tab);
        Team_Tab.setLayout(Team_TabLayout);
        Team_TabLayout.setHorizontalGroup(Team_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(Team_TabLayout
                        .createSequentialGroup().addContainerGap().addGroup(
                                Team_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 202,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGroup(Team_TabLayout.createSequentialGroup().addComponent(addTeamButton)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(removeTeamButton)))
                        .addGroup(Team_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(Team_TabLayout.createSequentialGroup().addGap(25, 25, 25)
                                        .addComponent(teamNumLabel).addGap(18, 18, 18)
                                        .addComponent(teamNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 512,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(0, 0, Short.MAX_VALUE))
                                .addGroup(Team_TabLayout.createSequentialGroup().addGap(18, 18, 18)
                                        .addGroup(Team_TabLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(Team_TabLayout.createSequentialGroup()
                                                        .addComponent(jLabel6)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(teamNameField))
                                                .addGroup(Team_TabLayout.createSequentialGroup()
                                                        .addComponent(jLabel8)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(teamLocationField))
                                                .addGroup(Team_TabLayout.createSequentialGroup()
                                                        .addComponent(jLabel10)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(teamNumField))
                                                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addContainerGap()));
        Team_TabLayout.setVerticalGroup(Team_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(Team_TabLayout.createSequentialGroup().addContainerGap().addGroup(Team_TabLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(Team_TabLayout.createSequentialGroup()
                                .addGroup(Team_TabLayout
                                        .createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(teamNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(teamNumLabel))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(Team_TabLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(Team_TabLayout.createSequentialGroup().addGroup(Team_TabLayout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel10).addComponent(teamNumField,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addGroup(Team_TabLayout
                                                        .createParallelGroup(
                                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                        .addComponent(jLabel6).addComponent(teamNameField,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addGroup(Team_TabLayout
                                                        .createParallelGroup(
                                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                        .addComponent(jLabel8).addComponent(teamLocationField,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addPreferredGap(
                                                        javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 562,
                                                Short.MAX_VALUE)))
                        .addGroup(Team_TabLayout.createSequentialGroup()
                                .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 583,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(Team_TabLayout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(addTeamButton).addComponent(removeTeamButton))
                                .addGap(0, 0, Short.MAX_VALUE)))
                        .addContainerGap()));

        Tabs.addTab("Teams", Team_Tab);

        Match_Tab.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                Match_TabFocusGained(evt);
            }
        });

        MatchTable.setModel(new MatchTableModel(matchesData));
        MatchTable.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                MatchTableKeyPressed(evt);
            }
        });
        MatchTable.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 1) {
                    JTable target = (JTable) e.getSource();
                    int row = target.getSelectedRow();
                    int column = target.getSelectedColumn();
                    viewMatchStats(MatchTable.getValueAt(row, 0), MatchTable.getValueAt(row, 1));
                } else if (e.getClickCount() == 2) {
                    JTable target = (JTable) e.getSource();
                    int row = target.getSelectedRow();
                    int column = target.getSelectedColumn();
                    editMatch(MatchTable.getValueAt(row, 0), MatchTable.getValueAt(row, 1));
                }
            }
        });
        jScrollPane1.setViewportView(MatchTable);

        jLabel1.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel1.setText("Match Number:");

        jLabel2.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel2.setText("Date:");

        jLabel3.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel3.setText("Competition:");

        MatchNumLabel.setFont(new java.awt.Font("Miriam", 0, 18)); // NOI18N
        MatchNumLabel.setText("0");

        CompetitionLabel.setFont(new java.awt.Font("Miriam", 0, 18)); // NOI18N
        CompetitionLabel.setText("NULL");

        DateLabel.setFont(new java.awt.Font("Miriam", 0, 18)); // NOI18N
        DateLabel.setText("1-1-2015");

        jPanel4.setBackground(new java.awt.Color(0, 102, 255));
        jPanel4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        Blue1Label.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        Blue1Label.setForeground(new java.awt.Color(255, 255, 255));
        Blue1Label.setText("NULL");

        jLabel7.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel7.setForeground(new java.awt.Color(255, 255, 255));
        jLabel7.setText("Blue 1:");

        jLabel9.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel9.setForeground(new java.awt.Color(255, 255, 255));
        jLabel9.setText("Blue 2:");

        Blue2Label.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        Blue2Label.setForeground(new java.awt.Color(255, 255, 255));
        Blue2Label.setText("NULL");

        jLabel11.setFont(new java.awt.Font("Miriam", 1, 14)); // NOI18N
        jLabel11.setForeground(new java.awt.Color(255, 255, 255));
        jLabel11.setText("Comments:");

        BlueCommentsField.setEditable(false);
        BlueCommentsField.setColumns(20);
        BlueCommentsField.setRows(5);
        BlueCommentsField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                BlueCommentsFieldFocusLost(evt);
            }
        });
        CommentsField.setViewportView(BlueCommentsField);

        BlueScoreLabel.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
        BlueScoreLabel.setForeground(new java.awt.Color(255, 255, 255));
        BlueScoreLabel.setText("###");

        jLabel27.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel27.setForeground(new java.awt.Color(255, 255, 255));
        jLabel27.setText("Score:");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(jPanel4Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap().addGroup(jPanel4Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(CommentsField, javax.swing.GroupLayout.PREFERRED_SIZE, 500,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(jPanel4Layout.createSequentialGroup().addGroup(jPanel4Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel7)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Blue1Label, javax.swing.GroupLayout.PREFERRED_SIZE, 186,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jLabel9)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Blue2Label, javax.swing.GroupLayout.DEFAULT_SIZE, 140,
                                                Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                                .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel11)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jLabel27).addGap(18, 18, 18)))
                                .addComponent(BlueScoreLabel)))
                        .addContainerGap(15, Short.MAX_VALUE)));
        jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(jPanel4Layout.createSequentialGroup()
                                        .addGroup(jPanel4Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel7).addComponent(Blue1Label)
                                                .addComponent(jLabel9).addComponent(Blue2Label))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel11))
                                .addGroup(jPanel4Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(BlueScoreLabel).addComponent(jLabel27)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(CommentsField, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
                        .addContainerGap()));

        jPanel5.setBackground(new java.awt.Color(255, 51, 51));
        jPanel5.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));

        jLabel12.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel12.setForeground(new java.awt.Color(255, 255, 255));
        jLabel12.setText("Red 1:");

        Red1Label.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        Red1Label.setForeground(new java.awt.Color(255, 255, 255));
        Red1Label.setText("NULL");

        jLabel14.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel14.setForeground(new java.awt.Color(255, 255, 255));
        jLabel14.setText("Red 2:");

        jLabel16.setFont(new java.awt.Font("Miriam", 1, 14)); // NOI18N
        jLabel16.setForeground(new java.awt.Color(255, 255, 255));
        jLabel16.setText("Comments:");

        Red2Label.setFont(new java.awt.Font("Arial", 1, 18)); // NOI18N
        Red2Label.setForeground(new java.awt.Color(255, 255, 255));
        Red2Label.setText("NULL");

        RedCommentsField.setEditable(false);
        RedCommentsField.setColumns(20);
        RedCommentsField.setRows(5);
        RedCommentsField.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                RedCommentsFieldFocusLost(evt);
            }
        });
        jScrollPane3.setViewportView(RedCommentsField);

        RedScoreLabel.setFont(new java.awt.Font("Arial", 1, 24)); // NOI18N
        RedScoreLabel.setForeground(new java.awt.Color(255, 255, 255));
        RedScoreLabel.setText("###");

        jLabel29.setFont(new java.awt.Font("Miriam", 1, 18)); // NOI18N
        jLabel29.setForeground(new java.awt.Color(255, 255, 255));
        jLabel29.setText("Score:");

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(jPanel5Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap().addGroup(jPanel5Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jScrollPane3)
                        .addGroup(jPanel5Layout.createSequentialGroup().addGroup(jPanel5Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel5Layout.createSequentialGroup().addComponent(jLabel12)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Red1Label, javax.swing.GroupLayout.PREFERRED_SIZE, 186,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jLabel14)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(Red2Label, javax.swing.GroupLayout.DEFAULT_SIZE, 123,
                                                Short.MAX_VALUE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))
                                .addGroup(jPanel5Layout.createSequentialGroup().addComponent(jLabel16)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jLabel29).addGap(16, 16, 16)))
                                .addComponent(RedScoreLabel)))
                        .addContainerGap()));
        jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(jPanel5Layout.createSequentialGroup()
                                        .addGroup(jPanel5Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel12).addComponent(Red1Label)
                                                .addComponent(jLabel14).addComponent(Red2Label))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jLabel16))
                                .addGroup(jPanel5Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                        .addComponent(RedScoreLabel).addComponent(jLabel29)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
                        .addContainerGap()));

        jButton2.setText("Add Match");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout Match_TabLayout = new javax.swing.GroupLayout(Match_Tab);
        Match_Tab.setLayout(Match_TabLayout);
        Match_TabLayout.setHorizontalGroup(Match_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jScrollPane1)
                .addGroup(Match_TabLayout.createSequentialGroup().addGroup(Match_TabLayout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(Match_TabLayout.createSequentialGroup().addGap(21, 21, 21).addComponent(jLabel1)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(MatchNumLabel).addGap(40, 40, 40).addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(CompetitionLabel).addGap(257, 257, 257).addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(DateLabel)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jButton2))
                        .addGroup(Match_TabLayout.createSequentialGroup().addGap(13, 13, 13)
                                .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18).addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                        .addContainerGap()));
        Match_TabLayout.setVerticalGroup(Match_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(Match_TabLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 454,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(Match_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel1).addComponent(jLabel3).addComponent(jLabel2)
                                .addComponent(MatchNumLabel).addComponent(CompetitionLabel).addComponent(DateLabel)
                                .addComponent(jButton2))
                        .addGap(10, 10, 10)
                        .addGroup(Match_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addContainerGap()));

        Tabs.addTab("Matches", Match_Tab);

        ThisCompRadio.setText("This Competition");
        ThisCompRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ThisCompRadioActionPerformed(evt);
            }
        });

        SeasonRadio.setText("Season");
        SeasonRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SeasonRadioActionPerformed(evt);
            }
        });

        RankTable.setModel(new RankingsTableModel(rankingsData));
        RankTable.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 2) {
                    JTable target = (JTable) e.getSource();
                    int row = target.getSelectedRow();
                    int column = target.getSelectedColumn();
                    Tabs.setSelectedIndex(0);
                    viewTeamStats(RankTable.getValueAt(row, 1));
                }
            }
        });
        jScrollPane2.setViewportView(RankTable);

        GoToTeamPage.setText("Go to Team Page");
        GoToTeamPage.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GoToTeamPageActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout Rank_TabLayout = new javax.swing.GroupLayout(Rank_Tab);
        Rank_Tab.setLayout(Rank_TabLayout);
        Rank_TabLayout.setHorizontalGroup(Rank_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(Rank_TabLayout.createSequentialGroup().addGap(22, 22, 22).addComponent(ThisCompRadio)
                        .addGap(18, 18, 18).addComponent(SeasonRadio).addContainerGap(869, Short.MAX_VALUE))
                .addGroup(Rank_TabLayout.createSequentialGroup().addContainerGap()
                        .addGroup(Rank_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jScrollPane2).addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                        Rank_TabLayout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE)
                                                .addComponent(GoToTeamPage)))
                        .addContainerGap()));
        Rank_TabLayout.setVerticalGroup(Rank_TabLayout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(Rank_TabLayout.createSequentialGroup().addContainerGap()
                        .addGroup(Rank_TabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(ThisCompRadio).addComponent(SeasonRadio))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 557,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE)
                        .addComponent(GoToTeamPage).addContainerGap()));

        Tabs.addTab("Rankings", Rank_Tab);

        seasonMenu.setText("Season");

        seasonOpenOption.setText("Open");
        seasonOpenOption.setToolTipText("");
        seasonOpenOption.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                seasonOpenOptionActionPerformed(evt);
            }
        });
        seasonMenu.add(seasonOpenOption);

        seasonSaveOption.setText("Save");
        seasonSaveOption.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                seasonSaveOptionActionPerformed(evt);
            }
        });
        seasonMenu.add(seasonSaveOption);

        seasonSaveAsOption.setText("Save As");
        seasonMenu.add(seasonSaveAsOption);

        seasonCloseOption.setText("Close");
        seasonMenu.add(seasonCloseOption);

        topMenuBar.add(seasonMenu);

        dataMenu.setText("Data");

        dataImportTeamsOption.setText("Import Teams");
        dataMenu.add(dataImportTeamsOption);

        dataExportTeamsOption.setText("Export Teams");
        dataMenu.add(dataExportTeamsOption);

        dataExportRankingsOption.setText("Export Rankings");
        dataMenu.add(dataExportRankingsOption);

        dataImportMatchesOption.setText("Import Matches");
        dataMenu.add(dataImportMatchesOption);

        dataExportMatchesOption.setText("Export Matches");
        dataMenu.add(dataExportMatchesOption);

        topMenuBar.add(dataMenu);

        compMenu.setText("Competition");

        compImportOption.setText("Import");
        compMenu.add(compImportOption);

        compExportOption.setText("Export");
        compExportOption.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                compExportOptionActionPerformed(evt);
            }
        });
        compMenu.add(compExportOption);

        currentCompMenu.setText("Current Competition");

        compCurrentSelectOption.setText("Select");
        currentCompMenu.add(compCurrentSelectOption);

        compCurrentReplaceOption.setText("Replace");
        compCurrentReplaceOption.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                compCurrentReplaceOptionActionPerformed(evt);
            }
        });
        currentCompMenu.add(compCurrentReplaceOption);

        compMenu.add(currentCompMenu);

        topMenuBar.add(compMenu);

        setJMenuBar(topMenuBar);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(Tabs).addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap().addComponent(Tabs)));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /* TOP NAVBAR NOT YET IMPLEMENTED
     TODO: FIGURE OUT HOW TO WORK THE FILE EXPORT STUFF AND MULTI USER SHARING
     =========================================================================*/

    private void seasonSaveOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_seasonSaveOptionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_seasonSaveOptionActionPerformed

    private void compExportOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_compExportOptionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_compExportOptionActionPerformed

    private void compCurrentReplaceOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_compCurrentReplaceOptionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_compCurrentReplaceOptionActionPerformed

    private void debrisFloorBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_debrisFloorBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_debrisFloorBoxActionPerformed

    private void debrisMidBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_debrisMidBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_debrisMidBoxActionPerformed

    private void lowZoneBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lowZoneBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_lowZoneBoxActionPerformed

    private void highZoneBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highZoneBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_highZoneBoxActionPerformed

    private void autoLowZoneBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoLowZoneBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_autoLowZoneBoxActionPerformed

    private void autoHighZoneBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoHighZoneBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_autoHighZoneBoxActionPerformed

    private void autoBeaconBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_autoBeaconBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_autoBeaconBoxActionPerformed

    private void baseTypeFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_baseTypeFieldActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_baseTypeFieldActionPerformed

    private void seasonOpenOptionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_seasonOpenOptionActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_seasonOpenOptionActionPerformed

    //When add team button pressed
    private void addTeamButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addTeamButtonActionPerformed
        addTeamDialog.setVisible(true);
    }//GEN-LAST:event_addTeamButtonActionPerformed

    //Cancel button on the add team dialog box
    private void addDialog_cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addDialog_cancelButtonActionPerformed
        addTeamDialog.dispose();
        addTeamDialog.setVisible(false);
    }//GEN-LAST:event_addDialog_cancelButtonActionPerformed

    //When add button on add team dialog pressed, add a match to the current season
    private void addDialog_addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addDialog_addButtonActionPerformed
        String num = addDialog_teamNumField.getText();
        String name = addDialog_teamNameField.getText();
        addTeam(num, name, currentComp.getCompetitionID());
        addTeamDialog.dispose();
        addTeamDialog.setVisible(false);
    }//GEN-LAST:event_addDialog_addButtonActionPerformed

    //Something I tried, didn't work, don't know how to get rid of this aut-gen code
    private void Match_TabFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_Match_TabFocusGained

    }//GEN-LAST:event_Match_TabFocusGained

    //When the user switches tabs, call the updateTabs() method
    private void TabsStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_TabsStateChanged
        updateTabs();
    }//GEN-LAST:event_TabsStateChanged

    //Team number is an immutable attribute, it would then be a different team
    private void teamNumFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_teamNumFieldFocusLost

    }//GEN-LAST:event_teamNumFieldFocusLost

    //When the user is done editing the team name
    private void teamNameFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_teamNameFieldFocusLost
        season.changeTeamName(Integer.parseInt(teamNumLabel.getText()), teamNameField.getText());

        //Update the team display
        viewTeamStats(teamNumLabel.getText());
        updateTeamTab();
    }//GEN-LAST:event_teamNameFieldFocusLost

    //When the user is done editing the team loation
    private void teamLocationFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_teamLocationFieldFocusLost
        season.changeTeamLocation(Integer.parseInt(teamNumLabel.getText()), teamLocationField.getText());

        //Update the team display
        viewTeamStats(teamNumLabel.getText());
        updateTeamTab();
    }//GEN-LAST:event_teamLocationFieldFocusLost

    //Once again, can't get rid of auto-gen code
    private void MatchTableKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_MatchTableKeyPressed
        // TODO add your handling code here:
    }//GEN-LAST:event_MatchTableKeyPressed

    //Once again, can't get rid of auto-gen code
    private void BlueCommentsFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_BlueCommentsFieldFocusLost

    }//GEN-LAST:event_BlueCommentsFieldFocusLost

    //Once again, can't get rid of auto-gen code
    private void RedCommentsFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_RedCommentsFieldFocusLost

    }//GEN-LAST:event_RedCommentsFieldFocusLost

    //When the user is done adding a match, add the match to the current competition
    private void ConfirmAddDialogButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ConfirmAddDialogButtonActionPerformed
        //initial variable declarations
        int red1ID = 0;
        int red2ID = 0;
        int blue1ID = 0;
        int blue2ID = 0;
        int redTotalScore = 0;
        int blueTotalScore = 0;
        String blueComments = "";
        String redComments = "";

        //catch any number format errors
        try {
            red1ID = Integer.parseInt(Red1Field.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            red2ID = Integer.parseInt(Red2Field.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            blue1ID = Integer.parseInt(Blue1Field.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            blue2ID = Integer.parseInt(Blue2Field.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            redTotalScore = Integer.parseInt(RedScoreField.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Score must be a number!");
        }
        try {
            blueTotalScore = Integer.parseInt(BlueScoreField.getText());
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Score must be a number!");
        }

        //get the match comments
        blueComments = BlueComments.getText();
        redComments = RedComments.getText();

        //add a match to the season, in doing so, the match is added to the correct competition and the team list is checked/updated
        season.addMatch(new Match(currentComp.getCompetitionID(), currentComp.getNextMatchID(), red1ID, red2ID,
                blue1ID, blue2ID, redTotalScore, blueTotalScore, blueComments, redComments));
        addMatchDialog.setVisible(false);
        addMatchDialog.dispose();
        updateTabs();
    }//GEN-LAST:event_ConfirmAddDialogButtonActionPerformed

    //When the add match button is clicked, open the add match window
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        addMatchDialog.setVisible(true);
    }//GEN-LAST:event_jButton2ActionPerformed

    //When the add match window cancel button is clicked, close the add match window without saving
    private void CancelAddDialogButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CancelAddDialogButtonActionPerformed
        addMatchDialog.setVisible(false);
        addMatchDialog.dispose();
    }//GEN-LAST:event_CancelAddDialogButtonActionPerformed

    //When clicks the confirm button on the Edit match window
    private void ConfirmAddDialogButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ConfirmAddDialogButton1ActionPerformed
        //check for anc catch all number format errors
        try {
            currentMatch.setRed1ID((int) Integer.parseInt(Red1Field1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            currentMatch.setRed2ID((int) Integer.parseInt(Red2Field1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            currentMatch.setBlue1ID((int) Integer.parseInt(Blue1Field1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            currentMatch.setBlue2ID((int) Integer.parseInt(Blue2Field1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team Numbers must be numbers!");
        }
        try {
            currentMatch.setRedTotalScore((int) Integer.parseInt(RedScoreField1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Score must be a number!");
        }
        try {
            currentMatch.setBlueTotalScore((int) Integer.parseInt(BlueScoreField1.getText()));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Score must be a number!");
        }

        //set the match comments
        currentMatch.setBlueComments(BlueComments1.getText());
        currentMatch.setRedComments(RedComments1.getText());

        //replace the match and update all comp data with the new edited match
        currentComp.replaceMatch(currentMatch.getMatchNum(), currentMatch);
        season.replaceComp(currentComp.getCompetitionID(), currentComp);
        editMatchDialog.setVisible(false);
        editMatchDialog.dispose();
        updateTabs();
    }//GEN-LAST:event_ConfirmAddDialogButton1ActionPerformed

    //When the edit match window cancel button is clicked, close the edit match window without saving
    private void CancelAddDialogButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CancelAddDialogButton1ActionPerformed
        editMatchDialog.setVisible(false);
        editMatchDialog.dispose();
    }//GEN-LAST:event_CancelAddDialogButton1ActionPerformed

    //radio button in rankings tab for viewing just this competition
    private void ThisCompRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ThisCompRadioActionPerformed
        //make sure only one to the radio buttons is selected
        if (ThisCompRadio.isSelected()) {
            SeasonRadio.setSelected(false);
        } else {
            SeasonRadio.setSelected(true);
        }

        //set the selection variable (used to update the rank tab)
        compSelection = "current";
        updateTabs();
    }//GEN-LAST:event_ThisCompRadioActionPerformed

    //radio button in rankings tab for viewing the whole season
    private void SeasonRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SeasonRadioActionPerformed
        //make sure only one to the radio buttons is selected
        if (SeasonRadio.isSelected()) {
            ThisCompRadio.setSelected(false);
        } else {
            ThisCompRadio.setSelected(true);
        }

        //set the selection variable (used to update the rank tab)
        compSelection = "all";
        updateTabs();
    }//GEN-LAST:event_SeasonRadioActionPerformed

    // a button that takes you to the team's page when they are selected on the ranking table
    //Double clicking also does this
    private void GoToTeamPageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GoToTeamPageActionPerformed
        String teamID = (String) RankTable.getValueAt(RankTable.getSelectedRow(), 1);
        Tabs.setSelectedIndex(0);
        viewTeamStats(teamID);
    }//GEN-LAST:event_GoToTeamPageActionPerformed

    //initialize data and variables when first opening application
    private void initData() {
        season = new Season();
        currentComp = new Competition(season.getNextCompID());
        currentComp.setCompName("South SR Bluford");
        season.addCompetition(currentComp);
        compSelection = "current";
        teamListData = new String[10][2];
        teamMatchesData = new String[10][8];
        rankingsData = new String[10][9];
        matchesData = new String[10][11];

        //Import the match data from the match spreadsheet
        importMatches();
    }

    //Adds a team to the specified competition and season (For use with the add team dialog)
    private void addTeam(String num, String name, int compID) {
        //Create temporary data arrays and initialize variables
        ArrayList<Team> tempTeams = season.getTeams();
        ArrayList<Competition> tempComps = season.getCompetitions();
        Team newTeam = null;

        //Catch team number format errors
        try {
            newTeam = new Team(Integer.parseInt(num), name);
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Team number must be a number!");
        }

        //add a team to the team list
        tempTeams.add(newTeam);

        //find the desired competition in the unsorted list 
        int currentCompSpot = 0;
        for (int i = 0; i < tempComps.size(); i++) {
            if (tempComps.get(i).getCompetitionID() == compID) {
                currentCompSpot = i;
            }
        }

        //update the team list for that competition
        Competition tempComp = tempComps.get(currentCompSpot);
        tempComp.addTeam(newTeam);
        season.addTeam(newTeam);
        tempComps.set(currentCompSpot, tempComp);

        //update gui
        updateTeamTab();
    }

    //Called to display the team info on the team page
    private void viewTeamStats(Object teamNum) {
        if (teamNum != null) {
            //save the info of the currently displayed team
            saveCurrentTeamStats();

            //update match info to make sure the user sees the correct info
            updateTeamMatches();

            //Try-Catch not needed, team num not a number already caught
            Team selectedTeam = season.getTeam((int) Integer.parseInt((String) teamNum));

            //get the scouting data for the team to be displayed
            ArrayList<String> labels = selectedTeam.getLabels();
            ArrayList<String> sliderLabels = selectedTeam.getSliderLabels();
            Boolean[] scouting = selectedTeam.getScouting();
            Integer[] sliders = selectedTeam.getSliders();

            //Set the text-based basic team info data
            teamNumLabel.setText(selectedTeam.getTeamID() + "");
            teamNameLabel.setText(selectedTeam.getTeamName() + "");
            teamNumField.setText(selectedTeam.getTeamID() + "");
            teamNameField.setText(selectedTeam.getTeamName() + "");
            teamLocationField.setText(selectedTeam.getLocation() + "");

            //Set the checkbox scouting data
            autoBeaconBox.setSelected(scouting[labels.indexOf("autoBeaconBox")]);
            autoClimbersBox.setSelected(scouting[labels.indexOf("autoClimbersBox")]);
            autoHighZoneBox.setSelected(scouting[labels.indexOf("autoHighZoneBox")]);
            autoLowZoneBox.setSelected(scouting[labels.indexOf("autoLowZoneBox")]);
            autoMidZoneBox.setSelected(scouting[labels.indexOf("autoMidZoneBox")]);
            autoNoneBox.setSelected(scouting[labels.indexOf("autoNoneBox")]);
            autoPartlyBox.setSelected(scouting[labels.indexOf("autoPartlyBox")]);
            debrisFloorBox.setSelected(scouting[labels.indexOf("debrisFloorBox")]);
            debrisHighBox.setSelected(scouting[labels.indexOf("debrisHighBox")]);
            debrisLowBox.setSelected(scouting[labels.indexOf("debrisLowBox")]);
            debrisMidBox.setSelected(scouting[labels.indexOf("debrisMidBox")]);
            midZoneBox.setSelected(scouting[labels.indexOf("midZoneBox")]);
            highZoneBox.setSelected(scouting[labels.indexOf("highZoneBox")]);
            lowZoneBox.setSelected(scouting[labels.indexOf("lowZoneBox")]);
            hangBox.setSelected(scouting[labels.indexOf("hangBox")]);
            noneEndgameBox.setSelected(scouting[labels.indexOf("noneEndgameBox")]);

            //set the slider and text feld scouting data
            debrisLevelSlider.setValue(sliders[sliderLabels.indexOf("debrisLevelSlider")]);
            climbLevelSlider.setValue(sliders[sliderLabels.indexOf("climbLevelSlider")]);
            hangLevelSlider.setValue(sliders[sliderLabels.indexOf("hangLevelSlider")]);
            baseTypeField.setText(selectedTeam.getBaseType());
            robotDesignField.setText(selectedTeam.getDesignComments());
            teamAdjectiveField.setText(selectedTeam.getAdjective());

            //update the team Match list table
            ArrayList<Match> teamMatches = selectedTeam.getMatches();
            teamMatchesData = new String[teamMatches.size()][8];
            if (teamMatches.size() > 0) {
                //display each row (one per match)
                for (int i = 0; i < teamMatches.size(); i++) {
                    teamMatchesData[i][0] = teamMatches.get(i).getMatchNum() + "";
                    teamMatchesData[i][1] = teamMatches.get(i).getCompetitionID() + "";
                    teamMatchesData[i][2] = teamMatches.get(i).getBlue1ID() + "";
                    teamMatchesData[i][3] = teamMatches.get(i).getBlue2ID() + "";
                    teamMatchesData[i][4] = teamMatches.get(i).getBlueTotalScore() + "";
                    teamMatchesData[i][5] = teamMatches.get(i).getRed1ID() + "";
                    teamMatchesData[i][6] = teamMatches.get(i).getRed2ID() + "";
                    teamMatchesData[i][7] = teamMatches.get(i).getRedTotalScore() + "";
                }
                teamMatchesTable.setModel(new TeamMatchesTableModel(teamMatchesData));
            }
        } else {
            //prevent from trying to view data if there is none to view
            JOptionPane.showMessageDialog(this, "No Data to View!");
        }
    }

    //Save the scouting form info for the currently displaed team
    private void saveCurrentTeamStats() {
        //check if there even is a team currently displayed
        if (!teamNumLabel.getText().equals("####")) {

            //initialize data lists
            Team currentTeam = season.getTeam((int) Integer.parseInt(teamNumLabel.getText()));
            ArrayList<String> labels = currentTeam.getLabels();
            ArrayList<String> sliderLabels = currentTeam.getSliderLabels();
            Boolean[] scouting = currentTeam.getScouting();
            Integer[] sliders = currentTeam.getSliders();

            //set the team values based on whats in the fields
            //checkbox values
            scouting[labels.indexOf("autoBeaconBox")] = autoBeaconBox.isSelected();
            scouting[labels.indexOf("autoClimbersBox")] = autoClimbersBox.isSelected();
            scouting[labels.indexOf("autoHighZoneBox")] = autoHighZoneBox.isSelected();
            scouting[labels.indexOf("autoLowZoneBox")] = autoLowZoneBox.isSelected();
            scouting[labels.indexOf("autoMidZoneBox")] = autoMidZoneBox.isSelected();
            scouting[labels.indexOf("autoNoneBox")] = autoNoneBox.isSelected();
            scouting[labels.indexOf("autoPartlyBox")] = autoPartlyBox.isSelected();
            scouting[labels.indexOf("debrisFloorBox")] = debrisFloorBox.isSelected();
            scouting[labels.indexOf("debrisHighBox")] = debrisHighBox.isSelected();
            scouting[labels.indexOf("debrisLowBox")] = debrisLowBox.isSelected();
            scouting[labels.indexOf("debrisMidBox")] = debrisMidBox.isSelected();
            scouting[labels.indexOf("midZoneBox")] = midZoneBox.isSelected();
            scouting[labels.indexOf("highZoneBox")] = highZoneBox.isSelected();
            scouting[labels.indexOf("lowZoneBox")] = lowZoneBox.isSelected();
            scouting[labels.indexOf("hangBox")] = hangBox.isSelected();
            scouting[labels.indexOf("noneEndgameBox")] = noneEndgameBox.isSelected();

            //slider and text feld values
            sliders[sliderLabels.indexOf("debrisLevelSlider")] = debrisLevelSlider.getValue();
            sliders[sliderLabels.indexOf("climbLevelSlider")] = climbLevelSlider.getValue();
            sliders[sliderLabels.indexOf("hangLevelSlider")] = hangLevelSlider.getValue();
            currentTeam.setBaseType(baseTypeField.getText());
            currentTeam.setDesignComments(robotDesignField.getText());
            currentTeam.setAdjective(teamAdjectiveField.getText());
        }
    }

    //import matches from a spreadsheet
    private void importMatches() {
        //Read the file and open it as an Excel workbook with the Apache POI libraries
        File myFile = new File("src/scoutapp/Data/SR_South_Bluford.xlsx");
        InputStream inp = null;
        try {
            inp = new FileInputStream(myFile);
        } catch (FileNotFoundException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
        XSSFWorkbook wb = null;
        try {
            wb = new XSSFWorkbook(inp);
        } catch (IOException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }

        //Access the match result sheet
        Sheet matchList = wb.getSheetAt(0);
        Row matchNumRow = matchList.getRow(0);
        Cell amount = matchNumRow.getCell(0);

        //get the number of matches
        Double matchNum = amount.getNumericCellValue();

        //import each match and add it to the season
        System.out.println("Importing Matches...");
        for (int i = 2; i < matchNum + 2; i++) {
            //get the teams and score data
            Row row = matchList.getRow(i);
            Cell red1 = row.getCell(1);
            int red1Name = (int) Integer.parseInt(String.valueOf((int) red1.getNumericCellValue()));
            Cell red2 = row.getCell(2);
            int red2Name = (int) Integer.parseInt(String.valueOf((int) red2.getNumericCellValue()));
            Cell blue1 = row.getCell(3);
            int blue1Name = (int) Integer.parseInt(String.valueOf((int) blue1.getNumericCellValue()));
            Cell blue2 = row.getCell(4);
            int blue2Name = (int) Integer.parseInt(String.valueOf((int) blue2.getNumericCellValue()));
            Cell redScore = row.getCell(5);
            int rScore = (int) redScore.getNumericCellValue();
            Cell blueScore = row.getCell(6);
            int bScore = (int) blueScore.getNumericCellValue();
            Match match = new Match(currentComp.getCompetitionID(), i - 1, red1Name, red2Name, blue1Name, blue2Name,
                    rScore, bScore, "", "");
            season.addMatch(match);
        }
        try {
            inp.close();
        } catch (IOException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //View info for a match (Sets the values for the detail view below match list)
    //Accessed by the mouse click listener
    private void viewMatchStats(Object matchNum, Object compName) {
        //get the desired competition
        Competition tempComp = season.getCompByName((String) compName);
        if (tempComp != null) {
            //set the fields for the selected match
            Match tempMatch = tempComp.getMatchByNum((int) Integer.parseInt((String) matchNum));
            if (tempMatch != null) {
                Blue1Label.setText(tempMatch.getBlue1ID() + "");
                Blue2Label.setText(tempMatch.getBlue2ID() + "");
                BlueCommentsField.setText(tempMatch.getBlueComments());
                BlueScoreLabel.setText(tempMatch.getBlueTotalScore() + "");
                Red1Label.setText(tempMatch.getRed1ID() + "");
                Red2Label.setText(tempMatch.getRed2ID() + "");
                RedCommentsField.setText(tempMatch.getRedComments());
                RedScoreLabel.setText(tempMatch.getRedTotalScore() + "");
                MatchNumLabel.setText(tempMatch.getMatchNum() + "");
                CompetitionLabel.setText(season.getCompByID(tempMatch.getMatchCompetitionID()).getCompName());
                DateLabel.setText(season.getCompByID(tempMatch.getMatchCompetitionID()).getCompDate());
            }
        }
    }

    //When the edit match window is opened (Match is double clicked) open the edit window and populate the fields witht he current data
    private void editMatch(Object matchNum, Object compID) {
        Competition tempComp = season.getCompByName((String) compID);
        currentMatch = tempComp.getMatchByNum((int) Integer.parseInt((String) matchNum));
        Blue1Field1.setText(currentMatch.getBlue1ID() + "");
        Blue2Field1.setText(currentMatch.getBlue2ID() + "");
        Red1Field1.setText(currentMatch.getRed1ID() + "");
        Red2Field1.setText(currentMatch.getRed2ID() + "");
        BlueScoreField1.setText(currentMatch.getBlueTotalScore() + "");
        RedScoreField1.setText(currentMatch.getRedTotalScore() + "");
        BlueComments1.setText(currentMatch.getBlueComments());
        RedComments1.setText(currentMatch.getRedComments());
        editMatchDialog.setVisible(true);
    }

    //checks the radio buttons on the rank tab for viewing just the current competition or the whole season
    private boolean isCurrentCompSelected() {
        if (compSelection.equals("current")) {
            return true;
        }
        return false;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainWindow().setVisible(true);
            }
        });
    }

    //make sure the season has all the teams it needs to (the ones that are in matches)
    private void checkTeams() {
        ArrayList<Competition> tempComps = season.getCompetitions();
        ArrayList<Integer> compTeams = new ArrayList<Integer>();
        for (Competition comp : tempComps) {
            compTeams = comp.getTeamIDs();
            for (Integer team : compTeams) {
                if (!season.hasTeam(team)) {
                    season.addTeam(new Team(team));
                }
            }
        }
    }

    //update the data displayed in the tabs
    private void updateTabs() {
        //peform data updates based on what tab is selected
        switch (Tabs.getSelectedIndex()) {

        //Team Tab accessed
        case 0:
            updateTeamTab();
            break;

        //Match Tab Accessed
        case 1:
            updateMatchTab();
            break;

        //Rankings tab accessed
        case 2:
            updateRankTab();
            break;

        //There isn't any other option but heres a default anyways
        default:
            break;
        }
    }

    //Update the data on for the team tab
    //Called whenever the team tab is selected or the team list is changed
    private void updateTeamTab() {
        updateTeamMatches();
        //update the list of teams in the season (left side of window)
        ArrayList<Team> tempTeams = season.getTeams();
        teamListData = new String[tempTeams.size()][2];
        for (int i = 0; i < tempTeams.size(); i++) {
            teamListData[i][0] = tempTeams.get(i).getTeamID() + "";
            teamListData[i][1] = tempTeams.get(i).getTeamName();
        }
        TeamTable.setModel(new TeamListTableModel(teamListData));
    }

    //Update the matches tab
    //Called whenever the Matches tab is selected or the match list is changed
    private void updateMatchTab() {
        //make sure all the matches are correctly assigned to teams
        updateTeamMatches();

        //set the data in the match table
        ArrayList<Match> tempMatches = currentComp.getMatches();
        matchesData = new String[tempMatches.size()][11];

        //add data for each row (one row per match)
        for (int i = 0; i < tempMatches.size(); i++) {
            matchesData[i][0] = tempMatches.get(i).getMatchNum() + "";
            matchesData[i][1] = season.getCompByID(tempMatches.get(i).getMatchCompetitionID()).getCompName() + "";
            matchesData[i][2] = season.getCompByID(tempMatches.get(i).getMatchCompetitionID()).getCompDate() + "";
            matchesData[i][3] = tempMatches.get(i).getBlue1ID() + "";
            matchesData[i][4] = tempMatches.get(i).getBlue2ID() + "";
            matchesData[i][5] = "-";
            matchesData[i][6] = tempMatches.get(i).getBlueTotalScore() + "";
            matchesData[i][7] = tempMatches.get(i).getRed1ID() + "";
            matchesData[i][8] = tempMatches.get(i).getRed2ID() + "";
            matchesData[i][9] = "-";
            matchesData[i][10] = tempMatches.get(i).getRedTotalScore() + "";
        }
        MatchTable.setModel(new MatchTableModel(matchesData));
    }

    //update the rankings tab with ranking data
    private void updateRankTab() {
        //make sure all the matches are correctly assigned to teams
        updateTeamMatches();

        //initialize temporary data lists
        ArrayList<Team> tempTeams = season.getTeams();
        TreeMap teamMMRs = new TreeMap<Integer, Integer>();
        ArrayList<Integer> rankTeams = new ArrayList<Integer>();
        ArrayList<Integer> rankMMRs = new ArrayList<Integer>();

        //add the teams and thier mmr to a tree map
        for (Team t : tempTeams) {
            //System.out.println("Team 1st Access");
            if (isCurrentCompSelected()) {
                teamMMRs.put(t.getTeamID(), t.getMMRAtCompetition(currentComp.getCompetitionID()));
            } else {
                teamMMRs.put(t.getTeamID(), t.getMMR());
            }
            //System.out.println("Team MMR Got");
        }

        //sort the teams by MMR
        int highestMMR = Integer.MIN_VALUE;
        int highestTeam = 0000;
        //while teams left in the staging tree map
        while (!teamMMRs.isEmpty()) {
            Iterator teamItr = teamMMRs.keySet().iterator();
            //find the highest
            while (teamItr.hasNext()) {
                Integer team = (Integer) teamItr.next();
                Integer mmr = (Integer) teamMMRs.get(team);
                if (mmr > highestMMR) {
                    highestTeam = team;
                    highestMMR = mmr;
                    //System.out.println("Highest MMR Team Found");
                }
            }
            //Add the highest team's number to a sorted list and remove them from the staging tree map and prepare to start again
            //System.out.println("Removing team and starting over");
            rankTeams.add(highestTeam);
            rankMMRs.add(highestMMR);
            teamMMRs.remove(highestTeam);
            highestMMR = Integer.MIN_VALUE;
            highestTeam = 0000;
        }
        //System.out.println("All teams ranked");

        //Set the data in the rankings table (one row per team)
        rankingsData = new String[rankTeams.size()][9];
        for (int i = 0; i < rankTeams.size(); i++) {
            rankingsData[i][0] = i + 1 + "";
            rankingsData[i][1] = rankTeams.get(i) + "";
            rankingsData[i][2] = rankMMRs.get(i) + "";
            rankingsData[i][3] = season.getTeam(rankTeams.get(i)).getAvgScoreAtCompetition(i) + "";

            //data depending on the radio button selected (Current comp only or whole season)
            if (isCurrentCompSelected()) {
                rankingsData[i][3] = season.getTeam(rankTeams.get(i))
                        .getAvgScoreAtCompetition(currentComp.getCompetitionID()) + "";
                rankingsData[i][4] = season.getTeam(rankTeams.get(i))
                        .getPredictedScoreRangeAtCompetition(currentComp.getCompetitionID()) + "";
                rankingsData[i][5] = season.getTeam(rankTeams.get(i))
                        .getConsistencyAtCompetition(currentComp.getCompetitionID()) + "";
                rankingsData[i][6] = season.getTeam(rankTeams.get(i))
                        .getAvgPartnerMMRAtCompetition(currentComp.getCompetitionID()) + "";
                rankingsData[i][7] = season.getTeam(rankTeams.get(i))
                        .getQPAtCompetition(currentComp.getCompetitionID()) + "";
                rankingsData[i][8] = season.getTeam(rankTeams.get(i))
                        .getRPAtCompetition(currentComp.getCompetitionID()) + "";
            } else {
                rankingsData[i][3] = season.getTeam(rankTeams.get(i)).getAvgScore() + "";
                rankingsData[i][4] = season.getTeam(rankTeams.get(i)).getPredictedScoreRange() + "";
                rankingsData[i][5] = season.getTeam(rankTeams.get(i)).getConsistency() + "";
                rankingsData[i][6] = season.getTeam(rankTeams.get(i)).getAvgPartnerMMR() + "";
                rankingsData[i][7] = season.getTeam(rankTeams.get(i)).getQP() + "";
                rankingsData[i][8] = season.getTeam(rankTeams.get(i)).getRP() + "";
            }
        }
        RankTable.setModel(new RankingsTableModel(rankingsData));
    }

    //Loops through all the teams and makes sure that they have matches 
    //assigned to them that they were in
    private void updateTeamMatches() {
        //make sure all the teams exist
        checkTeams();

        //temporary data list initialization
        ArrayList<Team> tempTeams = season.getTeams();

        //for each team, look through each match, and if it they are in it, make sure they have it in their list
        for (int i = 0; i < tempTeams.size(); i++) {
            ArrayList<Competition> tempComps = season.getCompetitions();
            ArrayList<Integer> tempIDs = new ArrayList<Integer>();
            ArrayList<Match> tempMatches = new ArrayList<Match>();
            Team tempTeam = tempTeams.get(i);
            ArrayList<Match> teamMatches = tempTeam.getMatches();
            //for each competition
            for (Competition comp : tempComps) {
                tempIDs = comp.getTeamIDs();
                //First see if the team in question is even in that competition
                for (Integer id : tempIDs) {
                    if (id == tempTeams.get(i).getTeamID()) {
                        tempMatches = comp.getMatches();
                        //if they are, loom through each match
                        for (Match tempMatch : tempMatches) {
                            //if they are in the match
                            if (tempMatch.contains(tempTeams.get(i).getTeamID())) {
                                //make sure the team has that match
                                if (!teamMatches.contains(tempMatch)) {
                                    tempTeam.addMatch(tempMatch);
                                }
                                tempTeams.set(i, tempTeam);
                            }
                        }
                    }
                }
            }
        }
        //put the updated team list abck into the season
        season.setTeams(tempTeams);
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField Blue1Field;
    private javax.swing.JTextField Blue1Field1;
    private javax.swing.JLabel Blue1Label;
    private javax.swing.JTextField Blue2Field;
    private javax.swing.JTextField Blue2Field1;
    private javax.swing.JLabel Blue2Label;
    private javax.swing.JTextArea BlueComments;
    private javax.swing.JTextArea BlueComments1;
    private javax.swing.JTextArea BlueCommentsField;
    private javax.swing.JTextField BluePenaltiesField;
    private javax.swing.JTextField BluePenaltiesField1;
    private javax.swing.JTextField BlueScoreField;
    private javax.swing.JTextField BlueScoreField1;
    private javax.swing.JLabel BlueScoreLabel;
    private javax.swing.JButton CancelAddDialogButton;
    private javax.swing.JButton CancelAddDialogButton1;
    private javax.swing.JScrollPane CommentsField;
    private javax.swing.JLabel CompetitionLabel;
    private javax.swing.JButton ConfirmAddDialogButton;
    private javax.swing.JButton ConfirmAddDialogButton1;
    private javax.swing.JLabel DateLabel;
    private javax.swing.JButton GoToTeamPage;
    private javax.swing.JLabel MatchNumLabel;
    private javax.swing.JTable MatchTable;
    private javax.swing.JPanel Match_Tab;
    private javax.swing.JTable RankTable;
    private javax.swing.JPanel Rank_Tab;
    private javax.swing.JTextField Red1Field;
    private javax.swing.JTextField Red1Field1;
    private javax.swing.JLabel Red1Label;
    private javax.swing.JTextField Red2Field;
    private javax.swing.JTextField Red2Field1;
    private javax.swing.JLabel Red2Label;
    private javax.swing.JTextArea RedComments;
    private javax.swing.JTextArea RedComments1;
    private javax.swing.JTextArea RedCommentsField;
    private javax.swing.JTextField RedPenaltiesField;
    private javax.swing.JTextField RedPenaltiesField1;
    private javax.swing.JTextField RedScoreField;
    private javax.swing.JTextField RedScoreField1;
    private javax.swing.JLabel RedScoreLabel;
    private javax.swing.JRadioButton SeasonRadio;
    private javax.swing.JTabbedPane Tabs;
    private javax.swing.JTable TeamTable;
    private javax.swing.JPanel Team_Tab;
    private javax.swing.JRadioButton ThisCompRadio;
    private javax.swing.JButton addDialog_addButton;
    private javax.swing.JButton addDialog_cancelButton;
    private javax.swing.JTextField addDialog_teamNameField;
    private javax.swing.JTextField addDialog_teamNumField;
    private javax.swing.JDialog addMatchDialog;
    private javax.swing.JButton addTeamButton;
    private javax.swing.JDialog addTeamDialog;
    private javax.swing.JCheckBox autoBeaconBox;
    private javax.swing.JCheckBox autoClimbersBox;
    private javax.swing.JCheckBox autoHighZoneBox;
    private javax.swing.JCheckBox autoLowZoneBox;
    private javax.swing.JCheckBox autoMidZoneBox;
    private javax.swing.JCheckBox autoNoneBox;
    private javax.swing.JCheckBox autoPartlyBox;
    private javax.swing.JTextField baseTypeField;
    private javax.swing.JSlider climbLevelSlider;
    private javax.swing.JMenuItem compCurrentReplaceOption;
    private javax.swing.JMenuItem compCurrentSelectOption;
    private javax.swing.JMenuItem compExportOption;
    private javax.swing.JMenuItem compImportOption;
    private javax.swing.JMenu compMenu;
    private javax.swing.JMenu currentCompMenu;
    private javax.swing.JMenuItem dataExportMatchesOption;
    private javax.swing.JMenuItem dataExportRankingsOption;
    private javax.swing.JMenuItem dataExportTeamsOption;
    private javax.swing.JMenuItem dataImportMatchesOption;
    private javax.swing.JMenuItem dataImportTeamsOption;
    private javax.swing.JMenu dataMenu;
    private javax.swing.JCheckBox debrisFloorBox;
    private javax.swing.JCheckBox debrisHighBox;
    private javax.swing.JSlider debrisLevelSlider;
    private javax.swing.JCheckBox debrisLowBox;
    private javax.swing.JCheckBox debrisMidBox;
    private javax.swing.JDialog editMatchDialog;
    private javax.swing.JCheckBox hangBox;
    private javax.swing.JSlider hangLevelSlider;
    private javax.swing.JCheckBox highZoneBox;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel23;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JLabel jLabel29;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel30;
    private javax.swing.JLabel jLabel31;
    private javax.swing.JLabel jLabel32;
    private javax.swing.JLabel jLabel33;
    private javax.swing.JLabel jLabel34;
    private javax.swing.JLabel jLabel35;
    private javax.swing.JLabel jLabel36;
    private javax.swing.JLabel jLabel37;
    private javax.swing.JLabel jLabel38;
    private javax.swing.JLabel jLabel39;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel40;
    private javax.swing.JLabel jLabel41;
    private javax.swing.JLabel jLabel42;
    private javax.swing.JLabel jLabel43;
    private javax.swing.JLabel jLabel44;
    private javax.swing.JLabel jLabel45;
    private javax.swing.JLabel jLabel46;
    private javax.swing.JLabel jLabel47;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane10;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JScrollPane jScrollPane8;
    private javax.swing.JScrollPane jScrollPane9;
    private javax.swing.JCheckBox lowZoneBox;
    private javax.swing.JCheckBox midZoneBox;
    private javax.swing.JCheckBox noneEndgameBox;
    private javax.swing.JRadioButton notPushbotRadio;
    private javax.swing.JRadioButton pushbotRadio;
    private javax.swing.JButton removeTeamButton;
    private javax.swing.JTextArea robotDesignField;
    private javax.swing.JMenuItem seasonCloseOption;
    private javax.swing.JMenu seasonMenu;
    private javax.swing.JMenuItem seasonOpenOption;
    private javax.swing.JMenuItem seasonSaveAsOption;
    private javax.swing.JMenuItem seasonSaveOption;
    private javax.swing.JTextField teamAdjectiveField;
    private javax.swing.JTextField teamLocationField;
    private javax.swing.JTable teamMatchesTable;
    private javax.swing.JTextField teamNameField;
    private javax.swing.JLabel teamNameLabel;
    private javax.swing.JTextField teamNumField;
    private javax.swing.JLabel teamNumLabel;
    private javax.swing.JMenuBar topMenuBar;
    // End of variables declaration//GEN-END:variables
}