/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * MidRosterSync.java
 *
 * Created on Nov 23, 2009, 2:38:44 AM
 */

package grader.UI.file;

import java.awt.CardLayout;
import javax.swing.JSeparator;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author Greg
 */
public class MidRosterSync extends javax.swing.JDialog {
    private int currentDisplayNum = 1;
    /** Creates new form MidRosterSync */
    public MidRosterSync(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        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();
        authPanel = new javax.swing.JPanel();
        jSeparator2 = new javax.swing.JSeparator();
        authenticateAL = new javax.swing.JLabel();
        optionsAL = new javax.swing.JLabel();
        selectclassesAL = new javax.swing.JLabel();
        mergelistsAL = new javax.swing.JLabel();
        doneAL = new javax.swing.JLabel();
        authLabel1 = new javax.swing.JLabel();
        authLabel2 = new javax.swing.JLabel();
        usernameLabel = new javax.swing.JLabel();
        usernameField = new javax.swing.JTextField();
        passwordLabel = new javax.swing.JLabel();
        passwordField = new javax.swing.JTextField();
        optionsPanel = new javax.swing.JPanel();
        jSeparator3 = new javax.swing.JSeparator();
        authenticateOL = new javax.swing.JLabel();
        optionsOL = new javax.swing.JLabel();
        selectclassesOL = new javax.swing.JLabel();
        mergelistsOL = new javax.swing.JLabel();
        doneOL = new javax.swing.JLabel();
        optionsLabel1 = new javax.swing.JLabel();
        optionsLabel2 = new javax.swing.JLabel();
        defaultsRadio = new javax.swing.JRadioButton();
        radioDef1 = new javax.swing.JLabel();
        radioDef2 = new javax.swing.JLabel();
        manageRadio = new javax.swing.JRadioButton();
        radioDef3 = new javax.swing.JLabel();
        radioDef4 = new javax.swing.JLabel();
        radioDef5 = new javax.swing.JLabel();
        donePanel = new javax.swing.JPanel();
        jSeparator4 = new javax.swing.JSeparator();
        authenticateDL = new javax.swing.JLabel();
        optionsDL = new javax.swing.JLabel();
        selectclassesDL = new javax.swing.JLabel();
        mergelistsDL = new javax.swing.JLabel();
        doneDL = new javax.swing.JLabel();
        doneLabel1 = new javax.swing.JLabel();
        selectPanel = new javax.swing.JPanel();
        jSeparator5 = new javax.swing.JSeparator();
        authenticateSL = new javax.swing.JLabel();
        optionsSL = new javax.swing.JLabel();
        selectedclassesSL = new javax.swing.JLabel();
        mergelistsSL = new javax.swing.JLabel();
        doneSL = new javax.swing.JLabel();
        selectLabel1 = new javax.swing.JLabel();
        selectLabel2 = new javax.swing.JLabel();
        importScrollPane = new javax.swing.JScrollPane();
        cancelButton = new javax.swing.JButton();
        nextButton = new javax.swing.JButton();
        backButton = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JSeparator();
	jTableMerge = new javax.swing.JTable();
	courses = new String[][] {{"CSC 308", "01"},{"CSC 308", "02"},{"CPE 101", "09"}};

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);

        mainPanel.setName("mainPanel"); // NOI18N
        mainPanel.setPreferredSize(new java.awt.Dimension(475, 340));
        mainPanel.setLayout(new java.awt.CardLayout());

        authPanel.setName("authPanel"); // NOI18N
        authPanel.setPreferredSize(new java.awt.Dimension(475, 340));

        jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jSeparator2.setName("jSeparator2"); // NOI18N

        authenticateAL.setFont(new java.awt.Font("Tahoma", 1, 14));
        authenticateAL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        authenticateAL.setText("Authenticate");
        authenticateAL.setName("authenticateAL"); // NOI18N

        optionsAL.setFont(new java.awt.Font("Tahoma", 0, 14));
        optionsAL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        optionsAL.setText("Options");
        optionsAL.setName("optionsAL"); // NOI18N

        selectclassesAL.setFont(new java.awt.Font("Tahoma", 0, 14));
        selectclassesAL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        selectclassesAL.setText("Select Classes");
        selectclassesAL.setName("selectclassesAL"); // NOI18N

        mergelistsAL.setFont(new java.awt.Font("Tahoma", 0, 14));
        mergelistsAL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        mergelistsAL.setText("Merge Lists");
        mergelistsAL.setName("mergelistsAL"); // NOI18N

        doneAL.setFont(new java.awt.Font("Tahoma", 0, 14));
        doneAL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        doneAL.setText("Done");
        doneAL.setName("doneAL"); // NOI18N

        authLabel1.setText("Enter your username and password to authenticate to");
        authLabel1.setName("authLabel1"); // NOI18N

        authLabel2.setText("the SIS server.");
        authLabel2.setName("authLabel2"); // NOI18N

        usernameLabel.setFont(new java.awt.Font("Tahoma", 0, 14));
        usernameLabel.setText("Username");
        usernameLabel.setName("usernameLabel"); // NOI18N

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

        passwordLabel.setFont(new java.awt.Font("Tahoma", 0, 14));
        passwordLabel.setText("Password");
        passwordLabel.setMaximumSize(new java.awt.Dimension(61, 17));
        passwordLabel.setMinimumSize(new java.awt.Dimension(61, 17));
        passwordLabel.setName("passwordLabel"); // NOI18N
        passwordLabel.setPreferredSize(new java.awt.Dimension(61, 17));

        passwordField.setFont(new java.awt.Font("MS Reference Specialty", 0, 10));
        passwordField.setName("passwordField"); // NOI18N

        javax.swing.GroupLayout authPanelLayout = new javax.swing.GroupLayout(authPanel);
        authPanel.setLayout(authPanelLayout);
        authPanelLayout.setHorizontalGroup(
            authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(authPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(authenticateAL, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(doneAL, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(mergelistsAL, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(selectclassesAL, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(optionsAL, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 132, Short.MAX_VALUE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(authLabel1)
                    .addComponent(authLabel2)
                    .addGroup(authPanelLayout.createSequentialGroup()
                        .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(usernameLabel)
                            .addComponent(passwordLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE)
                            .addComponent(usernameField, javax.swing.GroupLayout.DEFAULT_SIZE, 196, Short.MAX_VALUE))))
                .addContainerGap(27, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        authPanelLayout.setVerticalGroup(
            authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(authPanelLayout.createSequentialGroup()
                .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(authPanelLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(authLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(authLabel2)
                        .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(authPanelLayout.createSequentialGroup()
                                .addGap(31, 31, 31)
                                .addComponent(authenticateAL)
                                .addGap(18, 18, 18)
                                .addComponent(optionsAL)
                                .addGap(18, 18, 18)
                                .addComponent(selectclassesAL)
                                .addGap(18, 18, 18)
                                .addComponent(mergelistsAL)
                                .addGap(18, 18, 18)
                                .addComponent(doneAL))
                            .addGroup(authPanelLayout.createSequentialGroup()
                                .addGap(66, 66, 66)
                                .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(usernameLabel))
                                .addGap(52, 52, 52)
                                .addGroup(authPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(passwordLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))))
                .addGap(18, 18, 18))
        );

        mainPanel.add(authPanel, "1");

        optionsPanel.setName("optionsPanel"); // NOI18N
        optionsPanel.setPreferredSize(new java.awt.Dimension(475, 340));

        jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jSeparator3.setAlignmentX(0.3F);
        jSeparator3.setName("jSeparator3"); // NOI18N

        authenticateOL.setFont(new java.awt.Font("Tahoma", 0, 14));
        authenticateOL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        authenticateOL.setText("Authenticate");
        authenticateOL.setMaximumSize(new java.awt.Dimension(89, 17));
        authenticateOL.setMinimumSize(new java.awt.Dimension(89, 17));
        authenticateOL.setName("authenticateOL"); // NOI18N

        optionsOL.setFont(new java.awt.Font("Tahoma", 1, 14));
        optionsOL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        optionsOL.setText("Options");
        optionsOL.setName("optionsOL"); // NOI18N

        selectclassesOL.setFont(new java.awt.Font("Tahoma", 0, 14));
        selectclassesOL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        selectclassesOL.setText("Select Classes");
        selectclassesOL.setName("selectclassesOL"); // NOI18N

        mergelistsOL.setFont(new java.awt.Font("Tahoma", 0, 14));
        mergelistsOL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        mergelistsOL.setText("Merge Lists");
        mergelistsOL.setName("mergelistsOL"); // NOI18N

        doneOL.setFont(new java.awt.Font("Tahoma", 0, 14));
        doneOL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        doneOL.setText("Done");
        doneOL.setName("doneOL"); // NOI18N

        optionsLabel1.setText("Choose wheter to manage conflicts automatically or");
        optionsLabel1.setName("optionsLabel1"); // NOI18N

        optionsLabel2.setText("manually.");
        optionsLabel2.setName("optionsLabel2"); // NOI18N

        defaultsRadio.setFont(new java.awt.Font("Tahoma", 1, 14));
        defaultsRadio.setText("Use all defaults - ");
        defaultsRadio.setName("defaultsRadio"); // NOI18N
        defaultsRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                defaultsRadioActionPerformed(evt);
            }
        });

        radioDef1.setText("Gradebook information");
        radioDef1.setName("radioDef1"); // NOI18N

        radioDef2.setText("will be used to override any SIS conflicts.");
        radioDef2.setName("radioDef2"); // NOI18N

        manageRadio.setFont(new java.awt.Font("Tahoma", 1, 14));
        manageRadio.setText("Manage manually - ");
        manageRadio.setName("manageRadio"); // NOI18N
        manageRadio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                manageRadioActionPerformed(evt);
            }
        });

        radioDef3.setText("Gradebook and SIS");
        radioDef3.setName("radioDef3"); // NOI18N

        radioDef4.setText("conflicts can be managed on a case by case");
        radioDef4.setName("radioDef4"); // NOI18N

        radioDef5.setText("basis.");
        radioDef5.setName("radioDef5"); // NOI18N

        javax.swing.GroupLayout optionsPanelLayout = new javax.swing.GroupLayout(optionsPanel);
        optionsPanel.setLayout(optionsPanelLayout);
        optionsPanelLayout.setHorizontalGroup(
            optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(optionsPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(doneOL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(mergelistsOL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(selectclassesOL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(optionsOL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(authenticateOL, javax.swing.GroupLayout.DEFAULT_SIZE, 132, Short.MAX_VALUE))
                .addGap(18, 18, 18)
                .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(optionsLabel1)
                    .addComponent(optionsLabel2)
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addComponent(defaultsRadio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(radioDef1))
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addComponent(manageRadio)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(radioDef3))
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addComponent(radioDef2))
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addGap(21, 21, 21)
                        .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(radioDef5)
                            .addComponent(radioDef4))))
                .addContainerGap(38, Short.MAX_VALUE))
        );
        optionsPanelLayout.setVerticalGroup(
            optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(optionsPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(optionsLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(optionsLabel2)
                .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addGap(29, 29, 29)
                        .addComponent(authenticateOL, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(optionsOL)
                        .addGap(18, 18, 18)
                        .addComponent(selectclassesOL)
                        .addGap(18, 18, 18)
                        .addComponent(mergelistsOL)
                        .addGap(18, 18, 18)
                        .addComponent(doneOL))
                    .addGroup(optionsPanelLayout.createSequentialGroup()
                        .addGap(59, 59, 59)
                        .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(defaultsRadio)
                            .addComponent(radioDef1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(radioDef2)
                        .addGap(35, 35, 35)
                        .addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(manageRadio)
                            .addComponent(radioDef3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(radioDef4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(radioDef5))))
        );

        mainPanel.add(optionsPanel, "2");

        donePanel.setName("donePanel"); // NOI18N
        donePanel.setPreferredSize(new java.awt.Dimension(475, 340));

        jSeparator4.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jSeparator4.setAlignmentX(0.3F);
        jSeparator4.setName("jSeparator4"); // NOI18N

        authenticateDL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        authenticateDL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        authenticateDL.setText("Authenticate");
        authenticateDL.setMaximumSize(new java.awt.Dimension(89, 17));
        authenticateDL.setMinimumSize(new java.awt.Dimension(89, 17));
        authenticateDL.setName("authenticateDL"); // NOI18N

        optionsDL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        optionsDL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        optionsDL.setText("Options");
        optionsDL.setName("optionsDL"); // NOI18N

        selectclassesDL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        selectclassesDL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        selectclassesDL.setText("Select Classes");
        selectclassesDL.setName("selectclassesDL"); // NOI18N

        mergelistsDL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        mergelistsDL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        mergelistsDL.setText("Merge Lists");
        mergelistsDL.setName("mergelistsDL"); // NOI18N

        doneDL.setFont(new java.awt.Font("Tahoma 14", 1, 14));
        doneDL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        doneDL.setText("Done");
        doneDL.setName("doneDL"); // NOI18N

        doneLabel1.setText("The roster has been successfully synchronized.");
        doneLabel1.setName("doneLabel1"); // NOI18N

        javax.swing.GroupLayout donePanelLayout = new javax.swing.GroupLayout(donePanel);
        donePanel.setLayout(donePanelLayout);
        donePanelLayout.setHorizontalGroup(
            donePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(donePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(donePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(doneDL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(mergelistsDL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(selectclassesDL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(optionsDL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(authenticateDL, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(doneLabel1)
                .addContainerGap(55, Short.MAX_VALUE))
        );
        donePanelLayout.setVerticalGroup(
            donePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGroup(donePanelLayout.createSequentialGroup()
                .addGap(74, 74, 74)
                .addComponent(authenticateDL, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(optionsDL)
                .addGap(18, 18, 18)
                .addComponent(selectclassesDL)
                .addGap(18, 18, 18)
                .addComponent(mergelistsDL)
                .addGap(18, 18, 18)
                .addComponent(doneDL))
            .addGroup(donePanelLayout.createSequentialGroup()
                .addGap(156, 156, 156)
                .addComponent(doneLabel1))
        );

        mainPanel.add(donePanel, "4");

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

        jSeparator5.setOrientation(javax.swing.SwingConstants.VERTICAL);
        jSeparator5.setAlignmentX(0.3F);
        jSeparator5.setName("jSeparator5"); // NOI18N

        authenticateSL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        authenticateSL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        authenticateSL.setText("Authenticate");
        authenticateSL.setMaximumSize(new java.awt.Dimension(89, 17));
        authenticateSL.setMinimumSize(new java.awt.Dimension(89, 17));
        authenticateSL.setName("authenticateSL"); // NOI18N

        optionsSL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        optionsSL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        optionsSL.setText("Options");
        optionsSL.setName("optionsSL"); // NOI18N

        selectedclassesSL.setFont(new java.awt.Font("Tahoma 14", 1, 14));
        selectedclassesSL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        selectedclassesSL.setText("Select Classes");
        selectedclassesSL.setName("selectedclassesSL"); // NOI18N

        mergelistsSL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        mergelistsSL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        mergelistsSL.setText("Merge Lists");
        mergelistsSL.setName("mergelistsSL"); // NOI18N

        doneSL.setFont(new java.awt.Font("Tahoma 14", 0, 14));
        doneSL.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        doneSL.setText("Done");
        doneSL.setName("doneSL"); // NOI18N

        selectLabel1.setText("Select the classes from the gradebook that you want");
        selectLabel1.setName("selectLabel1"); // NOI18N

        selectLabel2.setText("to synchronize.");
        selectLabel2.setName("selectLabel2"); // NOI18N

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

        initTable();
        importScrollPane = new JScrollPane(jTableMerge);
	

        javax.swing.GroupLayout selectPanelLayout = new javax.swing.GroupLayout(selectPanel);
        selectPanel.setLayout(selectPanelLayout);
        selectPanelLayout.setHorizontalGroup(
            selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(selectPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(doneSL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(mergelistsSL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(selectedclassesSL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(optionsSL, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(authenticateSL, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(importScrollPane)
                    .addComponent(selectLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(selectLabel2))
                .addContainerGap(32, Short.MAX_VALUE))
        );
        selectPanelLayout.setVerticalGroup(
            selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(selectPanelLayout.createSequentialGroup()
                .addGroup(selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(selectPanelLayout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(selectLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(selectLabel2)
                        .addGroup(selectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(selectPanelLayout.createSequentialGroup()
                                .addGap(29, 29, 29)
                                .addComponent(authenticateSL, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(optionsSL)
                                .addGap(18, 18, 18)
                                .addComponent(selectedclassesSL)
                                .addGap(18, 18, 18)
                                .addComponent(mergelistsSL)
                                .addGap(18, 18, 18)
                                .addComponent(doneSL))
                            .addGroup(selectPanelLayout.createSequentialGroup()
                                .addGap(18, 18, 18)
                                .addComponent(importScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 249, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        mainPanel.add(selectPanel, "3");

        cancelButton.setText("Cancel");
        cancelButton.setName("cancelButton"); // NOI18N
        cancelButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelButtonActionPerformed(evt);
            }
        });

        nextButton.setText("Next >");
        nextButton.setName("nextButton"); // NOI18N
        nextButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nextButtonActionPerformed(evt);
            }
        });

        backButton.setText("< Back");
        backButton.setEnabled(false);
        backButton.setName("backButton"); // NOI18N
        backButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                backButtonActionPerformed(evt);
            }
        });

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

        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()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(backButton)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(nextButton)
                        .addGap(18, 18, 18)
                        .addComponent(cancelButton))
                    .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 455, Short.MAX_VALUE))
                .addContainerGap())
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(357, Short.MAX_VALUE)
                .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cancelButton)
                    .addComponent(nextButton)
                    .addComponent(backButton))
                .addContainerGap())
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(mainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(67, Short.MAX_VALUE)))
        );

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

    private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextButtonActionPerformed
        CardLayout cl = (CardLayout)(mainPanel.getLayout());
        String card;

        if (manageRadio.isSelected() && currentDisplayNum == 2) {
            currentDisplayNum = 3;
            card = String.valueOf(currentDisplayNum);
            jTableMerge.setValueAt(false, 0,2);
            jTableMerge.setValueAt(false, 1,2);
            jTableMerge.setValueAt(false, 2,2);
        } else if(defaultsRadio.isSelected()){
            currentDisplayNum = 4;
            card = String.valueOf(currentDisplayNum);
        }else{
            card = String.valueOf(++currentDisplayNum);
        }
        backButton.setEnabled(true);

        if(currentDisplayNum == 2) {
            System.out.println("Going to screen two...");
        } else if (currentDisplayNum == 4) {
            nextButton.setText("Finish");
            System.out.println("Going to screen three...");
        } else if (currentDisplayNum == 5) {
            dispose();
            resetWizard();
            System.out.println("Import complete.");
        }

        cl.show(mainPanel, card);
    }//GEN-LAST:event_nextButtonActionPerformed

    private void backButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_backButtonActionPerformed
        CardLayout cl = (CardLayout)(mainPanel.getLayout());
        String card = String.valueOf(--currentDisplayNum);
        if (currentDisplayNum == 1) {
            backButton.setEnabled(false);
            resetRadios();
            System.out.println("Going to screen one...");
        } else if (currentDisplayNum == 2) {
            nextButton.setText("Next >");
            System.out.println("Going to screen two...");
        } else if (currentDisplayNum == 3) {
            System.out.println("Going to screen three...");
        }
        
        cl.show(mainPanel, card);
    }//GEN-LAST:event_backButtonActionPerformed

    private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
        dispose();
        resetWizard();
    }//GEN-LAST:event_cancelButtonActionPerformed

    private void manageRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_manageRadioActionPerformed
        manageRadio.setSelected(true);
        defaultsRadio.setSelected(false);
        
    }//GEN-LAST:event_manageRadioActionPerformed

    private void defaultsRadioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_defaultsRadioActionPerformed
        defaultsRadio.setSelected(true);
        manageRadio.setSelected(false);
        
    }//GEN-LAST:event_defaultsRadioActionPerformed

    private void resetRadios() {
        defaultsRadio.setSelected(false);
        manageRadio.setSelected(false);
    }

    private void resetWizard() {
        currentDisplayNum = 1;
        nextButton.setText("Next");
        backButton.setEnabled(false);
        CardLayout cl = (CardLayout)(mainPanel.getLayout());
        String card = String.valueOf(currentDisplayNum);
        cl.show(mainPanel, card);
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                MidRosterSync dialog = new MidRosterSync(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent e) {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    private void initTable() {
        jTableMerge = new JTable(new ImportModel());
        jTableMerge.setRowSelectionAllowed(false);
        jTableMerge.setColumnSelectionAllowed(false);
        jTableMerge.setCellSelectionEnabled(false);
    }


    class ImportModel extends AbstractTableModel {
        private String[] cols = {"Course", "Section", "Merge"};
        private Object[][] data = {
            {courses[0][0], courses[0][1], new Boolean(false)},
            {courses[1][0], courses[1][1], new Boolean(false)},
            {courses[2][0], courses[2][1], new Boolean(false)},
        };

        public boolean isCellEditable(int row, int col) {
            return (col == 2) ? true : false;
        }

        public int getColumnCount() {
            return cols.length;
        }

        public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return cols[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            fireTableCellUpdated(row, col);
        }

}
    class SummaryModel extends AbstractTableModel {
        private String[] cols = {"Courses"};
        private Object[][] data = {{""}, {""}};

        public int getColumnCount() {
            return cols.length;
        }

        public int getRowCount() {
            return data.length;
        }

        public String getColumnName(int col) {
            return cols[col];
        }

        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }

        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            fireTableCellUpdated(row, col);
        }
}

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel authLabel1;
    private javax.swing.JLabel authLabel2;
    private javax.swing.JPanel authPanel;
    private javax.swing.JLabel authenticateAL;
    private javax.swing.JLabel authenticateDL;
    private javax.swing.JLabel authenticateOL;
    private javax.swing.JLabel authenticateSL;
    private javax.swing.JButton backButton;
    private javax.swing.JButton cancelButton;
    private javax.swing.JRadioButton defaultsRadio;
    private javax.swing.JLabel doneAL;
    private javax.swing.JLabel doneDL;
    private javax.swing.JLabel doneLabel1;
    private javax.swing.JLabel doneOL;
    private javax.swing.JPanel donePanel;
    private javax.swing.JLabel doneSL;
    private javax.swing.JScrollPane importScrollPane;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JSeparator jSeparator2;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JSeparator jSeparator4;
    private javax.swing.JSeparator jSeparator5;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JRadioButton manageRadio;
    private javax.swing.JLabel mergelistsAL;
    private javax.swing.JLabel mergelistsDL;
    private javax.swing.JLabel mergelistsOL;
    private javax.swing.JLabel mergelistsSL;
    private javax.swing.JButton nextButton;
    private javax.swing.JLabel optionsAL;
    private javax.swing.JLabel optionsDL;
    private javax.swing.JLabel optionsLabel1;
    private javax.swing.JLabel optionsLabel2;
    private javax.swing.JLabel optionsOL;
    private javax.swing.JPanel optionsPanel;
    private javax.swing.JLabel optionsSL;
    private javax.swing.JTextField passwordField;
    private javax.swing.JLabel passwordLabel;
    private javax.swing.JLabel radioDef1;
    private javax.swing.JLabel radioDef2;
    private javax.swing.JLabel radioDef3;
    private javax.swing.JLabel radioDef4;
    private javax.swing.JLabel radioDef5;
    private javax.swing.JLabel selectLabel1;
    private javax.swing.JLabel selectLabel2;
    private javax.swing.JPanel selectPanel;
    private javax.swing.JLabel selectclassesAL;
    private javax.swing.JLabel selectclassesDL;
    private javax.swing.JLabel selectclassesOL;
    private javax.swing.JLabel selectedclassesSL;
    private javax.swing.JTextField usernameField;
    private javax.swing.JLabel usernameLabel;
    private javax.swing.JTable jTableMerge;
    private String courses[][];
    // End of variables declaration//GEN-END:variables

}