/*
 * MainTeacherUIjFrame.java
 *
 * Created on November 4, 2007, 11:14 PM
 */
import javax.swing.JFileChooser;

/**
 *
 * @author  josh
 */
public class Main extends javax.swing.JFrame {
    private AddQuestion addQuestion;
    private NewTestDialog newTestDialog;
    private ViewingQuestions viewingQuestions;
    private TestEditor testEditor;
    private GradeView gradeView;
    private ModifyQuestions modifyQuestions;
    private RemovingQuestions removeQuestions;
    private InProgress inProgress;
    private GraderUIJframefilledIn gradeUI; 
    private JFileChooser openTestChooser;
    /** Creates new form MainTeacherUIjFrame */
    public Main() {
        this.setLocationRelativeTo(null);
        gradeView = new GradeView();
        gradeView.setLocationRelativeTo(null);
        newTestDialog = new NewTestDialog(this, false);
        newTestDialog.setLocationRelativeTo(null);
        testEditor = new TestEditor();
        gradeUI = new GraderUIJframefilledIn();
        gradeUI.setLocationRelativeTo(null);
        modifyQuestions = new ModifyQuestions();
        modifyQuestions.setLocationRelativeTo(null);

        removeQuestions = new RemovingQuestions();
        removeQuestions.setLocationRelativeTo(null);

        testEditor.setLocationRelativeTo(null);
        viewingQuestions = new ViewingQuestions();
        viewingQuestions.setLocationRelativeTo(null);
        inProgress = new InProgress();
        inProgress.setLocationRelativeTo(null);
        openTestChooser = new JFileChooser();
        openTestChooser.setDialogTitle("Choose a test to open");
        openTestChooser.setDialogType(JFileChooser.OPEN_DIALOG);
        addQuestion = new AddQuestion();
        addQuestion.setLocationRelativeTo(null);
        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.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jToolBar1 = new javax.swing.JToolBar();
        jLabel1 = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        FileMenu = new javax.swing.JMenu();
        fileNew = new javax.swing.JMenuItem();
        fileOpen = new javax.swing.JMenuItem();
        fileSave = new javax.swing.JMenuItem();
        fileClose = new javax.swing.JMenuItem();
        fileExit = new javax.swing.JMenuItem();
        EditMenu = new javax.swing.JMenu();
        jMenuItem6 = new javax.swing.JMenuItem();
        jMenuItem7 = new javax.swing.JMenuItem();
        jMenuItem8 = new javax.swing.JMenuItem();
        jMenuItem9 = new javax.swing.JMenuItem();
        jMenuItem10 = new javax.swing.JMenuItem();
        RepositoryMenu = new javax.swing.JMenu();
        repoAddQuestion = new javax.swing.JMenuItem();
        repoRemoveQuestion = new javax.swing.JMenuItem();
        repoModifyQuestion = new javax.swing.JMenuItem();
        repoViewQuestion = new javax.swing.JMenuItem();
        repoImportExport = new javax.swing.JMenuItem();
        ProctorMenu = new javax.swing.JMenu();
        repoReleaseTest = new javax.swing.JMenuItem();
        GradeMenu = new javax.swing.JMenu();
        gradeGradeTests = new javax.swing.JMenuItem();
        gradeClassBreakdown = new javax.swing.JMenuItem();
        HelpMenu = new javax.swing.JMenu();
        helpViewWebsite = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Test Tool Teaching Interface");
        jLabel1.setText("No tests loaded");
        jToolBar1.add(jLabel1);

        FileMenu.setText("File");
        FileMenu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                FileMenuActionPerformed(evt);
            }
        });

        fileNew.setText("New");
        fileNew.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fileNewActionPerformed(evt);
            }
        });

        FileMenu.add(fileNew);

        fileOpen.setText("Open");
        fileOpen.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fileOpenActionPerformed(evt);
            }
        });

        FileMenu.add(fileOpen);

        fileSave.setText("Save");
        FileMenu.add(fileSave);

        fileClose.setText("Close");
        fileClose.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fileCloseActionPerformed(evt);
            }
        });

        FileMenu.add(fileClose);

        fileExit.setText("Exit");
        fileExit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                fileExitActionPerformed(evt);
            }
        });

        FileMenu.add(fileExit);

        jMenuBar1.add(FileMenu);

        EditMenu.setText("Edit");
        jMenuItem6.setText("Undo");
        EditMenu.add(jMenuItem6);

        jMenuItem7.setText("Redo");
        EditMenu.add(jMenuItem7);

        jMenuItem8.setText("Cut");
        EditMenu.add(jMenuItem8);

        jMenuItem9.setText("Copy");
        EditMenu.add(jMenuItem9);

        jMenuItem10.setText("Paste");
        jMenuItem10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem10ActionPerformed(evt);
            }
        });

        EditMenu.add(jMenuItem10);

        jMenuBar1.add(EditMenu);

        RepositoryMenu.setText("Repository");
        repoAddQuestion.setText("Add Question");
        repoAddQuestion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                repoAddQuestionActionPerformed(evt);
            }
        });

        RepositoryMenu.add(repoAddQuestion);

        repoRemoveQuestion.setText("Remove Question");
        repoRemoveQuestion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                repoRemoveQuestionActionPerformed(evt);
            }
        });
        RepositoryMenu.add(repoRemoveQuestion);

        repoModifyQuestion.setText("Modify Question");
        repoModifyQuestion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                repoModifyQuestionActionPerformed(evt);
            }
        });

        RepositoryMenu.add(repoModifyQuestion);

        repoViewQuestion.setText("View Questions");
        repoViewQuestion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                repoViewQuestionActionPerformed(evt);
            }
        });

        RepositoryMenu.add(repoViewQuestion);

        repoImportExport.setText("Import/Export");
        RepositoryMenu.add(repoImportExport);
				repoImportExport.addActionListener(new java.awt.event.ActionListener() {
						public void actionPerformed(java.awt.event.ActionEvent evt) {
							repoImportExportActionPerformed();
						}
						});

        jMenuBar1.add(RepositoryMenu);

        ProctorMenu.setText("Proctor");
        repoReleaseTest.setText("Release Test");
        repoReleaseTest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                repoReleaseTestActionPerformed(evt);
            }
        });

        ProctorMenu.add(repoReleaseTest);

        jMenuBar1.add(ProctorMenu);

        GradeMenu.setText("Grade");
        GradeMenu.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GradeMenuActionPerformed(evt);
            }
        });

        gradeGradeTests.setText("Grade Tests");
        gradeGradeTests.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                gradeGradeTestsActionPerformed(evt);
            }
        });
        GradeMenu.add(gradeGradeTests);

        gradeClassBreakdown.setText("Class Breakdown");
        gradeClassBreakdown.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(java.awt.event.ActionEvent evt) {
                 gradeClassBreakdownActionPerformed(evt);
              }
        });
        GradeMenu.add(gradeClassBreakdown);

        jMenuBar1.add(GradeMenu);

        HelpMenu.setText("Help");
        helpViewWebsite.setText("View Website");
        helpViewWebsite.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                helpViewWebsiteActionPerformed(evt);
            }
        });

        HelpMenu.add(helpViewWebsite);

        jMenuBar1.add(HelpMenu);

        setJMenuBar(jMenuBar1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                .add(jToolBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 1249, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap(841, Short.MAX_VALUE)
                .add(jToolBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 25, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void fileOpenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileOpenActionPerformed
        openTestChooser.setVisible(true);
        int returnVal = openTestChooser.showOpenDialog(this);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           testEditor.setVisible(true);
        }
        
    }//GEN-LAST:event_fileOpenActionPerformed

    private void gradeClassBreakdownActionPerformed (java.awt.event.ActionEvent evt) {
        openTestChooser.setVisible(true);
        int returnVal = openTestChooser.showOpenDialog(this);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           gradeView.setVisible(true);
        }
       
    }


    private void gradeGradeTestsActionPerformed (java.awt.event.ActionEvent evt) {
        openTestChooser.setVisible(true);
        int returnVal = openTestChooser.showOpenDialog(this);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           gradeUI.setVisible(true);
        }
       
    }

    private void fileNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileNewActionPerformed
        newTestDialog.setVisible(true);
    }//GEN-LAST:event_fileNewActionPerformed

		private void repoImportExportActionPerformed() {
							new ImportExport(this, false).setVisible(true);
		}
    private void repoModifyQuestionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repoViewQuestionActionPerformed
        modifyQuestions.setVisible(true);
    }//GEN-LAST:event_repoModifyQuestionActionPerformed

    private void repoRemoveQuestionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repoViewQuestionActionPerformed
        removeQuestions.setVisible(true);
    }//GEN-LAST:event_repoModifyQuestionActionPerformed

    private void repoViewQuestionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repoViewQuestionActionPerformed
        viewingQuestions.setVisible(true);
    }//GEN-LAST:event_repoViewQuestionActionPerformed

    private void repoAddQuestionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repoAddQuestionActionPerformed
        addQuestion.setVisible(true);
    }//GEN-LAST:event_repoAddQuestionActionPerformed

    private void repoReleaseTestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_repoReleaseTestActionPerformed
        openTestChooser.setVisible(true);
        int returnVal = openTestChooser.showOpenDialog(this);
        if(returnVal == JFileChooser.APPROVE_OPTION) {
           inProgress.setVisible(true);
        }
        
        
    }//GEN-LAST:event_repoReleaseTestActionPerformed

    private void helpViewWebsiteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpViewWebsiteActionPerformed
       String [] launchWebsite = {
          "firefox",
          "http://www.csc.calpoly.edu/~jverburg/projects/work/testtool",
       };
       System.out.println("Launching firefox");
       try {
        Runtime.getRuntime().exec(launchWebsite);
       } catch (Exception e) {
           e.printStackTrace();
       }
    }//GEN-LAST:event_helpViewWebsiteActionPerformed

    private void fileExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileExitActionPerformed
       System.exit(0);
    }//GEN-LAST:event_fileExitActionPerformed

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

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

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

    private void fileCloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileCloseActionPerformed
// TODO add your handling code here:
    }//GEN-LAST:event_fileCloseActionPerformed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenu EditMenu;
    private javax.swing.JMenu FileMenu;
    private javax.swing.JMenu GradeMenu;
    private javax.swing.JMenu HelpMenu;
    private javax.swing.JMenu ProctorMenu;
    private javax.swing.JMenu RepositoryMenu;
    private javax.swing.JMenuItem fileClose;
    private javax.swing.JMenuItem fileExit;
    private javax.swing.JMenuItem fileNew;
    private javax.swing.JMenuItem fileOpen;
    private javax.swing.JMenuItem fileSave;
    private javax.swing.JMenuItem gradeClassBreakdown;
    private javax.swing.JMenuItem gradeGradeTests;
    private javax.swing.JMenuItem helpViewWebsite;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem10;
    private javax.swing.JMenuItem jMenuItem6;
    private javax.swing.JMenuItem jMenuItem7;
    private javax.swing.JMenuItem jMenuItem8;
    private javax.swing.JMenuItem jMenuItem9;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JMenuItem repoAddQuestion;
    private javax.swing.JMenuItem repoImportExport;
    private javax.swing.JMenuItem repoModifyQuestion;
    private javax.swing.JMenuItem repoReleaseTest;
    private javax.swing.JMenuItem repoRemoveQuestion;
    private javax.swing.JMenuItem repoViewQuestion;
    // End of variables declaration//GEN-END:variables
    
}