/*
 * TheGraderView.java
 */

package thegrader;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;

/**
 * The application's main frame.
 */
public class TheGraderView extends FrameView {

    public TheGraderView(SingleFrameApplication app) {
        super(app);
        catweights = new CategoryWeights();
        catweights.setVisible(false);
        gradeditem = new GradedItem();
        gradeditem.setVisible(false);
        gradingscheme = new GradingScheme();
        gradingscheme.setVisible(false);
        finaldistribution = new FinalGradeDistribution();
        finaldistribution.setVisible(false);
        filter = new Filtering();
        filter.setVisible(false);
        newstudent = new NewStudent();
        newstudent.setVisible(false);
        newclass = new NewClass();
        newclass.setVisible(false);
        uploadserver = new UploadToServer();
        uploadserver.setVisible(false);
        addcategories = new AddCategories();
        addcategories.setVisible(false);
        uploadsis = new UploadToSIS();
        uploadsis.setVisible(false);
        updateloginsis = new UpdateLoginSIS();
        updateloginsis.setVisible(false);
        piechart = new PieChart();
        piechart.setVisible(false);
        addcategory = new AddCategories();
        addcategory.setVisible(false);
        bargraph = new BarGraph();
        bargraph.setVisible(false);
        histogram = new Histogram();
        histogram.setVisible(false);
        finalgrades = new FinalGradeDistribution();
        finalgrades.setVisible(false);
        gradescheme = new GradingScheme();
        gradescheme.setVisible(false);
        rostersync = new RosterSync();

        
        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() {

        mainPanel = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        gradeBookTable = new javax.swing.JTable();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTable2 = new javax.swing.JTable();
        stats = new javax.swing.JScrollPane();
        gradeBookTable1 = new javax.swing.JTable();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        newClassMenuItem = new javax.swing.JMenuItem();
        openClassMenuItem = new javax.swing.JMenuItem();
        closeMenuItem = new javax.swing.JMenuItem();
        closeAllMenuItem = new javax.swing.JMenuItem();
        saveClassMenuItem = new javax.swing.JMenuItem();
        saveAsMenuItem = new javax.swing.JMenuItem();
        saveAllMenuItem = new javax.swing.JMenuItem();
        printMenuItem = new javax.swing.JMenuItem();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        editMenu = new javax.swing.JMenu();
        undoMenuItem = new javax.swing.JMenuItem();
        redoMenuItem = new javax.swing.JMenuItem();
        cutMenuItem = new javax.swing.JMenuItem();
        copyMenuItem = new javax.swing.JMenuItem();
        pasteMenuItem = new javax.swing.JMenuItem();
        deleteMenuItem = new javax.swing.JMenuItem();
        gradingSchemesMenuItem = new javax.swing.JMenuItem();
        classMenu = new javax.swing.JMenu();
        sisUpdateMenuItem = new javax.swing.JMenuItem();
        uploadToServerMenu = new javax.swing.JMenu();
        sisUploadItem = new javax.swing.JMenuItem();
        DeptUploadMenuItem = new javax.swing.JMenuItem();
        addStudentMenuItem = new javax.swing.JMenuItem();
        addGIMenuItem = new javax.swing.JMenuItem();
        jMenuItem1 = new javax.swing.JMenuItem();
        setWeightsMenuItem = new javax.swing.JMenuItem();
        finalGradeDistMenuItem = new javax.swing.JMenuItem();
        classPrefMenu = new javax.swing.JMenu();
        classPrefColorCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
        classPrefWeightsCheckBoxMenuItem = new javax.swing.JCheckBoxMenuItem();
        viewMenu = new javax.swing.JMenu();
        columnFilterMenuItem = new javax.swing.JMenuItem();
        graphicsMenu = new javax.swing.JMenu();
        graphicsPieMenuItem = new javax.swing.JMenuItem();
        graphicsHistoMenuItem = new javax.swing.JMenuItem();
        graphicsBarMenuItem = new javax.swing.JMenuItem();
        statisticsMenuItem = new javax.swing.JMenuItem();
        sidebarMenuItem = new javax.swing.JMenuItem();

        mainPanel.setName("mainPanel"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        gradeBookTable.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"1", "Abraham, Jordan", "-", "WV", "Senior", "10", "6", "+", "98", "87", "A", "93"},
                {"2", "Boulais, Destiny", "-", "BUS", "Senior", "8", "7", "+", "78", "54", "D", "64"},
                {"3", "Capellino, Joey", "-", "BUS", "Junior", "9", "8", "-", "67", "64", "D", "65"},
                {"4", "Cerrina, Matt", "-", "CM", "Junior", "5", "6", "+", "87", "87", "B", "87"},
                {"5", "Chang, Cindy", "-", "CSC", "Senior", "7", "6", "+", "82", "94", "A", "91"},
                {"6", "Cheng, Victor", "-", "CSC", "Senior", "4", "7", "+", "65", "52", "F", "57"},
                {"7", "Cooper, Brittany", "-", "LA", "Senior", "6", "8", "-", "83", "89", "B", "86"},
                {"8", "Daly, Niamh", "-", "AGB", "Freshman", "7", "9", "+", "89", "68", "C", "78"},
                {"9", "Ferdig, Natalie", "-", "NUT", "Sophomore", "8", "10", "0", "100", "72", "B", "80"},
                {"10", "Gasch, Jordan", "-", "CSC", "Senior", "4", "5", "+", "53", "69", "D", "63"},
                {"11", "Hallman, Carter", "-", "WV", "Freshman", "6", "6", "+", "75", "48", "F", "57"},
                {"12", "Hawkins, Chase", "-", "BUS", "Sophomore", "7", "8", "+", "69", "66", "D", "67"},
                {"13", "Hirsch, Benjamin", "-", "CSC", "Senior", "9", "6", "+", "71", "72", "C", "71"},
                {"14", "Jalali, Nika", "-", "BUS", "Junior", "10", "7", "-", "78", "87", "B", "85"},
                {"15", "Kuehn, Rachel", "-", "BUS", "Senior", "10", "8", "0", "85", "95", "A", "92"},
                {"16", "McDaniel, Dylan", "-", "ME", "Junior", "1", "9", "+", "93", "91", "A", "92"},
                {"17", "Padon, Brittany", "-", "GRC", "Sophomore", "3", "8", "+", "96", "87", "A", "90"},
                {"18", "Paisano, Nick", "-", "BUS", "Sophomore", "4", "8", "-", "75", "70", "C", "72"},
                {"19", "Robertson, Patrick", "-", "MATH", "Junior", "6", "9", "+", "97", "86", "A", "90"},
                {"20", "Soldner, Michael", "-", "CSC", "Senior", "10", "10", "-", "65", "60", "D", "62"},
                {"21", "Synderman, Kelly", "-", "BUS", "Senior", "7", "6", "+", "86", "75", "C", "80"},
                {"22", "Witherby, Graham", "-", "BUS", "Freshman", "5", "10", "0", "82", "49", "C", "70"},
                {"23", "Wixted, Casey", "-", "BUS", "Senior", "9", "7", "-", "51", "82", "D", "69"},
                {"24", "Wixted, Ryan", "-", "BUS", "Freshman", "9", "8", "+", "38", "83", "F", "58"},
                {"25", "Zych, Marc", "", "CSC", "Senior", "10", "10", null, "85", "71", "C", "78"},
                {"26", null, null, null, null, null, null, null, null, null, null, null},
                {"27", null, null, null, null, null, null, null, null, null, null, null},
                {"28", null, null, null, null, null, null, null, null, null, null, null},
                {"29", null, null, null, null, null, null, null, null, null, null, null},
                {"30", null, null, null, null, null, null, null, null, null, null, null},
                {"31", null, null, null, null, null, null, null, null, null, null, null},
                {"32", null, null, null, null, null, null, null, null, null, null, null},
                {"33", null, null, null, null, null, null, null, null, null, null, null},
                {"34", null, null, null, null, null, null, null, null, null, null, null},
                {"35", null, null, null, null, null, null, null, null, null, null, null},
                {"36", null, null, null, null, null, null, null, null, null, null, null},
                {"37", null, null, null, null, null, null, null, null, null, null, null},
                {"38", null, null, null, null, null, null, null, null, null, null, null},
                {"39", null, null, null, null, null, null, null, null, null, null, null},
                {"40", null, null, null, null, null, null, null, null, null, null, null},
                {"41", null, null, null, null, null, null, null, null, null, null, null},
                {"42", null, null, null, null, null, null, null, null, null, null, null},
                {"43", null, null, null, null, null, null, null, null, null, null, null},
                {"44", null, null, null, null, null, null, null, null, null, null, null},
                {"45", null, null, null, null, null, null, null, null, null, null, null},
                {"46", null, null, null, null, null, null, null, null, null, null, null},
                {"47", null, null, null, null, null, null, null, null, null, null, null},
                {"48", null, null, null, null, null, null, null, null, null, null, null},
                {"49", null, null, null, null, null, null, null, null, null, null, null},
                {"50", null, null, null, null, null, null, null, null, null, null, null},
                {"51", null, null, null, null, null, null, null, null, null, null, null},
                {"52", null, null, null, null, null, null, null, null, null, null, null},
                {"53", null, null, null, null, null, null, null, null, null, null, null},
                {"54", null, null, null, null, null, null, null, null, null, null, null},
                {"55", null, null, null, null, null, null, null, null, null, null, null},
                {"56", null, null, null, null, null, null, null, null, null, null, null},
                {"57", null, null, null, null, null, null, null, null, null, null, null},
                {"58", null, null, null, null, null, null, null, null, null, null, null},
                {"59", null, null, null, null, null, null, null, null, null, null, null},
                {"60", null, null, null, null, null, null, null, null, null, null, null},
                {"61", null, null, null, null, null, null, null, null, null, null, null},
                {"62", null, null, null, null, null, null, null, null, null, null, null},
                {"63", null, null, null, null, null, null, null, null, null, null, null},
                {"64", null, null, null, null, null, null, null, null, null, null, null},
                {"65", null, null, null, null, null, null, null, null, null, null, null},
                {"66", null, null, null, null, null, null, null, null, null, null, null},
                {"67", null, null, null, null, null, null, null, null, null, null, null},
                {"68", null, null, null, null, null, null, null, null, null, null, null},
                {"69", null, null, null, null, null, null, null, null, null, null, null},
                {"70", null, null, null, null, null, null, null, null, null, null, null},
                {"71", null, null, null, null, null, null, null, null, null, null, null},
                {"72", null, null, null, null, null, null, null, null, null, null, null},
                {"73", null, null, null, null, null, null, null, null, null, null, null},
                {"74", null, null, null, null, null, null, null, null, null, null, null},
                {"75", null, null, null, null, null, null, null, null, null, null, null}
            },
            new String [] {
                "#", "Student Name", "EMPLID", "Major", "Standing", "Assignment 1", "Assignment 2", "Homework 1", "Test 1", "Final", "Grade Score", "Grade Letter"
            }
        ));
        gradeBookTable.setName("gradeBookTable"); // NOI18N
        jScrollPane1.setViewportView(gradeBookTable);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(thegrader.TheGraderApp.class).getContext().getResourceMap(TheGraderView.class);
        gradeBookTable.getColumnModel().getColumn(0).setMinWidth(25);
        gradeBookTable.getColumnModel().getColumn(0).setPreferredWidth(25);
        gradeBookTable.getColumnModel().getColumn(0).setMaxWidth(25);
        gradeBookTable.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title0")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(1).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(1).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(1).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title1")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(2).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(2).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(2).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title2")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(3).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(3).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(3).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title3")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(4).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(4).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(4).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title4")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(5).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(5).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(5).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title8")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(6).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(6).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(6).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(6).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title9")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(7).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(7).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(7).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(7).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title10")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(8).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(8).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(8).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(8).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title5")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(9).setMinWidth(100);
        gradeBookTable.getColumnModel().getColumn(9).setPreferredWidth(125);
        gradeBookTable.getColumnModel().getColumn(9).setMaxWidth(100);
        gradeBookTable.getColumnModel().getColumn(9).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title11")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(10).setMinWidth(75);
        gradeBookTable.getColumnModel().getColumn(10).setPreferredWidth(75);
        gradeBookTable.getColumnModel().getColumn(10).setMaxWidth(75);
        gradeBookTable.getColumnModel().getColumn(10).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title6")); // NOI18N
        gradeBookTable.getColumnModel().getColumn(11).setMinWidth(75);
        gradeBookTable.getColumnModel().getColumn(11).setPreferredWidth(75);
        gradeBookTable.getColumnModel().getColumn(11).setMaxWidth(75);
        gradeBookTable.getColumnModel().getColumn(11).setHeaderValue(resourceMap.getString("gradeBookTable.columnModel.title7")); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "null", "Student Info", "In-Class Activities", "Homework", "Exams", "Final Grades"
            }
        ));
        jTable1.setName("jTable1"); // NOI18N
        jScrollPane2.setViewportView(jTable1);
        jTable1.getColumnModel().getColumn(0).setMinWidth(25);
        jTable1.getColumnModel().getColumn(0).setPreferredWidth(25);
        jTable1.getColumnModel().getColumn(0).setMaxWidth(25);
        jTable1.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("jTable1.columnModel.title5")); // NOI18N
        jTable1.getColumnModel().getColumn(1).setMinWidth(400);
        jTable1.getColumnModel().getColumn(1).setPreferredWidth(400);
        jTable1.getColumnModel().getColumn(1).setMaxWidth(400);
        jTable1.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("jTable1.columnModel.title0")); // NOI18N
        jTable1.getColumnModel().getColumn(2).setMinWidth(200);
        jTable1.getColumnModel().getColumn(2).setPreferredWidth(200);
        jTable1.getColumnModel().getColumn(2).setMaxWidth(200);
        jTable1.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("jTable1.columnModel.title1")); // NOI18N
        jTable1.getColumnModel().getColumn(3).setMinWidth(100);
        jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
        jTable1.getColumnModel().getColumn(3).setMaxWidth(100);
        jTable1.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("jTable1.columnModel.title2")); // NOI18N
        jTable1.getColumnModel().getColumn(4).setMinWidth(200);
        jTable1.getColumnModel().getColumn(4).setPreferredWidth(200);
        jTable1.getColumnModel().getColumn(4).setMaxWidth(200);
        jTable1.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("jTable1.columnModel.title3")); // NOI18N
        jTable1.getColumnModel().getColumn(5).setMinWidth(1500);
        jTable1.getColumnModel().getColumn(5).setPreferredWidth(1500);
        jTable1.getColumnModel().getColumn(5).setMaxWidth(1500);
        jTable1.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("jTable1.columnModel.title4")); // NOI18N

        jScrollPane3.setName("jScrollPane3"); // NOI18N

        jTable2.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "CSC 308 - Fall 2010"
            }
        ));
        jTable2.setName("jTable2"); // NOI18N
        jScrollPane3.setViewportView(jTable2);
        jTable2.getColumnModel().getColumn(0).setMinWidth(1500);
        jTable2.getColumnModel().getColumn(0).setPreferredWidth(1500);
        jTable2.getColumnModel().getColumn(0).setMaxWidth(1500);
        jTable2.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("jTable1.columnModel.title4")); // NOI18N

        stats.setName("stats"); // NOI18N
        stats.setVisible(false);

        gradeBookTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"no. of scores", "25", "25", "24", "25", "25", "25", "25"},
                {"range", "1-10", "0-10", "50-100", "38-100", "48-95", "F-A", "58-93"},
                {"mean", "5", "5", "73.2", "71", "72", "C", "72"},
                {"median", "6.96", "7.68", "75", "76.96", "74.4", "C", "75.88"},
                {"std. deviation", "3.4", "4.1", "3.1", "23.1", "18.74", "-", "19.35"}
            },
            new String [] {
                "", "", "", "", "", "", "", ""
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        gradeBookTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_LAST_COLUMN);
        gradeBookTable1.setName("gradeBookTable1"); // NOI18N
        gradeBookTable1.addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentHidden(java.awt.event.ComponentEvent evt) {
                gradeBookTable1ComponentHidden(evt);
            }
        });
        stats.setViewportView(gradeBookTable1);
        gradeBookTable1.getColumnModel().getColumn(0).setPreferredWidth(115);
        gradeBookTable1.getColumnModel().getColumn(0).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title0")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(1).setPreferredWidth(110);
        gradeBookTable1.getColumnModel().getColumn(1).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title1")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(2).setPreferredWidth(115);
        gradeBookTable1.getColumnModel().getColumn(2).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title2")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(3).setPreferredWidth(125);
        gradeBookTable1.getColumnModel().getColumn(3).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title3")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(4).setPreferredWidth(125);
        gradeBookTable1.getColumnModel().getColumn(4).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title4")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(5).setPreferredWidth(125);
        gradeBookTable1.getColumnModel().getColumn(5).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title5")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(6).setPreferredWidth(90);
        gradeBookTable1.getColumnModel().getColumn(6).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title6")); // NOI18N
        gradeBookTable1.getColumnModel().getColumn(7).setPreferredWidth(90);
        gradeBookTable1.getColumnModel().getColumn(7).setHeaderValue(resourceMap.getString("gradeBookTable1.columnModel.title7")); // NOI18N

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 1074, Short.MAX_VALUE)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 1074, Short.MAX_VALUE)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
                            .addGap(0, 0, 0)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 1096, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(mainPanelLayout.createSequentialGroup()
                        .addGap(329, 329, 329)
                        .addComponent(stats, javax.swing.GroupLayout.PREFERRED_SIZE, 756, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(483, Short.MAX_VALUE))
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(mainPanelLayout.createSequentialGroup()
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(6, 6, 6)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 280, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(stats, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(160, Short.MAX_VALUE))
        );

        menuBar.setName("menuBar"); // NOI18N

        fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N
        fileMenu.setName("fileMenu"); // NOI18N

        newClassMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
        newClassMenuItem.setText(resourceMap.getString("newClassMenuItem.text")); // NOI18N
        newClassMenuItem.setName("newClassMenuItem"); // NOI18N
        newClassMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                newClassMenuItemActionPerformed(evt);
            }
        });
        fileMenu.add(newClassMenuItem);

        openClassMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
        openClassMenuItem.setText(resourceMap.getString("openClassMenuItem.text")); // NOI18N
        openClassMenuItem.setName("openClassMenuItem"); // NOI18N
        fileMenu.add(openClassMenuItem);

        closeMenuItem.setText(resourceMap.getString("closeMenuItem.text")); // NOI18N
        closeMenuItem.setName("closeMenuItem"); // NOI18N
        fileMenu.add(closeMenuItem);

        closeAllMenuItem.setText(resourceMap.getString("closeAllMenuItem.text")); // NOI18N
        closeAllMenuItem.setName("closeAllMenuItem"); // NOI18N
        fileMenu.add(closeAllMenuItem);

        saveClassMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        saveClassMenuItem.setText(resourceMap.getString("saveClassMenuItem.text")); // NOI18N
        saveClassMenuItem.setName("saveClassMenuItem"); // NOI18N
        fileMenu.add(saveClassMenuItem);

        saveAsMenuItem.setText(resourceMap.getString("saveAsMenuItem.text")); // NOI18N
        saveAsMenuItem.setName("saveAsMenuItem"); // NOI18N
        fileMenu.add(saveAsMenuItem);

        saveAllMenuItem.setText(resourceMap.getString("saveAllMenuItem.text")); // NOI18N
        saveAllMenuItem.setName("saveAllMenuItem"); // NOI18N
        fileMenu.add(saveAllMenuItem);

        printMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
        printMenuItem.setText(resourceMap.getString("printMenuItem.text")); // NOI18N
        printMenuItem.setName("printMenuItem"); // NOI18N
        fileMenu.add(printMenuItem);

        javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(thegrader.TheGraderApp.class).getContext().getActionMap(TheGraderView.class, this);
        exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
        exitMenuItem.setName("exitMenuItem"); // NOI18N
        fileMenu.add(exitMenuItem);

        menuBar.add(fileMenu);

        editMenu.setText(resourceMap.getString("editMenu.text")); // NOI18N
        editMenu.setName("editMenu"); // NOI18N

        undoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK));
        undoMenuItem.setText(resourceMap.getString("undoMenuItem.text")); // NOI18N
        undoMenuItem.setName("undoMenuItem"); // NOI18N
        editMenu.add(undoMenuItem);

        redoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK));
        redoMenuItem.setText(resourceMap.getString("redoMenuItem.text")); // NOI18N
        redoMenuItem.setName("redoMenuItem"); // NOI18N
        editMenu.add(redoMenuItem);

        cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
        cutMenuItem.setText(resourceMap.getString("cutMenuItem.text")); // NOI18N
        cutMenuItem.setName("cutMenuItem"); // NOI18N
        editMenu.add(cutMenuItem);

        copyMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
        copyMenuItem.setText(resourceMap.getString("copyMenuItem.text")); // NOI18N
        copyMenuItem.setName("copyMenuItem"); // NOI18N
        editMenu.add(copyMenuItem);

        pasteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
        pasteMenuItem.setText(resourceMap.getString("pasteMenuItem.text")); // NOI18N
        pasteMenuItem.setName("pasteMenuItem"); // NOI18N
        editMenu.add(pasteMenuItem);

        deleteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_DELETE, 0));
        deleteMenuItem.setText(resourceMap.getString("deleteMenuItem.text")); // NOI18N
        deleteMenuItem.setName("deleteMenuItem"); // NOI18N
        editMenu.add(deleteMenuItem);

        gradingSchemesMenuItem.setText(resourceMap.getString("gradingSchemesMenuItem.text")); // NOI18N
        gradingSchemesMenuItem.setName("gradingSchemesMenuItem"); // NOI18N
        gradingSchemesMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                gradingSchemesMenuItemActionPerformed(evt);
            }
        });
        editMenu.add(gradingSchemesMenuItem);

        menuBar.add(editMenu);

        classMenu.setText(resourceMap.getString("classMenu.text")); // NOI18N
        classMenu.setName("classMenu"); // NOI18N

        sisUpdateMenuItem.setText(resourceMap.getString("sisUpdateMenuItem.text")); // NOI18N
        sisUpdateMenuItem.setName("sisUpdateMenuItem"); // NOI18N
        sisUpdateMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sisUpdateMenuItemActionPerformed(evt);
            }
        });
        classMenu.add(sisUpdateMenuItem);

        uploadToServerMenu.setText(resourceMap.getString("uploadToServerMenu.text")); // NOI18N

        sisUploadItem.setText(resourceMap.getString("sisUploadItem.text")); // NOI18N
        sisUploadItem.setName("sisUploadItem"); // NOI18N
        sisUploadItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                sisUploadItemActionPerformed(evt);
            }
        });
        uploadToServerMenu.add(sisUploadItem);

        DeptUploadMenuItem.setText(resourceMap.getString("DeptUploadMenuItem.text")); // NOI18N
        DeptUploadMenuItem.setName("DeptUploadMenuItem"); // NOI18N
        DeptUploadMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DeptUploadMenuItemActionPerformed(evt);
            }
        });
        uploadToServerMenu.add(DeptUploadMenuItem);

        classMenu.add(uploadToServerMenu);

        addStudentMenuItem.setText(resourceMap.getString("addStudentMenuItem.text")); // NOI18N
        addStudentMenuItem.setName("addStudentMenuItem"); // NOI18N
        addStudentMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addStudentMenuItemActionPerformed(evt);
            }
        });
        classMenu.add(addStudentMenuItem);

        addGIMenuItem.setText(resourceMap.getString("addGIMenuItem.text")); // NOI18N
        addGIMenuItem.setName("addGIMenuItem"); // NOI18N
        addGIMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                addGIMenuItemActionPerformed(evt);
            }
        });
        classMenu.add(addGIMenuItem);

        jMenuItem1.setText(resourceMap.getString("jMenuItem1.text")); // NOI18N
        jMenuItem1.setName("jMenuItem1"); // NOI18N
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        classMenu.add(jMenuItem1);

        setWeightsMenuItem.setText(resourceMap.getString("setWeightsMenuItem.text")); // NOI18N
        setWeightsMenuItem.setName("setWeightsMenuItem"); // NOI18N
        setWeightsMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                setWeightsMenuItemActionPerformed(evt);
            }
        });
        classMenu.add(setWeightsMenuItem);

        finalGradeDistMenuItem.setText(resourceMap.getString("finalGradeDistMenuItem.text")); // NOI18N
        finalGradeDistMenuItem.setName("finalGradeDistMenuItem"); // NOI18N
        finalGradeDistMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                finalGradeDistMenuItemActionPerformed(evt);
            }
        });
        classMenu.add(finalGradeDistMenuItem);

        classPrefMenu.setText(resourceMap.getString("classPrefMenu.text")); // NOI18N
        classPrefMenu.setName("classPrefMenu"); // NOI18N

        classPrefColorCheckBoxMenuItem.setSelected(false);
        classPrefColorCheckBoxMenuItem.setText(resourceMap.getString("classPrefColorCheckBoxMenuItem.text")); // NOI18N
        classPrefColorCheckBoxMenuItem.setName("classPrefColorCheckBoxMenuItem"); // NOI18N
        classPrefMenu.add(classPrefColorCheckBoxMenuItem);

        classPrefWeightsCheckBoxMenuItem.setSelected(false);
        classPrefWeightsCheckBoxMenuItem.setText(resourceMap.getString("classPrefWeightsCheckBoxMenuItem.text")); // NOI18N
        classPrefWeightsCheckBoxMenuItem.setName("classPrefWeightsCheckBoxMenuItem"); // NOI18N
        classPrefMenu.add(classPrefWeightsCheckBoxMenuItem);

        classMenu.add(classPrefMenu);

        menuBar.add(classMenu);

        viewMenu.setText(resourceMap.getString("viewMenu.text")); // NOI18N

        columnFilterMenuItem.setText(resourceMap.getString("columnFilterMenuItem.text")); // NOI18N
        columnFilterMenuItem.setName("columnFilterMenuItem"); // NOI18N
        columnFilterMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                columnFilterMenuItemActionPerformed(evt);
            }
        });
        viewMenu.add(columnFilterMenuItem);

        graphicsMenu.setText(resourceMap.getString("graphicsMenu.text")); // NOI18N
        graphicsMenu.setName("graphicsMenu"); // NOI18N

        graphicsPieMenuItem.setText(resourceMap.getString("graphicsPieMenuItem.text")); // NOI18N
        graphicsPieMenuItem.setName("graphicsPieMenuItem"); // NOI18N
        graphicsPieMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                graphicsPieMenuItemActionPerformed(evt);
            }
        });
        graphicsMenu.add(graphicsPieMenuItem);

        graphicsHistoMenuItem.setText(resourceMap.getString("graphicsHistoMenuItem.text")); // NOI18N
        graphicsHistoMenuItem.setName("graphicsHistoMenuItem"); // NOI18N
        graphicsHistoMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                graphicsHistoMenuItemActionPerformed(evt);
            }
        });
        graphicsMenu.add(graphicsHistoMenuItem);

        graphicsBarMenuItem.setText(resourceMap.getString("graphicsBarMenuItem.text")); // NOI18N
        graphicsBarMenuItem.setName("graphicsBarMenuItem"); // NOI18N
        graphicsBarMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                graphicsBarMenuItemActionPerformed(evt);
            }
        });
        graphicsMenu.add(graphicsBarMenuItem);

        viewMenu.add(graphicsMenu);

        statisticsMenuItem.setText(resourceMap.getString("statisticsMenuItem.text")); // NOI18N
        statisticsMenuItem.setName("statisticsMenuItem"); // NOI18N
        statisticsMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                statisticsMenuItemActionPerformed(evt);
            }
        });
        viewMenu.add(statisticsMenuItem);

        sidebarMenuItem.setText(resourceMap.getString("sidebarMenuItem.text")); // NOI18N
        sidebarMenuItem.setName("sidebarMenuItem"); // NOI18N
        viewMenu.add(sidebarMenuItem);

        menuBar.add(viewMenu);

        setComponent(mainPanel);
        setMenuBar(menuBar);
    }// </editor-fold>//GEN-END:initComponents

    private void setWeightsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_setWeightsMenuItemActionPerformed
        catweights.setVisible(true);
    }//GEN-LAST:event_setWeightsMenuItemActionPerformed

    private void addGIMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addGIMenuItemActionPerformed
        gradeditem.setVisible(true);
    }//GEN-LAST:event_addGIMenuItemActionPerformed

    private void addStudentMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addStudentMenuItemActionPerformed
        newstudent.setVisible(true);
    }//GEN-LAST:event_addStudentMenuItemActionPerformed

    private void columnFilterMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_columnFilterMenuItemActionPerformed
        filter.setVisible(true);
    }//GEN-LAST:event_columnFilterMenuItemActionPerformed

    private void newClassMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newClassMenuItemActionPerformed
        newclass.setVisible(true);
    }//GEN-LAST:event_newClassMenuItemActionPerformed

    private void sisUpdateMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sisUpdateMenuItemActionPerformed
        updateloginsis.setVisible(true);
    }//GEN-LAST:event_sisUpdateMenuItemActionPerformed

    private void sisUploadItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sisUploadItemActionPerformed
        uploadsis.setVisible(true);
    }//GEN-LAST:event_sisUploadItemActionPerformed

    private void DeptUploadMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DeptUploadMenuItemActionPerformed
        uploadserver.setVisible(true);
    }//GEN-LAST:event_DeptUploadMenuItemActionPerformed

    private void graphicsPieMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_graphicsPieMenuItemActionPerformed
        piechart.setVisible(true);
    }//GEN-LAST:event_graphicsPieMenuItemActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        addcategory.setVisible(true);
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void graphicsBarMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_graphicsBarMenuItemActionPerformed
        bargraph.setVisible(true);
    }//GEN-LAST:event_graphicsBarMenuItemActionPerformed

    private void graphicsHistoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_graphicsHistoMenuItemActionPerformed
        histogram.setVisible(true);
    }//GEN-LAST:event_graphicsHistoMenuItemActionPerformed

    private void finalGradeDistMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_finalGradeDistMenuItemActionPerformed
        finalgrades.setVisible(true);
    }//GEN-LAST:event_finalGradeDistMenuItemActionPerformed

    private void gradingSchemesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_gradingSchemesMenuItemActionPerformed
        gradescheme.setVisible(true);
    }//GEN-LAST:event_gradingSchemesMenuItemActionPerformed

    private void gradeBookTable1ComponentHidden(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_gradeBookTable1ComponentHidden
        // TODO add your handling code here:
}//GEN-LAST:event_gradeBookTable1ComponentHidden

    boolean statVis = false;
    private void statisticsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_statisticsMenuItemActionPerformed
        // TODO add your handling code here:
        if (!statVis){
            statVis = true;
            stats.setVisible(true);
            mainPanel.repaint();
            mainPanel.setVisible(false);
            mainPanel.setVisible(true);
        }
        else{
            statVis = false;
            stats.setVisible(false);
            mainPanel.repaint();
            mainPanel.setVisible(false);
            mainPanel.setVisible(true);
        }
    }//GEN-LAST:event_statisticsMenuItemActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem DeptUploadMenuItem;
    private javax.swing.JMenuItem addGIMenuItem;
    private javax.swing.JMenuItem addStudentMenuItem;
    private javax.swing.JMenu classMenu;
    private javax.swing.JCheckBoxMenuItem classPrefColorCheckBoxMenuItem;
    private javax.swing.JMenu classPrefMenu;
    private javax.swing.JCheckBoxMenuItem classPrefWeightsCheckBoxMenuItem;
    private javax.swing.JMenuItem closeAllMenuItem;
    private javax.swing.JMenuItem closeMenuItem;
    private javax.swing.JMenuItem columnFilterMenuItem;
    private javax.swing.JMenuItem copyMenuItem;
    private javax.swing.JMenuItem cutMenuItem;
    private javax.swing.JMenuItem deleteMenuItem;
    private javax.swing.JMenu editMenu;
    private javax.swing.JMenuItem finalGradeDistMenuItem;
    private javax.swing.JTable gradeBookTable;
    private javax.swing.JTable gradeBookTable1;
    private javax.swing.JMenuItem gradingSchemesMenuItem;
    private javax.swing.JMenuItem graphicsBarMenuItem;
    private javax.swing.JMenuItem graphicsHistoMenuItem;
    private javax.swing.JMenu graphicsMenu;
    private javax.swing.JMenuItem graphicsPieMenuItem;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JMenuItem newClassMenuItem;
    private javax.swing.JMenuItem openClassMenuItem;
    private javax.swing.JMenuItem pasteMenuItem;
    private javax.swing.JMenuItem printMenuItem;
    private javax.swing.JMenuItem redoMenuItem;
    private javax.swing.JMenuItem saveAllMenuItem;
    private javax.swing.JMenuItem saveAsMenuItem;
    private javax.swing.JMenuItem saveClassMenuItem;
    private javax.swing.JMenuItem setWeightsMenuItem;
    private javax.swing.JMenuItem sidebarMenuItem;
    private javax.swing.JMenuItem sisUpdateMenuItem;
    private javax.swing.JMenuItem sisUploadItem;
    private javax.swing.JMenuItem statisticsMenuItem;
    private javax.swing.JScrollPane stats;
    private javax.swing.JMenuItem undoMenuItem;
    private javax.swing.JMenu uploadToServerMenu;
    private javax.swing.JMenu viewMenu;
    // End of variables declaration//GEN-END:variables

    private CategoryWeights catweights;
    private GradedItem gradeditem;
    private GradingScheme gradingscheme;
    private FinalGradeDistribution finaldistribution;
    private Filtering filter;
    private NewStudent newstudent;
    private NewClass newclass;
    private AddCategories addcategories;
    private UpdateLoginSIS updateloginsis;
    private UploadToSIS uploadsis;
    private UploadToServer uploadserver;
    private PieChart piechart;
    private AddCategories addcategory;
    private BarGraph bargraph;
    private Histogram histogram;
    private FinalGradeDistribution finalgrades;
    private GradingScheme gradescheme;
    private RosterSync rostersync;
}