/*
 * CalculatorGUIJFrame.java
 *
 * Created on February 8, 2006, 10:13 AM
 */

package probabilitycalculator;
import javax.swing.JOptionPane;

/**
 *
 * @author  Rinaman
 */
public class CalculatorGUIJFrame extends javax.swing.JFrame {
    
    /** Creates new form CalculatorGUIJFrame */
    private int DistRadioButtonChecked = 1, OptionRadioButtonChecked = 1;
    private int iParmOne, iParmTwo, option;
    private double dParmOne = 0.0, dParmTwo = 1.0, dX; 
    private String parmone, parmtwo, x;
    
    public CalculatorGUIJFrame() {
        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() {
        java.awt.GridBagConstraints gridBagConstraints;

        buttonGroupOptions = new javax.swing.ButtonGroup();
        buttonGroupDistributions = new javax.swing.ButtonGroup();
        jPanelLeft = new javax.swing.JPanel();
        jPanelDistributions = new javax.swing.JPanel();
        jRadioButtonNormal = new javax.swing.JRadioButton();
        jRadioButtonT = new javax.swing.JRadioButton();
        jRadioButtonChiSquare = new javax.swing.JRadioButton();
        jRadioButtonF = new javax.swing.JRadioButton();
        jRadioButtonBinomial = new javax.swing.JRadioButton();
        jRadioButtonPoisson = new javax.swing.JRadioButton();
        jPanelParmOne = new javax.swing.JPanel();
        jLabelParmOne = new javax.swing.JLabel();
        jTextFieldParmOne = new javax.swing.JTextField();
        jPanelParmTwo = new javax.swing.JPanel();
        jLabelParmTwo = new javax.swing.JLabel();
        jTextFieldParmTwo = new javax.swing.JTextField();
        jPanelCenter = new javax.swing.JPanel();
        jPanelOptions = new javax.swing.JPanel();
        jRadioButtonDF = new javax.swing.JRadioButton();
        jRadioButtonDFComp = new javax.swing.JRadioButton();
        jRadioButtonInvDF = new javax.swing.JRadioButton();
        jRadioButtonInvDFComp = new javax.swing.JRadioButton();
        jPanelRight = new javax.swing.JPanel();
        jPanelResult = new javax.swing.JPanel();
        jLabelresult = new javax.swing.JLabel();
        jTextAreaResult1 = new javax.swing.JTextArea();
        jTextAreaResult2 = new javax.swing.JTextArea();
        jPanelX = new javax.swing.JPanel();
        jLabelX = new javax.swing.JLabel();
        jTextFieldX = new javax.swing.JTextField();
        jButtonCalculate = new javax.swing.JButton();

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

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanelLeft.setLayout(new java.awt.GridBagLayout());

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

        jPanelDistributions.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0)), "Distribution"));
        jPanelDistributions.setName("Distributions");
        buttonGroupDistributions.add(jRadioButtonNormal);
        jRadioButtonNormal.setSelected(true);
        jRadioButtonNormal.setText("Normal");
        jRadioButtonNormal.setActionCommand("Normal");
        jRadioButtonNormal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonNormal, gridBagConstraints);

        buttonGroupDistributions.add(jRadioButtonT);
        jRadioButtonT.setText("t");
        jRadioButtonT.setActionCommand("t");
        jRadioButtonT.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonT, gridBagConstraints);

        buttonGroupDistributions.add(jRadioButtonChiSquare);
        jRadioButtonChiSquare.setText("Chi-square");
        jRadioButtonChiSquare.setActionCommand("Chi-square");
        jRadioButtonChiSquare.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonChiSquare, gridBagConstraints);

        buttonGroupDistributions.add(jRadioButtonF);
        jRadioButtonF.setText("F");
        jRadioButtonF.setActionCommand("F");
        jRadioButtonF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonF, gridBagConstraints);

        buttonGroupDistributions.add(jRadioButtonBinomial);
        jRadioButtonBinomial.setText("Binomial");
        jRadioButtonBinomial.setActionCommand("Binomial");
        jRadioButtonBinomial.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonBinomial, gridBagConstraints);

        buttonGroupDistributions.add(jRadioButtonPoisson);
        jRadioButtonPoisson.setText("Poisson");
        jRadioButtonPoisson.setActionCommand("Poisson");
        jRadioButtonPoisson.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                DistRadioButtonHandler(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        jPanelDistributions.add(jRadioButtonPoisson, gridBagConstraints);

        jPanelLeft.add(jPanelDistributions, new java.awt.GridBagConstraints());

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

        jLabelParmOne.setText("mu");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 4);
        jPanelParmOne.add(jLabelParmOne, gridBagConstraints);

        jTextFieldParmOne.setText("0.0");
        jTextFieldParmOne.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldParmOne(evt);
            }
        });
        jTextFieldParmOne.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldParmOneFocus(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.ipadx = 50;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        jPanelParmOne.add(jTextFieldParmOne, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 0);
        jPanelLeft.add(jPanelParmOne, gridBagConstraints);

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

        jLabelParmTwo.setText("sigma");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 3);
        jPanelParmTwo.add(jLabelParmTwo, gridBagConstraints);

        jTextFieldParmTwo.setText("1.0");
        jTextFieldParmTwo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldParmTwo(evt);
            }
        });
        jTextFieldParmTwo.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldParmTwoFocus(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.ipadx = 50;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        jPanelParmTwo.add(jTextFieldParmTwo, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(10, 0, 10, 0);
        jPanelLeft.add(jPanelParmTwo, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.insets = new java.awt.Insets(0, 7, 0, 7);
        getContentPane().add(jPanelLeft, gridBagConstraints);

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

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

        jPanelOptions.setBorder(new javax.swing.border.TitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0)), "Options"));
        buttonGroupOptions.add(jRadioButtonDF);
        jRadioButtonDF.setSelected(true);
        jRadioButtonDF.setText("P(X <= x) = Result");
        jRadioButtonDF.setActionCommand("P(X <= x) = Result");
        jRadioButtonDF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                OptionsRadioButton(evt);
            }
        });

        jPanelOptions.add(jRadioButtonDF, new java.awt.GridBagConstraints());

        buttonGroupOptions.add(jRadioButtonDFComp);
        jRadioButtonDFComp.setText("P(X >= x) = Result");
        jRadioButtonDFComp.setActionCommand("P(X >= x) = Result");
        jRadioButtonDFComp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                OptionsRadioButton(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        jPanelOptions.add(jRadioButtonDFComp, gridBagConstraints);

        buttonGroupOptions.add(jRadioButtonInvDF);
        jRadioButtonInvDF.setText("P(X <= Result) = x");
        jRadioButtonInvDF.setActionCommand("P(X <= Result) = x");
        jRadioButtonInvDF.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                OptionsRadioButton(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        jPanelOptions.add(jRadioButtonInvDF, gridBagConstraints);

        buttonGroupOptions.add(jRadioButtonInvDFComp);
        jRadioButtonInvDFComp.setText("P(X >= Result) = x");
        jRadioButtonInvDFComp.setActionCommand("P(X >= Result) = x");
        jRadioButtonInvDFComp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                OptionsRadioButton(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        jPanelOptions.add(jRadioButtonInvDFComp, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 0);
        jPanelCenter.add(jPanelOptions, gridBagConstraints);

        getContentPane().add(jPanelCenter, new java.awt.GridBagConstraints());

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

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

        jLabelresult.setText("Result:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 20, 6, 20);
        jPanelResult.add(jLabelresult, gridBagConstraints);

        jTextAreaResult1.setEditable(false);
        jTextAreaResult1.setMaximumSize(new java.awt.Dimension(20, 1));
        jTextAreaResult1.setMinimumSize(new java.awt.Dimension(20, 1));
        jTextAreaResult1.setPreferredSize(new java.awt.Dimension(20, 18));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.ipadx = 100;
        jPanelResult.add(jTextAreaResult1, gridBagConstraints);

        jTextAreaResult2.setMaximumSize(new java.awt.Dimension(20, 1));
        jTextAreaResult2.setMinimumSize(new java.awt.Dimension(20, 1));
        jTextAreaResult2.setPreferredSize(new java.awt.Dimension(20, 18));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        jPanelResult.add(jTextAreaResult2, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 0);
        jPanelRight.add(jPanelResult, gridBagConstraints);

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

        jLabelX.setText("x:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 33, 0, 0);
        jPanelX.add(jLabelX, gridBagConstraints);

        jTextFieldX.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldX(evt);
            }
        });
        jTextFieldX.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextFieldXFocus(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.ipadx = 50;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 32);
        jPanelX.add(jTextFieldX, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 0);
        jPanelRight.add(jPanelX, gridBagConstraints);

        jButtonCalculate.setText("Calculate");
        jButtonCalculate.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButttonCalculate(evt);
            }
        });

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 0);
        jPanelRight.add(jButtonCalculate, gridBagConstraints);

        getContentPane().add(jPanelRight, new java.awt.GridBagConstraints());

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

    private void jTextFieldXFocus(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldXFocus
// TODO add your handling code here:
        x = jTextFieldX.getText();
        try {
            dX = Double.parseDouble(x);
        }
        catch(NumberFormatException numberFormatException) {
            JOptionPane.showMessageDialog(null,"Error: X must be a number.");
        }
    }//GEN-LAST:event_jTextFieldXFocus

    private void jTextFieldParmTwoFocus(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldParmTwoFocus
// TODO add your handling code here:
      boolean caught;
      caught = false;
      parmtwo = jTextFieldParmTwo.getText();
      if(DistRadioButtonChecked == 1) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: Sigma must be a positive number.");
            else if(dParmTwo <= 0.0)
                JOptionPane.showMessageDialog(null,"Error: Sigma must be a positive number.");
      }
      else if(DistRadioButtonChecked == 4) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: D.F.D. must be a positive integer.");
            else if(dParmTwo <= 0)
                  JOptionPane.showMessageDialog(null,"Error: D.F.D. must be a positive integer.");
            else if((double)(int)dParmTwo == dParmTwo)iParmTwo = (int)dParmTwo;
            else JOptionPane.showMessageDialog(null,"Error: D.F.D must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 5) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: p must be a number between 0 and 1.");
            else if(dParmTwo < 0 || dParmTwo > 1)
                  JOptionPane.showMessageDialog(null,"Error: p must be a number between 0 and 1.");
      }                               
    }//GEN-LAST:event_jTextFieldParmTwoFocus

    private void jTextFieldParmOneFocus(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextFieldParmOneFocus
// TODO add your handling code here:
      boolean caught;
      caught = false;
      parmone = jTextFieldParmOne.getText();
      if(DistRadioButtonChecked == 1) {
         try {
             dParmOne = Double.parseDouble(parmone);
         }
         catch(NumberFormatException numberFormatException) {
             JOptionPane.showMessageDialog(null,"Error: Mu must be a number.");
         }
      }
      else if(DistRadioButtonChecked == 2) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 3) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 4) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 5) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: n must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: n must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: n must be a positive integer");
      }
      else if(DistRadioButtonChecked == 6) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: Lambda must be a positive number.");
          else if(dParmOne <= 0.0)
              JOptionPane.showMessageDialog(null,"Error: Lambda must be a positive number.");
      }                                  
    }//GEN-LAST:event_jTextFieldParmOneFocus

    private void jButttonCalculate(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButttonCalculate
// TODO add your handling code here:
        double result, dfOne, dfTwo, x;
        int iresult, ix;
        String sResultOne, sResultTwo;
        if(DistRadioButtonChecked == 1){
            Normal normal = new Normal(dX, dParmOne, dParmTwo, OptionRadioButtonChecked);
            result = normal.NormalCalc();
            if(result == 1.0e12) sResultOne = "infinity";
            else if(result == -1.0e12) sResultOne = "-infinity";
            else sResultOne = String.format("%.4f", result);
            jTextAreaResult1.setText(sResultOne);
            jTextAreaResult2.setText("");
        }
        else if(DistRadioButtonChecked == 2){
            dParmOne = (double)iParmOne;
            T t = new T(dX, iParmOne, OptionRadioButtonChecked);
            result = t.TCalc();
            if(result == 1.0e12) sResultOne = "infinity";
            else if(result == -1.0e12) sResultOne = "-infinity";
            else sResultOne = String.format("%.4f", result);
            jTextAreaResult1.setText(sResultOne);
            jTextAreaResult2.setText("");
        }
        else if(DistRadioButtonChecked == 3){
            dParmOne = (double)iParmOne;
            ChiSquare chisquare = new ChiSquare(dX, iParmOne, OptionRadioButtonChecked);
            result = chisquare.ChiSquareCalc();
            if(result == 1.0e12) sResultOne = "infinity";
            else sResultOne = String.format("%.4f", result);
            jTextAreaResult1.setText(sResultOne);
            jTextAreaResult2.setText("");
        }
        else if(DistRadioButtonChecked == 4){
            dParmTwo = (double)iParmTwo;
            F f = new F(dX, iParmOne, iParmTwo, OptionRadioButtonChecked);            
            result = f.FCalc();
            if(result == 1.0e12) sResultOne = "infinity";
            else sResultOne = String.format("%.4f", result);
            jTextAreaResult1.setText(sResultOne);
            jTextAreaResult2.setText("");
        }
        else if(DistRadioButtonChecked == 5){
            Binomial binomial = new Binomial(dX, dParmOne, dParmTwo, OptionRadioButtonChecked);
            result = binomial.BinomialCalc();
            iresult = (int)result;
            if(OptionRadioButtonChecked < 3){
                sResultOne = String.format("%.4f", result);
                jTextAreaResult1.setText(sResultOne);
                jTextAreaResult2.setText("");
            }
            else if(OptionRadioButtonChecked == 3) {
                iresult = (int)result;
                dfOne = binomial.df(result, dParmOne, dParmTwo);
                if(iresult == -5){
                    jTextAreaResult1.setText("No value");
                    jTextAreaResult2.setText("");
                }
                else if(iresult == -2){
                    jTextAreaResult1.setText(String.format("%d", iParmOne));
                    jTextAreaResult2.setText("");
                }
                else if(dfOne == dX) {
                        sResultOne = String.format("%d", iresult);
                        jTextAreaResult1.setText(sResultOne);
                        jTextAreaResult2.setText("");
                    }
                else {
                    dfTwo = binomial.df(result - 1.0, dParmOne, dParmTwo);
                    sResultOne = "x = ";
                    sResultOne = sResultOne.concat(String.format("%d",  iresult));
                    sResultOne = sResultOne.concat(", p = ");
                    sResultOne = sResultOne.concat(String.format("%.4f", dfOne));
                    jTextAreaResult1.setText(sResultOne);
                    sResultTwo = "x = ";
                    sResultTwo = sResultTwo.concat(String.format("%d", iresult - 1));
                    sResultTwo = sResultTwo.concat(", p = ");
                    sResultTwo = sResultTwo.concat(String.format("%.4f", dfTwo));
                    jTextAreaResult2.setText(sResultTwo);
                }
            }
            else {
                iresult = (int)result;
                dfOne = 1.0 - binomial.df(result - 1.0, dParmOne, dParmTwo);
                if(iresult == -5){
                    jTextAreaResult1.setText("No value");
                    jTextAreaResult2.setText("");
                }
                else if(iresult == -2){
                    jTextAreaResult1.setText(String.format("%d", iParmOne));
                    jTextAreaResult2.setText("");
                }
                else if(dfOne == dX) {
                        sResultOne = String.format("%d", iresult);
                        jTextAreaResult1.setText(sResultOne);
                        jTextAreaResult2.setText("");
                    }
                else {
                    dfTwo = 1.0 - binomial.df(result, dParmOne, dParmTwo);
                    sResultOne = "x = ";
                    sResultOne = sResultOne.concat(String.format("%d", iresult));
                    sResultOne = sResultOne.concat(", p = ");
                    sResultOne = sResultOne.concat(String.format("%.4f", dfOne));
                    jTextAreaResult1.setText(sResultOne);
                    sResultTwo = "x = ";
                    sResultTwo = sResultTwo.concat(String.format("%d", iresult+1));
                    sResultTwo = sResultTwo.concat(", p = ");
                    sResultTwo = sResultTwo.concat(String.format("%.4f", dfTwo));
                    jTextAreaResult2.setText(sResultTwo);
                }
            }
        }
        else {
            Poisson poisson = new Poisson(dX, dParmOne, OptionRadioButtonChecked);
            result = poisson.PoissonCalc();
            if(OptionRadioButtonChecked < 3) {
                sResultOne = String.format("%.4f", result);
                jTextAreaResult1.setText(sResultOne);
                jTextAreaResult2.setText("");
            }
            else if(OptionRadioButtonChecked == 3) {
                iresult = (int)result;
                dfOne = poisson.df(result, dParmOne, 1.0);
                if(result == -5.0) {
                    sResultOne = "infinity";
                    jTextAreaResult1.setText(sResultOne);
                    jTextAreaResult2.setText("");
                }
                else if(result == -2.0) {
                    sResultOne = "No Value";
                    jTextAreaResult1.setText(sResultOne);
                    jTextAreaResult2.setText("");
                }
                else if(dfOne == dX) {
                    sResultOne = String.format("%d", iresult);
                    jTextAreaResult1.setText(sResultOne);
                    jTextAreaResult2.setText("");
                }
                else {
                    iresult = (int)result;
                    dfTwo = poisson.df(result-1.0, dParmOne, 1.0);
                    sResultOne = "x = ";
                    sResultOne = sResultOne.concat(String.format ("%d", iresult));
                    sResultOne = sResultOne.concat(", p = ");
                    sResultOne = sResultOne.concat(String.format("%.4f", dfOne));
                    jTextAreaResult1.setText(sResultOne);
                    sResultTwo = "x = ";
                    sResultTwo = sResultTwo.concat(String.format("%d", iresult-1));
                    sResultTwo = sResultTwo.concat(", p = ");
                    sResultTwo = sResultTwo.concat(String.format("%.4f", dfTwo));
                    jTextAreaResult2.setText(sResultTwo);
                }
            }
            else {
                dfOne = 1.0 - poisson.df(result - 1.0, dParmOne, 1.0);
                iresult = (int)result;
                if(iresult == -5){
                    jTextAreaResult1.setText("No value");
                    jTextAreaResult2.setText("");
                }
                else if(iresult == -2){
                    jTextAreaResult1.setText("0.0000");
                    jTextAreaResult2.setText("");
                }
                if(dfOne == dX) {
                    sResultOne = String.format("%d", iresult);
                    jTextAreaResult1.setText(sResultOne);
                    jTextAreaResult2.setText("");
                }
                else {
                    dfTwo = 1.0 - poisson.df(result, dParmOne, 1.0);
                    sResultOne = "x = ";
                    sResultOne = sResultOne.concat(String.format("%d", iresult));
                    sResultOne = sResultOne.concat(", p = ");
                    sResultOne = sResultOne.concat(String.format("%.4f", dfOne));
                    jTextAreaResult1.setText(sResultOne);
                    sResultTwo = "x = ";
                    sResultTwo = sResultTwo.concat(String.format("%d", iresult+1));
                    sResultTwo = sResultTwo.concat(", p = ");
                    sResultTwo = sResultTwo.concat(String.format("%.4f", dfTwo));
                    jTextAreaResult2.setText(sResultTwo);
                }
            }
        }
    }//GEN-LAST:event_jButttonCalculate

       
   
    private void jTextFieldParmTwo(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldParmTwo
// TODO add your handling code here:
      boolean caught;
      caught = false;
      parmtwo = jTextFieldParmTwo.getText();
      if(DistRadioButtonChecked == 1) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: Sigma must be a positive number.");
            else if(dParmTwo <= 0.0)
                JOptionPane.showMessageDialog(null,"Error: Sigma must be a positive number.");
      }
      else if(DistRadioButtonChecked == 4) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: D.F.D. must be a positive integer.");
            else if(dParmTwo <= 0)
                  JOptionPane.showMessageDialog(null,"Error: D.F.D. must be a positive integer.");
            else if((double)(int)dParmTwo == dParmTwo)iParmTwo = (int)dParmTwo;
            else JOptionPane.showMessageDialog(null,"Error: D.F.D must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 5) {
            try {
                  dParmTwo = Double.parseDouble(parmtwo);
            }
            catch(NumberFormatException numberFormatException) {
                  caught = true;
            }
            if(caught)
                  JOptionPane.showMessageDialog(null,"Error: p must be a number between 0 and 1.");
            else if(dParmTwo < 0 || dParmTwo > 1)
                  JOptionPane.showMessageDialog(null,"Error: p must be a number between 0 and 1.");
      }
    }//GEN-LAST:event_jTextFieldParmTwo

    private void jTextFieldParmOne(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldParmOne
// TODO add your handling code here:
      boolean caught;
      caught = false;
      parmone = jTextFieldParmOne.getText();
      if(DistRadioButtonChecked == 1) {
         try {
             dParmOne = Double.parseDouble(parmone);
         }
         catch(NumberFormatException numberFormatException) {
             JOptionPane.showMessageDialog(null,"Error: Mu must be a number.");
         }
      }
      else if(DistRadioButtonChecked == 2) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 3) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 4) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
          else if(dParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: D.F.N. must be a positive integer.");
      }
      else if(DistRadioButtonChecked == 5) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: n must be a positive integer.");
          else if(iParmOne <= 0)
              JOptionPane.showMessageDialog(null,"Error: n must be a positive integer.");
          else if((double)(int)dParmOne == dParmOne)iParmOne = (int)dParmOne;
          else JOptionPane.showMessageDialog(null,"Error: n must be a positive integer");
      }
      else if(DistRadioButtonChecked == 6) {
          try {
              dParmOne = Double.parseDouble(parmone);
          }
          catch(NumberFormatException numberFormatException) {
              caught = true;
          }
          if(caught)
              JOptionPane.showMessageDialog(null,"Error: Lambda must be a positive number.");
          else if(dParmOne <= 0.0)
              JOptionPane.showMessageDialog(null,"Error: Lambda must be a positive number.");
      }
    }//GEN-LAST:event_jTextFieldParmOne

    private void jTextFieldX(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldX
// TODO add your handling code here:
        x = jTextFieldX.getText();
        try {
            dX = Double.parseDouble(x);
        }
        catch(NumberFormatException numberFormatException) {
            JOptionPane.showMessageDialog(null,"Error: X must be a number.");
        }
    }//GEN-LAST:event_jTextFieldX

    private void OptionsRadioButton(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OptionsRadioButton
// TODO add your handling code here:
        String ostring;
        String option = buttonGroupOptions.getSelection().getActionCommand();
        if(option == "P(X <= x) = Result") {
            OptionRadioButtonChecked = 1;
            ostring = String.format("P(X <= x) = Result");
        }
        else if(option == "P(X >= x) = Result") {
            OptionRadioButtonChecked = 2;
            ostring = String.format("P(X >= x) = Result");
        }
        else if(option == "P(X <= Result) = x") {
            OptionRadioButtonChecked = 3;
            ostring = String.format("P(X <= Result) = x");
        }
        else {
            OptionRadioButtonChecked = 4;
            ostring = String.format("P(X >= Result) = x");
        }
    }//GEN-LAST:event_OptionsRadioButton

    private void DistRadioButtonHandler(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DistRadioButtonHandler
// TODO add your handling code here:
        String string;
        String distribution = buttonGroupDistributions.getSelection().getActionCommand();
        if(distribution == "Normal"){
            DistRadioButtonChecked = 1;
            jLabelParmOne.setText("mu");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("sigma");
            jTextFieldParmTwo.setVisible(true);
            string = String.format("Normal");
        }
        else if(distribution == "t"){
            DistRadioButtonChecked = 2;
            jLabelParmOne.setText("d.f.");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("");
            jTextFieldParmTwo.setVisible(false);
            string = String.format("t");
        }
        else if(distribution == "Chi-square"){
            DistRadioButtonChecked = 3;
            jLabelParmOne.setText("d.f.");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("");
            jTextFieldParmTwo.setVisible(false);
            string = String.format("Chi-Square");
        }
        else if(distribution == "F"){
            DistRadioButtonChecked = 4;
            jLabelParmOne.setText("d.f.n.");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("d.f.d.");
            jTextFieldParmTwo.setVisible(true);
            string = String.format("F");
        }
        else if(distribution == "Binomial"){
            DistRadioButtonChecked = 5;
            jLabelParmOne.setText("n");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("p");
            jTextFieldParmTwo.setVisible(true);
            string = String.format("Binomial");
        }
        else if(distribution == "Poisson") {
            DistRadioButtonChecked = 6;
            jLabelParmOne.setText("lambda");
            jTextFieldParmOne.setVisible(true);
            jLabelParmTwo.setText("");
            jTextFieldParmTwo.setVisible(false);
            string = String.format("Poisson");
        }
    }//GEN-LAST:event_DistRadioButtonHandler
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CalculatorGUIJFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroupDistributions;
    private javax.swing.ButtonGroup buttonGroupOptions;
    private javax.swing.JButton jButtonCalculate;
    private javax.swing.JLabel jLabelParmOne;
    private javax.swing.JLabel jLabelParmTwo;
    private javax.swing.JLabel jLabelX;
    private javax.swing.JLabel jLabelresult;
    private javax.swing.JPanel jPanelCenter;
    private javax.swing.JPanel jPanelDistributions;
    private javax.swing.JPanel jPanelLeft;
    private javax.swing.JPanel jPanelOptions;
    private javax.swing.JPanel jPanelParmOne;
    private javax.swing.JPanel jPanelParmTwo;
    private javax.swing.JPanel jPanelResult;
    private javax.swing.JPanel jPanelRight;
    private javax.swing.JPanel jPanelX;
    private javax.swing.JRadioButton jRadioButtonBinomial;
    private javax.swing.JRadioButton jRadioButtonChiSquare;
    private javax.swing.JRadioButton jRadioButtonDF;
    private javax.swing.JRadioButton jRadioButtonDFComp;
    private javax.swing.JRadioButton jRadioButtonF;
    private javax.swing.JRadioButton jRadioButtonInvDF;
    private javax.swing.JRadioButton jRadioButtonInvDFComp;
    private javax.swing.JRadioButton jRadioButtonNormal;
    private javax.swing.JRadioButton jRadioButtonPoisson;
    private javax.swing.JRadioButton jRadioButtonT;
    private javax.swing.JTextArea jTextAreaResult1;
    private javax.swing.JTextArea jTextAreaResult2;
    private javax.swing.JTextField jTextFieldParmOne;
    private javax.swing.JTextField jTextFieldParmTwo;
    private javax.swing.JTextField jTextFieldX;
    // End of variables declaration//GEN-END:variables
    
}
