import java.awt.CardLayout;
import java.awt.Font;
import javax.swing.JLabel;

/*
 * TestGenerationWizard.java
 *
 * Created on October 20, 2003, 9:53 PM
 */

/**
 *
 * @author  Matt
 */
public class TestGenerationWizard extends javax.swing.JFrame {
    final private JLabel[] stepLabels;
    final private Font origFont, italFont;
    private int currentStep = 0;
    
    /** Creates new form TestGenerationWizard */
    public TestGenerationWizard() {
        initComponents();
        
        stepLabels = new JLabel[] {stepOneLabel, stepTwoLabel, stepThreeLabel, 
                stepFourLabel};
                
        for (int i = 1; i < stepLabels.length; i++) {
            stepLabels[i].setVisible(false);
        }
                
        origFont = stepLabels[0].getFont();
        italFont = new Font(origFont.getName(), origFont.getStyle() 
                | Font.ITALIC, origFont.getSize());
                
        stepLabels[0].setFont(italFont);
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {//GEN-BEGIN:initComponents
        java.awt.GridBagConstraints gridBagConstraints;

        mainPanel = new javax.swing.JPanel();
        stepListPanel = new javax.swing.JPanel();
        innerStepListPanel = new javax.swing.JPanel();
        stepsLabel = new javax.swing.JLabel();
        stepOneLabel = new javax.swing.JLabel();
        stepTwoLabel = new javax.swing.JLabel();
        stepThreeLabel = new javax.swing.JLabel();
        stepFourLabel = new javax.swing.JLabel();
        stepContentPanel = new javax.swing.JPanel();
        stepOne = new javax.swing.JPanel();
        testNameLabel = new javax.swing.JLabel();
        testNameField = new javax.swing.JTextField();
        modeSelectionLabel = new javax.swing.JLabel();
        jRadioButton1 = new javax.swing.JRadioButton();
        jRadioButton2 = new javax.swing.JRadioButton();
        jLabel1 = new javax.swing.JLabel();
        jComboBox1 = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        stepTwo = new javax.swing.JPanel();
        classSelectionPanel = new javax.swing.JPanel();
        excludedLabel = new javax.swing.JLabel();
        includedLabel = new javax.swing.JLabel();
        allRightButton = new javax.swing.JButton();
        oneRightButton = new javax.swing.JButton();
        oneLeftButton = new javax.swing.JButton();
        allLeftButton = new javax.swing.JButton();
        availablePane = new javax.swing.JScrollPane();
        availableList = new javax.swing.JList();
        includedPane = new javax.swing.JScrollPane();
        includedList = new javax.swing.JList();
        stepTwoDescriptionLabel = new javax.swing.JLabel();
        stepThree = new javax.swing.JPanel();
        topicSelectionPanel = new javax.swing.JPanel();
        excludedLabel2 = new javax.swing.JLabel();
        includedLabel2 = new javax.swing.JLabel();
        allRightButton2 = new javax.swing.JButton();
        oneRightButton2 = new javax.swing.JButton();
        oneLeftButton2 = new javax.swing.JButton();
        allLeftButton2 = new javax.swing.JButton();
        availablePane2 = new javax.swing.JScrollPane();
        availableList2 = new javax.swing.JList();
        includedPane2 = new javax.swing.JScrollPane();
        includedList2 = new javax.swing.JList();
        advancedButton2 = new javax.swing.JButton();
        stepThreeDescriptionLabel = new javax.swing.JLabel();
        stepFour = new javax.swing.JPanel();
        lengthLabel = new javax.swing.JLabel();
        lengthField = new javax.swing.JTextField();
        averageDifficultyLabel = new javax.swing.JLabel();
        averageDifficultyField = new javax.swing.JTextField();
        allowedDifficultiesLabel = new javax.swing.JLabel();
        allowedDifficultiesField = new javax.swing.JTextField();
        typeSelectionPanel = new javax.swing.JPanel();
        selectTypesLabel = new javax.swing.JLabel();
        advancedPanel = new javax.swing.JPanel();
        advancedTypesButton = new javax.swing.JButton();
        typeCheckingPanel = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextField6 = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTextField5 = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jTextField8 = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        jTextField7 = new javax.swing.JTextField();
        buttonPanel = new javax.swing.JPanel();
        cancelButton = new javax.swing.JButton();
        previousButton = new javax.swing.JButton();
        nextButton = new javax.swing.JButton();
        finishButton = new javax.swing.JButton();

        setTitle("Test Generation Wizard");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        mainPanel.setLayout(new java.awt.BorderLayout());

        mainPanel.setPreferredSize(new java.awt.Dimension(550, 300));
        stepListPanel.setLayout(new java.awt.BorderLayout());

        stepListPanel.setBackground(new java.awt.Color(255, 255, 255));
        stepListPanel.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.RAISED));
        innerStepListPanel.setLayout(new java.awt.GridBagLayout());

        innerStepListPanel.setBackground(new java.awt.Color(255, 255, 255));
        stepsLabel.setText("Steps");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 15);
        innerStepListPanel.add(stepsLabel, gridBagConstraints);

        stepOneLabel.setText("1. Enter test name");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 10);
        innerStepListPanel.add(stepOneLabel, gridBagConstraints);

        stepTwoLabel.setText("2. Select classes");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        innerStepListPanel.add(stepTwoLabel, gridBagConstraints);

        stepThreeLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        stepThreeLabel.setText("3. Select topics");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        innerStepListPanel.add(stepThreeLabel, gridBagConstraints);

        stepFourLabel.setText("4. Specify test length");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridy = 6;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        innerStepListPanel.add(stepFourLabel, gridBagConstraints);

        stepListPanel.add(innerStepListPanel, java.awt.BorderLayout.NORTH);

        mainPanel.add(stepListPanel, java.awt.BorderLayout.WEST);

        stepContentPanel.setLayout(new java.awt.CardLayout());

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

        testNameLabel.setText("Enter the new test name:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepOne.add(testNameLabel, gridBagConstraints);

        testNameField.setText("First Midterm");
        testNameField.setPreferredSize(new java.awt.Dimension(175, 20));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepOne.add(testNameField, gridBagConstraints);

        modeSelectionLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        modeSelectionLabel.setText("Select a test generation mode");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 0);
        stepOne.add(modeSelectionLabel, gridBagConstraints);

        jRadioButton1.setText("Automatic test generation");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 15, 0, 0);
        stepOne.add(jRadioButton1, gridBagConstraints);

        jRadioButton2.setText("Manual test generation");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 15, 0, 0);
        stepOne.add(jRadioButton2, gridBagConstraints);

        jLabel1.setText("Enter the class of the test:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepOne.add(jLabel1, gridBagConstraints);

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "[none]", "CSC101", "CSC102", "CSC103", "CPE205", "CSC300" }));
        jComboBox1.setSelectedIndex(4);
        jComboBox1.setPreferredSize(new java.awt.Dimension(175, 25));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepOne.add(jComboBox1, gridBagConstraints);

        jLabel2.setText("Total point value:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 0);
        stepOne.add(jLabel2, gridBagConstraints);

        jTextField1.setText("100");
        jTextField1.setPreferredSize(new java.awt.Dimension(175, 20));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepOne.add(jTextField1, gridBagConstraints);

        stepContentPanel.add(stepOne, "card2");

        stepTwo.setLayout(new java.awt.BorderLayout());

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

        excludedLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        excludedLabel.setText("Excluded");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weighty = 0.5;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        classSelectionPanel.add(excludedLabel, gridBagConstraints);

        includedLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        includedLabel.setText("Incuded");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        classSelectionPanel.add(includedLabel, gridBagConstraints);

        allRightButton.setText(">>");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weightx = 1.5;
        gridBagConstraints.weighty = 1.0;
        classSelectionPanel.add(allRightButton, gridBagConstraints);

        oneRightButton.setText(">");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        classSelectionPanel.add(oneRightButton, gridBagConstraints);

        oneLeftButton.setText("<");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        classSelectionPanel.add(oneLeftButton, gridBagConstraints);

        allLeftButton.setText("<<");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.5;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        classSelectionPanel.add(allLeftButton, gridBagConstraints);

        availableList.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "CSC101", "CSC102", "CSC103", "CSC300" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        availableList.setPreferredSize(new java.awt.Dimension(100, 300));
        availablePane.setViewportView(availableList);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 3.0;
        gridBagConstraints.weighty = 6.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 10);
        classSelectionPanel.add(availablePane, gridBagConstraints);

        includedList.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "CPE205" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        includedList.setPreferredSize(new java.awt.Dimension(100, 300));
        includedPane.setViewportView(includedList);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 3.0;
        gridBagConstraints.weighty = 6.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 10);
        classSelectionPanel.add(includedPane, gridBagConstraints);

        stepTwo.add(classSelectionPanel, java.awt.BorderLayout.CENTER);

        stepTwoDescriptionLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        stepTwoDescriptionLabel.setText("Select which classes to include in the test");
        stepTwo.add(stepTwoDescriptionLabel, java.awt.BorderLayout.NORTH);

        stepContentPanel.add(stepTwo, "card4");

        stepThree.setLayout(new java.awt.BorderLayout());

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

        excludedLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        excludedLabel2.setText("Excluded");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weighty = 0.5;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        topicSelectionPanel.add(excludedLabel2, gridBagConstraints);

        includedLabel2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        includedLabel2.setText("Incuded");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        topicSelectionPanel.add(includedLabel2, gridBagConstraints);

        allRightButton2.setText(">>");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weightx = 1.5;
        gridBagConstraints.weighty = 1.0;
        topicSelectionPanel.add(allRightButton2, gridBagConstraints);

        oneRightButton2.setText(">");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
        topicSelectionPanel.add(oneRightButton2, gridBagConstraints);

        oneLeftButton2.setText("<");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        topicSelectionPanel.add(oneLeftButton2, gridBagConstraints);

        allLeftButton2.setText("<<");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.weightx = 1.5;
        gridBagConstraints.weighty = 1.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        topicSelectionPanel.add(allLeftButton2, gridBagConstraints);

        availableList2.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "RSL", "Definitions" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        availableList2.setPreferredSize(new java.awt.Dimension(100, 300));
        availablePane2.setViewportView(availableList2);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 3.0;
        gridBagConstraints.weighty = 6.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 10);
        topicSelectionPanel.add(availablePane2, gridBagConstraints);

        includedList2.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Design", "Requirements" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        includedList2.setPreferredSize(new java.awt.Dimension(100, 300));
        includedPane2.setViewportView(includedList2);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 3.0;
        gridBagConstraints.weighty = 6.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 10, 10);
        topicSelectionPanel.add(includedPane2, gridBagConstraints);

        advancedButton2.setText("Advanced...");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.gridwidth = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
        topicSelectionPanel.add(advancedButton2, gridBagConstraints);

        stepThree.add(topicSelectionPanel, java.awt.BorderLayout.CENTER);

        stepThreeDescriptionLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        stepThreeDescriptionLabel.setText("Select which topics to include in the test");
        stepThree.add(stepThreeDescriptionLabel, java.awt.BorderLayout.NORTH);

        stepContentPanel.add(stepThree, "card5");

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

        lengthLabel.setText("Length of test in minutes:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
        stepFour.add(lengthLabel, gridBagConstraints);

        lengthField.setText("45-50");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 0);
        stepFour.add(lengthField, gridBagConstraints);

        averageDifficultyLabel.setText("Average difficulty:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
        stepFour.add(averageDifficultyLabel, gridBagConstraints);

        averageDifficultyField.setText("6-8");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 0, 0);
        stepFour.add(averageDifficultyField, gridBagConstraints);

        allowedDifficultiesLabel.setText("Allowed difficulties:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        stepFour.add(allowedDifficultiesLabel, gridBagConstraints);

        allowedDifficultiesField.setText("2-9");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
        stepFour.add(allowedDifficultiesField, gridBagConstraints);

        typeSelectionPanel.setLayout(new java.awt.BorderLayout());

        selectTypesLabel.setText("Specify the quantity of each question type to include");
        typeSelectionPanel.add(selectTypesLabel, java.awt.BorderLayout.NORTH);

        advancedPanel.setLayout(new java.awt.BorderLayout());

        advancedTypesButton.setText("Point Value of Each Section...");
        advancedPanel.add(advancedTypesButton, java.awt.BorderLayout.EAST);

        typeSelectionPanel.add(advancedPanel, java.awt.BorderLayout.SOUTH);

        typeCheckingPanel.setLayout(new java.awt.GridLayout(7, 2, 5, 0));

        jLabel3.setText("True/false:");
        typeCheckingPanel.add(jLabel3);

        jTextField2.setText("10");
        typeCheckingPanel.add(jTextField2);

        jLabel4.setText("Multiple choice:");
        typeCheckingPanel.add(jLabel4);

        jTextField3.setText("20");
        typeCheckingPanel.add(jTextField3);

        jLabel5.setText("Matching:");
        typeCheckingPanel.add(jLabel5);

        jTextField4.setText("2");
        typeCheckingPanel.add(jTextField4);

        jLabel6.setText("Fill-in-the-blank:");
        typeCheckingPanel.add(jLabel6);

        jTextField6.setText("5");
        typeCheckingPanel.add(jTextField6);

        jLabel7.setText("Short response:");
        typeCheckingPanel.add(jLabel7);

        jTextField5.setText("2");
        typeCheckingPanel.add(jTextField5);

        jLabel8.setText("Essay:");
        typeCheckingPanel.add(jLabel8);

        typeCheckingPanel.add(jTextField8);

        jLabel9.setText("Programming:");
        typeCheckingPanel.add(jLabel9);

        typeCheckingPanel.add(jTextField7);

        typeSelectionPanel.add(typeCheckingPanel, java.awt.BorderLayout.CENTER);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridwidth = 2;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        stepFour.add(typeSelectionPanel, gridBagConstraints);

        stepContentPanel.add(stepFour, "card6");

        mainPanel.add(stepContentPanel, java.awt.BorderLayout.CENTER);

        getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);

        buttonPanel.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));

        buttonPanel.setAlignmentX(1.0F);
        cancelButton.setText("Cancel");
        buttonPanel.add(cancelButton);

        previousButton.setText("< Previous");
        buttonPanel.add(previousButton);

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

        buttonPanel.add(nextButton);

        finishButton.setText("Finish");
        finishButton.setOpaque(false);
        buttonPanel.add(finishButton);

        getContentPane().add(buttonPanel, java.awt.BorderLayout.SOUTH);

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

    private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextButtonActionPerformed
        // Add your handling code here:
        if (currentStep + 1 == stepLabels.length) {
            return;
        }
        
        stepLabels[currentStep++].setFont(origFont);
        if (!stepLabels[currentStep].isVisible()) {
            for (int i = currentStep; i < stepLabels.length; i++) {
                stepLabels[i].setVisible(true);
            }
        }
        stepLabels[currentStep].setFont(italFont);
                
        ((CardLayout)stepContentPanel.getLayout()).next(stepContentPanel);
    }//GEN-LAST:event_nextButtonActionPerformed
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
        System.exit(0);
    }//GEN-LAST:event_exitForm
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        new TestGenerationWizard().show();
    }
    
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton advancedButton2;
    private javax.swing.JPanel advancedPanel;
    private javax.swing.JButton advancedTypesButton;
    private javax.swing.JButton allLeftButton;
    private javax.swing.JButton allLeftButton2;
    private javax.swing.JButton allRightButton;
    private javax.swing.JButton allRightButton2;
    private javax.swing.JTextField allowedDifficultiesField;
    private javax.swing.JLabel allowedDifficultiesLabel;
    private javax.swing.JList availableList;
    private javax.swing.JList availableList2;
    private javax.swing.JScrollPane availablePane;
    private javax.swing.JScrollPane availablePane2;
    private javax.swing.JTextField averageDifficultyField;
    private javax.swing.JLabel averageDifficultyLabel;
    private javax.swing.JPanel buttonPanel;
    private javax.swing.JButton cancelButton;
    private javax.swing.JPanel classSelectionPanel;
    private javax.swing.JLabel excludedLabel;
    private javax.swing.JLabel excludedLabel2;
    private javax.swing.JButton finishButton;
    private javax.swing.JLabel includedLabel;
    private javax.swing.JLabel includedLabel2;
    private javax.swing.JList includedList;
    private javax.swing.JList includedList2;
    private javax.swing.JScrollPane includedPane;
    private javax.swing.JScrollPane includedPane2;
    private javax.swing.JPanel innerStepListPanel;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    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.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    private javax.swing.JTextField jTextField8;
    private javax.swing.JTextField lengthField;
    private javax.swing.JLabel lengthLabel;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JLabel modeSelectionLabel;
    private javax.swing.JButton nextButton;
    private javax.swing.JButton oneLeftButton;
    private javax.swing.JButton oneLeftButton2;
    private javax.swing.JButton oneRightButton;
    private javax.swing.JButton oneRightButton2;
    private javax.swing.JButton previousButton;
    private javax.swing.JLabel selectTypesLabel;
    private javax.swing.JPanel stepContentPanel;
    private javax.swing.JPanel stepFour;
    private javax.swing.JLabel stepFourLabel;
    private javax.swing.JPanel stepListPanel;
    private javax.swing.JPanel stepOne;
    private javax.swing.JLabel stepOneLabel;
    private javax.swing.JPanel stepThree;
    private javax.swing.JLabel stepThreeDescriptionLabel;
    private javax.swing.JLabel stepThreeLabel;
    private javax.swing.JPanel stepTwo;
    private javax.swing.JLabel stepTwoDescriptionLabel;
    private javax.swing.JLabel stepTwoLabel;
    private javax.swing.JLabel stepsLabel;
    private javax.swing.JTextField testNameField;
    private javax.swing.JLabel testNameLabel;
    private javax.swing.JPanel topicSelectionPanel;
    private javax.swing.JPanel typeCheckingPanel;
    private javax.swing.JPanel typeSelectionPanel;
    // End of variables declaration//GEN-END:variables
    
}