MainWindow.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mackenziehigh.snowflake.designer.gui;

import java.awt.Dimension;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.WindowConstants;

/**
 *
 * @author mackenzie
 */
public class MainWindow
        extends javax.swing.JFrame
{
    /**
     * Creates new form MainWindow
     */
    public MainWindow()
    {
        initComponents();

        Core.setMain(this);

        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

        Core.updateFont();

        this.setTitle("Snowflake's Grammar Designer");

        this.setMinimumSize(new Dimension(700, 700));

        this.addWindowListener(new WindowListener()
        {
            public void windowOpened(WindowEvent e)
            {
                /* Do Nothing */
            }

            public void windowClosing(WindowEvent e)
            {
                Core.exit();
            }

            public void windowClosed(WindowEvent e)
            {
                /* Do Nothing */
            }

            public void windowIconified(WindowEvent e)
            {
                /* Do Nothing */
            }

            public void windowDeiconified(WindowEvent e)
            {
                /* Do Nothing */
            }

            public void windowActivated(WindowEvent e)
            {
                /* Do Nothing */
            }

            public void windowDeactivated(WindowEvent e)
            {
                /* Do Nothing */
            }
        });
    }

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

        list1 =  null;
        tabs = new javax.swing.JTabbedPane();
        jSeparator1 = new javax.swing.JSeparator();
        column_label = new javax.swing.JLabel();
        column_label = new javax.swing.JLabel();
        line_label = new javax.swing.JLabel();
        project_label = new javax.swing.JLabel();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        open_project_menu_item = new javax.swing.JMenuItem();
        save_as_project_menu_item = new javax.swing.JMenuItem();
        save_project_menu_item = new javax.swing.JMenuItem();
        jSeparator2 = new javax.swing.JPopupMenu.Separator();
        exit_menu_item = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        generate_parser_menu_item = new javax.swing.JMenuItem();
        parse_menu_item = new javax.swing.JMenuItem();
        jMenu3 = new javax.swing.JMenu();
        set_font_menu_item = new javax.swing.JMenuItem();
        about_menu_item = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        tabs = Core.getTabs();
        tabs.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 3, true));

        column_label.setText("Column: 00000");
        column_label = Core.getColumnNumber();

        line_label.setText("Line: 00000");
        line_label = Core.getLineNumber();

        project_label.setText("Project: AAAAABBBBBCCCCCDDDDDEEEEE");
        project_label = Core.getProjectLabel();

        jMenu1.setText("File");

        open_project_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
        open_project_menu_item.setText("Open Project");
        open_project_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                open_project_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(open_project_menu_item);

        save_as_project_menu_item.setText("Save Project As");
        save_as_project_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                save_as_project_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(save_as_project_menu_item);

        save_project_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        save_project_menu_item.setText("Save Project");
        save_project_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                save_project_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(save_project_menu_item);
        jMenu1.add(jSeparator2);

        exit_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK));
        exit_menu_item.setText("Exit");
        exit_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                exit_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(exit_menu_item);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Action");

        generate_parser_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
        generate_parser_menu_item.setText("Generate Parser");
        generate_parser_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                generate_parser_menu_itemActionPerformed(evt);
            }
        });
        jMenu2.add(generate_parser_menu_item);

        parse_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F2, 0));
        parse_menu_item.setText("Parse");
        parse_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                parse_menu_itemActionPerformed(evt);
            }
        });
        jMenu2.add(parse_menu_item);

        jMenuBar1.add(jMenu2);

        jMenu3.setText("Help");

        set_font_menu_item.setText("Set Font Size");
        set_font_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                set_font_menu_itemActionPerformed(evt);
            }
        });
        jMenu3.add(set_font_menu_item);

        about_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
        about_menu_item.setText("About");
        about_menu_item.addActionListener(new java.awt.event.ActionListener()
        {
            public void actionPerformed(java.awt.event.ActionEvent evt)
            {
                about_menu_itemActionPerformed(evt);
            }
        });
        jMenu3.add(about_menu_item);

        jMenuBar1.add(jMenu3);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tabs)
            .addComponent(jSeparator1)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(line_label)
                .addGap(18, 18, 18)
                .addComponent(column_label)
                .addGap(18, 18, 18)
                .addComponent(project_label)
                .addContainerGap(488, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 680, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .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(column_label)
                    .addComponent(line_label)
                    .addComponent(project_label))
                .addContainerGap())
        );

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

    private void open_project_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_open_project_menu_itemActionPerformed
    {//GEN-HEADEREND:event_open_project_menu_itemActionPerformed
        Core.openProject();
    }//GEN-LAST:event_open_project_menu_itemActionPerformed

    private void exit_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_exit_menu_itemActionPerformed
    {//GEN-HEADEREND:event_exit_menu_itemActionPerformed
        Core.exit();
    }//GEN-LAST:event_exit_menu_itemActionPerformed

    private void generate_parser_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_generate_parser_menu_itemActionPerformed
    {//GEN-HEADEREND:event_generate_parser_menu_itemActionPerformed
        Core.generateParser();
    }//GEN-LAST:event_generate_parser_menu_itemActionPerformed

    private void parse_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_parse_menu_itemActionPerformed
    {//GEN-HEADEREND:event_parse_menu_itemActionPerformed
        Core.parse();
    }//GEN-LAST:event_parse_menu_itemActionPerformed

    private void save_as_project_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_save_as_project_menu_itemActionPerformed
    {//GEN-HEADEREND:event_save_as_project_menu_itemActionPerformed
        Core.saveProjectAs();
    }//GEN-LAST:event_save_as_project_menu_itemActionPerformed

    private void save_project_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_save_project_menu_itemActionPerformed
    {//GEN-HEADEREND:event_save_project_menu_itemActionPerformed
        Core.saveProject();
    }//GEN-LAST:event_save_project_menu_itemActionPerformed

    private void about_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_about_menu_itemActionPerformed
    {//GEN-HEADEREND:event_about_menu_itemActionPerformed
        Core.showAboutDialog();
    }//GEN-LAST:event_about_menu_itemActionPerformed

    private void set_font_menu_itemActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_set_font_menu_itemActionPerformed
    {//GEN-HEADEREND:event_set_font_menu_itemActionPerformed
        Core.showFontDialog();
    }//GEN-LAST:event_set_font_menu_itemActionPerformed

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

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                new MainWindow().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem about_menu_item;
    private javax.swing.JLabel column_label;
    private javax.swing.JMenuItem exit_menu_item;
    private javax.swing.JMenuItem generate_parser_menu_item;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JPopupMenu.Separator jSeparator2;
    private javax.swing.JLabel line_label;
    private java.util.List list1;
    private javax.swing.JMenuItem open_project_menu_item;
    private javax.swing.JMenuItem parse_menu_item;
    private javax.swing.JLabel project_label;
    private javax.swing.JMenuItem save_as_project_menu_item;
    private javax.swing.JMenuItem save_project_menu_item;
    private javax.swing.JMenuItem set_font_menu_item;
    private javax.swing.JTabbedPane tabs;
    // End of variables declaration//GEN-END:variables
}