package ArchivesUI;
 
import hamlet.graph.*;
import com.Ostermiller.Syntax.*;
import java.awt.Color;
import java.awt.event.*;
import java.awt.PopupMenu;
import javax.swing.*;
import java.io.*;
import java.awt.geom.*;
import java.awt.*;
import javax.swing.*;        
import java.awt.*;
import java.util.ArrayList;
import splots.*;
//tg imports

import com.touchgraph.graphlayout.*;


/**
 *
 * @author  Robin Hood
 */
public class FullGui extends javax.swing.JFrame {
    
    /** Creates new form FullGui */
    public FullGui() {
        System.out.println(System.getProperty( "user.dir" ));
        initComponents();
        setCodeViewString();
    }
    
    /** This method is called from ls
     * 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() {

        jPanel1 = new javax.swing.JPanel();
        jLabel10 = new javax.swing.JLabel();
        jSplitPane3 = new javax.swing.JSplitPane();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel2 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        /*
        * Uses Syntax Highlighting via HighlightedDocument class
        * as well as creates a MouseListener in order to obtain
        * selected text info based on a right click.
        *
        */
        LanguageSelection sel = new LanguageSelection();
        HighlightedDocument document = sel.getDocument();
        code_view = new javax.swing.JTextPane(document);
        jScrollPane3 = new javax.swing.JScrollPane();
        jSplitPane2 = new javax.swing.JSplitPane();
        jPanel5 = new javax.swing.JPanel();
        jLabel6 = new javax.swing.JLabel();
        unit_list = new java.awt.List();
        jPanel9 = new javax.swing.JPanel();
        jLabel9 = new javax.swing.JLabel();
        jScrollPane4 = new javax.swing.JScrollPane();
        LanguageSelection sel2 = new LanguageSelection();
        HighlightedDocument document2 = sel2.getDocument();
        unit_data = new javax.swing.JTextPane();
        _whatElseList = new java.awt.List();
        _whatNotList = new java.awt.List();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        splot = new javax.swing.JButton();
        query_button = new javax.swing.JButton();
        _trimResultsCheckBox = new javax.swing.JCheckBox();
        _numResultsField = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        archives_menu_bar = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        load_graph_data = new javax.swing.JMenuItem();
        open_file_menu_item = new javax.swing.JMenuItem();
        open_jar_menu_item = new javax.swing.JMenuItem();
        save_menu_item = new javax.swing.JMenuItem();
        jSeparator3 = new javax.swing.JSeparator();
        exit_menu_item = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenu3 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Hamlet -alpha-"); // NOI18N

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));

        jLabel10.setBackground(new java.awt.Color(0, 51, 102));
        jLabel10.setFont(new java.awt.Font("Lucida Bright", 1, 30));
        jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
        jLabel10.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ArchivesUI/hamlet_logo.png"))); // NOI18N
        jLabel10.setOpaque(true);

        jSplitPane3.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);

        jPanel2.setBackground(java.awt.SystemColor.controlHighlight);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabel1.setText("Source");

        String defaultText = (
            "/**\n" +
            " * Simple common test program.\n" +
            " */\n" +
            "public class HelloWorld {\n" +
            "    public static void main(String[] args) {\n" +
            "        // Display the greeting.\n" +
            "        System.out.println(\"Hello World!\");\n" +
            "    }\n" +
            "}\n"
        );

        code_view.setText(defaultText);
        jScrollPane1.setViewportView(code_view);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 567, Short.MAX_VALUE)
                    .addComponent(jLabel1))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 305, Short.MAX_VALUE)
                .addContainerGap())
        );

        jSplitPane1.setLeftComponent(jPanel2);
        jSplitPane1.setRightComponent(jScrollPane3);

        jSplitPane3.setLeftComponent(jSplitPane1);

        jSplitPane2.setMinimumSize(new java.awt.Dimension(0, 0));

        jPanel5.setBackground(java.awt.SystemColor.controlHighlight);

        jLabel6.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel6.setText("Units"); // NOI18N

        unit_list.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                unit_listMouseClicked(evt);
            }
        });
        unit_list.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                unit_listActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(unit_list, javax.swing.GroupLayout.DEFAULT_SIZE, 287, Short.MAX_VALUE)
                    .addComponent(jLabel6))
                .addContainerGap())
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(unit_list, javax.swing.GroupLayout.DEFAULT_SIZE, 209, Short.MAX_VALUE)
                .addGap(42, 42, 42))
        );

        jSplitPane2.setLeftComponent(jPanel5);

        jPanel9.setBackground(java.awt.SystemColor.controlHighlight);

        jLabel9.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel9.setText("Unit Data"); // NOI18N

        unit_data = new javax.swing.JTextPane(document2);
        jScrollPane4.setViewportView(unit_data);

        javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
        jPanel9.setLayout(jPanel9Layout);
        jPanel9Layout.setHorizontalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel9Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 621, Short.MAX_VALUE)
                    .addComponent(jLabel9))
                .addContainerGap())
        );
        jPanel9Layout.setVerticalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel9Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel9)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                .addGap(44, 44, 44))
        );

        jSplitPane2.setRightComponent(jPanel9);

        jSplitPane3.setRightComponent(jSplitPane2);

        jLabel3.setFont(new java.awt.Font("DejaVu Sans", 1, 13));
        jLabel3.setText("What Else?");

        jLabel4.setFont(new java.awt.Font("DejaVu Sans", 1, 13));
        jLabel4.setText("What Not?");

        splot.setText("Generate 3-D Gnuplot");
        splot.setEnabled(false);
        splot.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                splotMouseClicked(evt);
            }
        });
        splot.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                splotActionPerformed(evt);
            }
        });

        query_button.setText("Query"); // NOI18N
        query_button.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                query_buttonMouseClicked(evt);
            }
            public void mouseEntered(java.awt.event.MouseEvent evt) {
                query_buttonMouseEntered(evt);
            }
        });
        query_button.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                query_buttonActionPerformed(evt);
            }
        });

        _trimResultsCheckBox.setText("Trim?");

        _numResultsField.setText("50");

        jLabel5.setText("NumResults");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                        .addComponent(jSplitPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 957, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(20, 20, 20)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(_whatElseList, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(_whatNotList, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(20, 20, 20)
                                .addComponent(jLabel3)
                                .addGap(49, 49, 49)
                                .addComponent(jLabel4))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel7)
                            .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 432, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 398, Short.MAX_VALUE)
                        .addComponent(jLabel5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(_numResultsField, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(10, 10, 10)
                        .addComponent(_trimResultsCheckBox)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(query_button)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(splot)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel5)
                            .addComponent(_numResultsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(splot)
                            .addComponent(query_button)
                            .addComponent(_trimResultsCheckBox))
                        .addGap(13, 13, 13))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel3)
                            .addComponent(jLabel4))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 23, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(_whatElseList, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(_whatNotList, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 604, Short.MAX_VALUE)))
                    .addComponent(jSplitPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 645, Short.MAX_VALUE))
                .addGap(342, 342, 342))
        );

        jMenu1.setText("File"); // NOI18N

        load_graph_data.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
        load_graph_data.setText("Load Graph Data"); // NOI18N
        load_graph_data.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                load_graph_dataMouseClicked(evt);
            }
        });
        load_graph_data.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                load_graph_dataActionPerformed(evt);
            }
        });
        jMenu1.add(load_graph_data);

        open_file_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
        open_file_menu_item.setText("Open File"); // NOI18N
        open_file_menu_item.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                open_file_menu_itemMouseClicked(evt);
            }
        });
        open_file_menu_item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                open_file_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(open_file_menu_item);

        open_jar_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_J, java.awt.event.InputEvent.ALT_MASK));
        open_jar_menu_item.setText("Open Jar");
        open_jar_menu_item.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                open_jar_menu_itemActionPerformed(evt);
            }
        });
        jMenu1.add(open_jar_menu_item);

        save_menu_item.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        save_menu_item.setText("Save");
        jMenu1.add(save_menu_item);
        jMenu1.add(jSeparator3);

        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);

        archives_menu_bar.add(jMenu1);

        jMenu2.setText("Edit"); // NOI18N
        archives_menu_bar.add(jMenu2);

        jMenu3.setText("Tools"); // NOI18N
        archives_menu_bar.add(jMenu3);

        setJMenuBar(archives_menu_bar);
        archives_menu_bar.add(sel.createStyleMenu());

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        getAccessibleContext().setAccessibleName("Hamlet"); // NOI18N

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-1231)/2, (screenSize.height-776)/2, 1231, 776);
    }// </editor-fold>//GEN-END:initComponents

    private void query_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_query_buttonActionPerformed
        try{
            layoutGraph();
        
        }
        catch(Exception e){
            System.out.println("The following error occured:/n"+e.toString());
        }
}//GEN-LAST:event_query_buttonActionPerformed

    private void query_buttonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_query_buttonMouseClicked
        

      splot.setEnabled(true);
      unit_list.removeAll();
     // unit_data_text_area2.setText("");
      _whatElseList.removeAll();
      _whatNotList.removeAll();
      
      try
      {
          _queryNum = Integer.parseInt(_numResultsField.getText());
      }
      catch(Exception ex)
      {
          System.out.println("Invalid values in NumResults field.  Using 50 by default");
          _queryNum = 50;
          _numResultsField.setText("50");
      }
      
      System.out.println(code_view.getText());
      _queryResult = Graph.getInstance().doSourceQuery(code_view.getText(), _queryNum); //get vert dist pair
      
      //Print vertices to file
      _queryResult.printCloseVertsToFile("close.txt");
      _queryResult.printOtherVertsToFile("other.txt");
      _queryResult.printQueryVertsToFile("query.txt");
      
      ArrayList<VertQueryInfo> verts;
      if(_trimResultsCheckBox.isSelected())
      {
        verts = _queryResult.getVertQueryInfoListTrimmed();
      }
      else
      {
        verts = _queryResult.getVertQueryInfoList();
      }
      
      for(VertQueryInfo vert: verts)
      {
          unit_list.add(vert.Vert.getName());
      }
      glPanel.setCurrent(glPanel.tgPanel.findNode(unit_list.getItem(0)));
}//GEN-LAST:event_query_buttonMouseClicked

    
    private void load_graph_dataMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_load_graph_dataMouseClicked

}//GEN-LAST:event_load_graph_dataMouseClicked

    private void open_file_menu_itemMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_open_file_menu_itemMouseClicked
     
}//GEN-LAST:event_open_file_menu_itemMouseClicked

    private void open_file_menu_itemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_open_file_menu_itemActionPerformed
       JFileChooser fileChooser = new JFileChooser();
       fileChooser.setLocation(this.getX(), this.getY());
       fileChooser.showOpenDialog(jLabel1);
    }//GEN-LAST:event_open_file_menu_itemActionPerformed

    private void load_graph_dataActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_load_graph_dataActionPerformed
        try{
            layoutGraph();
            glPanel.setCurrent(glPanel.tgPanel.findNode(unit_list.getItem(0)));
        }
        catch(Exception e){
            System.out.println("the following error occured\n"+e.toString());
        }
    }//GEN-LAST:event_load_graph_dataActionPerformed

    private void query_buttonMouseEntered(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_query_buttonMouseEntered
        // TODO add your handling code here:
}//GEN-LAST:event_query_buttonMouseEntered

    private void unit_listActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_unit_listActionPerformed
       
    }//GEN-LAST:event_unit_listActionPerformed

    private void unit_listMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_unit_listMouseClicked

        VertQueryInfo vqi;
        try{
           
            if(unit_list.getItemCount() > -1)
            {
                vqi = _queryResult.getVertQueryInfoList().get(unit_list.getSelectedIndex());
                //unit_data_text_area2.setText(vqi.Vert.getSource()); //sets the unit data based on the vert source selected
                //syntax highlighting with unit data
                 unit_data.setText(vqi.Vert.getSource());           
                _whatElseList.removeAll();
                for(String we:vqi.getWhatElse())
                {
                    _whatElseList.add(we);
                }
                
                _whatNotList.removeAll();
                for(String wn:vqi.getWhatNot())
                {
                    _whatNotList.add(wn);
                }
            }
            glPanel.setCurrent(glPanel.tgPanel.findNode(unit_list.getSelectedItem()));
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }//GEN-LAST:event_unit_listMouseClicked

    private void open_jar_menu_itemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_open_jar_menu_itemActionPerformed
       JFileChooser fileChooser = new JFileChooser();
       fileChooser.setLocation(this.getX(), this.getY());
       fileChooser.showOpenDialog(jLabel1);                                      
}//GEN-LAST:event_open_jar_menu_itemActionPerformed

    private void exit_menu_itemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exit_menu_itemActionPerformed
       System.exit(0);
}//GEN-LAST:event_exit_menu_itemActionPerformed

    private void splotActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_splotActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_splotActionPerformed

    private void splotMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_splotMouseClicked
        Gnu gnu = new Gnu();
    }//GEN-LAST:event_splotMouseClicked
    
    
    
    /**
     * tg layout
     */
   public void layoutGraph(){
        glPanel = new GLPanel(Graph.getInstance());
        jScrollPane3.getViewport().add(glPanel);    
   }
   
   
    public void setCodeViewString(){
        _codeViewText = code_view.getText();
    }
    
   
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() 
            {
                new FullGui().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField _numResultsField;
    private javax.swing.JCheckBox _trimResultsCheckBox;
    private java.awt.List _whatElseList;
    private java.awt.List _whatNotList;
    private javax.swing.JMenuBar archives_menu_bar;
    private javax.swing.JTextPane code_view;
    private javax.swing.JMenuItem exit_menu_item;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    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 jLabel9;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenu jMenu3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JSeparator jSeparator3;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JSplitPane jSplitPane2;
    private javax.swing.JSplitPane jSplitPane3;
    private javax.swing.JMenuItem load_graph_data;
    private javax.swing.JMenuItem open_file_menu_item;
    private javax.swing.JMenuItem open_jar_menu_item;
    private javax.swing.JButton query_button;
    private javax.swing.JMenuItem save_menu_item;
    private javax.swing.JButton splot;
    private javax.swing.JTextPane unit_data;
    private java.awt.List unit_list;
    // End of variables declaration//GEN-END:variables

    ArrayList<Edge> _edges = new ArrayList<Edge>();
    ArrayList<Vert> _vertArr = new ArrayList<Vert>();
    QueryResult _queryResult = null;
    private String _codeViewText;
    private int _counter = 0;
    private int _queryNum = 50;
    private GLPanel glPanel;
}
