@SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        txtExpression = new javax.swing.JTextField();
        lblExpression = new javax.swing.JLabel();
        txtExpression1 = new javax.swing.JTextField();
        lblExpression1 = new javax.swing.JLabel();
        pnlVariables = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tableVars = new javax.swing.JTable();
        btnAddV = new javax.swing.JButton();
        btnChangeV = new javax.swing.JButton();
        btnRemoveV = new javax.swing.JButton();
        btnInsertVar = new javax.swing.JButton();
        lblVarDesc = new javax.swing.JLabel();
        txtVarName = new javax.swing.JTextField();
        txtVarValue = new javax.swing.JTextField();
        lblVarName = new javax.swing.JLabel();
        lblVarValue = new javax.swing.JLabel();
        spinRadix = new javax.swing.JSpinner();
        txtRadixValue = new javax.swing.JTextField();
        lblRadixVal = new javax.swing.JLabel();
        lblRadix = new javax.swing.JLabel();
        btnDifRadix = new javax.swing.JButton();
        pnlFuncAndOprt = new javax.swing.JPanel();
        lblFunction = new javax.swing.JLabel();
        comboAddFunc = new javax.swing.JComboBox();
        btnAddFunc = new javax.swing.JButton();
        btnPlus = new javax.swing.JButton();
        btnMinus = new javax.swing.JButton();
        btnMultiply = new javax.swing.JButton();
        btnDivide = new javax.swing.JButton();
        btnPower = new javax.swing.JButton();
        btnBrackets = new javax.swing.JButton();
        btnBrackets1 = new javax.swing.JButton();
        lblFuncOprtDesc = new javax.swing.JLabel();
        lblAnswerDesc = new javax.swing.JLabel();
        lblTitle = new javax.swing.JLabel();
        btnHelp = new javax.swing.JButton();
        btnAbout = new javax.swing.JButton();
        btnSettings = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("mathex™ Solver");
        setFont(new java.awt.Font("Calibri", 0, 10)); // NOI18N
        setResizable(false);

        txtExpression.setFont(new java.awt.Font("Cambria Math", 0, 18)); // NOI18N
        txtExpression.setToolTipText("<html>\n<body bgcolor=\"white\">\nExpression box; Press <b>[ENTER]</b> to simplify. <br />\ne.g.: <font color=\"#00ccff\">3 * 7 (10 - #log[2, $x]) - 3*#ln[4]</font>\n</body>\n</html>");
        txtExpression.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtExpressionActionPerformed(evt);
            }
        });
        txtExpression.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtExpressionKeyPressed(evt);
            }
        });

        lblExpression.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblExpression.setLabelFor(txtExpression);
        lblExpression.setText("Enter your expression below; Press [ENTER] to solve.");
        lblExpression.setToolTipText("");

        txtExpression1.setEditable(false);
        txtExpression1.setFont(new java.awt.Font("Cambria Math", 0, 18)); // NOI18N
        txtExpression1.setToolTipText("<html>\n<body bgcolor=\"white\">Answer. Click to copy to clipboard.</body>\n</html>");
        txtExpression1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                txtExpression1MouseClicked(evt);
            }
        });
        txtExpression1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtExpression1ActionPerformed(evt);
            }
        });
        txtExpression1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtExpression1KeyPressed(evt);
            }
        });

        lblExpression1.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblExpression1.setLabelFor(txtExpression);
        lblExpression1.setText("Answer goes here.");
        lblExpression1.setToolTipText("");

        pnlVariables.setBorder(javax.swing.BorderFactory.createTitledBorder("Variables and numbers"));
        pnlVariables.setToolTipText("");
        pnlVariables.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N

        tableVars.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        tableVars.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Name", "Value"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Double.class
            };
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tableVars.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                tableVarsPropertyChange(evt);
            }
        });
        jScrollPane1.setViewportView(tableVars);

        btnAddV.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnAddV.setText("Add");
        btnAddV.setToolTipText("<html>\n<body bgcolor=\"white\">Add variable</body>\n</html>");
        btnAddV.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAddVActionPerformed(evt);
            }
        });

        btnChangeV.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnChangeV.setText("Change");
        btnChangeV.setToolTipText("<html>\n<body bgcolor=\"white\">Change variable to the current value represented by Expression box.</body>\n</html>");
        btnChangeV.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnChangeVActionPerformed(evt);
            }
        });

        btnRemoveV.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnRemoveV.setText("Remove");
        btnRemoveV.setToolTipText("<html>\n<body bgcolor=\"white\">Remove variable</body>\n</html>");
        btnRemoveV.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRemoveVActionPerformed(evt);
            }
        });

        btnInsertVar.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnInsertVar.setText("Insert");
        btnInsertVar.setToolTipText("<html>\n<body bgcolor=\"white\">Insert variable into the expression box.</body>\n</html>");
        btnInsertVar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnInsertVarActionPerformed(evt);
            }
        });

        lblVarDesc.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblVarDesc.setText("<html><font color = \"#009999\">\nYou can enter a mathex™ into the value box. <br />\nTo enter a value from a radix other than 10, &radix_number.<br />\n<font color = \"#990066\">N.B.: When inserting a variable manually, <br />\nalways prefix it with a dolar sign. ($)</font>\n</html>");

        txtVarName.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        txtVarName.setToolTipText("<html>\n<body bgcolor=\"white\">Name of the variable. <br/>\nMust be a letter or a number.</body>\n</html>");

        txtVarValue.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        txtVarValue.setToolTipText("<html>\n<body bgcolor=\"white\">Variable value <br />\nThis text field supports mathex™ too.</body>\n</html>");

        lblVarName.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblVarName.setLabelFor(txtVarName);
        lblVarName.setText("Name");

        lblVarValue.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblVarValue.setLabelFor(txtVarValue);
        lblVarValue.setText("Value");

        spinRadix.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        spinRadix.setModel(new javax.swing.SpinnerNumberModel(16, 2, 36, 1));
        spinRadix.setToolTipText("<html>\n<body bgcolor=\"white\">\nSupports binary (&2_), octal (&8_), hexadecimal (&16_). <br />\nSupported radixes: 2, 3, 4, ..., 35, 36 <br />\ni.e.: 36 radix number contains of 0-9a-z digits. <br />\n</body>\n</html>");

        txtRadixValue.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        txtRadixValue.setToolTipText("<html>\n<body bgcolor=\"white\">\ne.g.: 00ff00\n</body>\n</html>");

        lblRadixVal.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblRadixVal.setText("Value");

        lblRadix.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblRadix.setText("Radix");

        btnDifRadix.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnDifRadix.setText("Insert");
        btnDifRadix.setToolTipText("");
        btnDifRadix.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnDifRadixActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlVariablesLayout = new javax.swing.GroupLayout(pnlVariables);
        pnlVariables.setLayout(pnlVariablesLayout);
        pnlVariablesLayout.setHorizontalGroup(
            pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlVariablesLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblVarDesc)
                    .addGroup(pnlVariablesLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(pnlVariablesLayout.createSequentialGroup()
                                .addComponent(btnChangeV)
                                .addGap(18, 18, 18)
                                .addComponent(btnRemoveV))
                            .addComponent(btnAddV, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(pnlVariablesLayout.createSequentialGroup()
                                .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(lblVarName, javax.swing.GroupLayout.DEFAULT_SIZE, 37, Short.MAX_VALUE)
                                    .addComponent(lblVarValue, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(txtVarName)
                                    .addComponent(txtVarValue)))
                            .addComponent(btnInsertVar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(pnlVariablesLayout.createSequentialGroup()
                        .addComponent(lblRadixVal, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtRadixValue, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(lblRadix, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(spinRadix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnDifRadix, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap())
        );

        pnlVariablesLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblRadix, lblRadixVal});

        pnlVariablesLayout.setVerticalGroup(
            pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlVariablesLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(pnlVariablesLayout.createSequentialGroup()
                        .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtVarName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblVarName))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(txtVarValue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblVarValue))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnAddV)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(btnChangeV)
                            .addComponent(btnRemoveV))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnInsertVar))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblVarDesc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(pnlVariablesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtRadixValue, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblRadixVal)
                    .addComponent(spinRadix, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblRadix)
                    .addComponent(btnDifRadix))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pnlFuncAndOprt.setBorder(javax.swing.BorderFactory.createTitledBorder("Functions and operators"));
        pnlFuncAndOprt.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N

        lblFunction.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblFunction.setLabelFor(comboAddFunc);
        lblFunction.setText("Select Function");

        comboAddFunc.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        comboAddFunc.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "#log[,]", "#ln[]", "#lg[]", "#sin[]", "#sinh[]", "#asin[]", "#cos[]", "#cosh[]", "#acos[]", "#tan[]", "#tanh[]", "#atan[]", "#csc[]", "#sec[]", "#cot[]" }));
        comboAddFunc.setToolTipText("<html>\n<body bgcolor=\"white\">\n<font color=\"#990066\"><b>Functions quick reference</b></font><br/>\n<font color=\"#009999\">\n#log[base, value] <i>Finds base \"base\" logarithm.</i><br/>\n#ln[value] <i>Finds natural logarithm.</i><br/>\n#lg[value] <i>Finds base 10 logarithm.</i><br/>\n#sin[value] <i>Finds sine.</i><br/>\n#sinh[value] <i>Finds hyperbolic sine.</i><br/>\n#asin[value] <i>Finds inverse sine.</i><br/>\n#cos[value] <i>Finds cosine.</i><br/>\n#cosh[value]<i>Finds hyperbolic cosine.</i><br/>\n#acos[value] <i>Finds inverse cosine.</i><br/>\n#tan[value] <i>Finds tangent.</i><br/>\n#tanh[value] <i>Finds hyperbolic tangent.</i><br/>\n#atan[value] <i>Finds inverse tangent.</i><br/>\n#csc[value] <i>Finds cosecant.</i><br/>\n#sec[value] <i>Finds secant.</i><br/>\n#cot[value] <i>Finds cotangent.</i><br/>\n</font>\n</body>\n</html>");

        btnAddFunc.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnAddFunc.setText("Insert function");
        btnAddFunc.setToolTipText("<html>\n<body bgcolor=\"white\">\nInsert function into the Expression box.\n</body>\n</html>");
        btnAddFunc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAddFuncActionPerformed(evt);
            }
        });

        btnPlus.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnPlus.setText("+");
        btnPlus.setToolTipText("<html>\n<body bgcolor=\"white\">Addition</body>\n</html>");
        btnPlus.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPlusActionPerformed(evt);
            }
        });

        btnMinus.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnMinus.setText("-");
        btnMinus.setToolTipText("<html>\n<body bgcolor=\"white\">Subtraction</body>\n</html>");
        btnMinus.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMinusActionPerformed(evt);
            }
        });

        btnMultiply.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnMultiply.setText("*");
        btnMultiply.setToolTipText("<html>\n<body bgcolor=\"white\">Multiplication</body>\n</html>");
        btnMultiply.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMultiplyActionPerformed(evt);
            }
        });

        btnDivide.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnDivide.setText("/");
        btnDivide.setToolTipText("<html>\n<body bgcolor=\"white\">Division</body>\n</html>");
        btnDivide.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnDivideActionPerformed(evt);
            }
        });

        btnPower.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnPower.setText("^");
        btnPower.setToolTipText("<html>\n<body bgcolor=\"white\">\nPower\n</body>\n</html>");
        btnPower.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnPowerActionPerformed(evt);
            }
        });

        btnBrackets.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnBrackets.setText("Surround with (...)");
        btnBrackets.setToolTipText("<html>\n<body bgcolor=\"white\">\nSurround (selected part of) the expression with brackets.\n</body>\n</html>");
        btnBrackets.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBracketsActionPerformed(evt);
            }
        });

        btnBrackets1.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnBrackets1.setText("Insert ( )");
        btnBrackets1.setToolTipText("<html>\n<body bgcolor=\"white\">\nInsert brackets.\n</body>\n</html>");
        btnBrackets1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnBrackets1ActionPerformed(evt);
            }
        });

        lblFuncOprtDesc.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblFuncOprtDesc.setText("<html>\n<font color  = \"#009999\">Inserted to the current cursor position. </font><br />\n<font color  = \"#990066\">N.B.: When inserting a function manually, <br />\nalways prefix with a hash (#) sign and, <br />\nuse comma-separated arguments inside square brackets.</font>\n</html>");

        javax.swing.GroupLayout pnlFuncAndOprtLayout = new javax.swing.GroupLayout(pnlFuncAndOprt);
        pnlFuncAndOprt.setLayout(pnlFuncAndOprtLayout);
        pnlFuncAndOprtLayout.setHorizontalGroup(
            pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlFuncAndOprtLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlFuncAndOprtLayout.createSequentialGroup()
                        .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(btnAddFunc, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(lblFuncOprtDesc, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlFuncAndOprtLayout.createSequentialGroup()
                                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(pnlFuncAndOprtLayout.createSequentialGroup()
                                        .addComponent(btnPlus)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(btnMinus))
                                    .addComponent(btnBrackets1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(pnlFuncAndOprtLayout.createSequentialGroup()
                                        .addComponent(btnMultiply)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(btnDivide)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(btnPower))
                                    .addComponent(btnBrackets, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE))))
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlFuncAndOprtLayout.createSequentialGroup()
                        .addComponent(lblFunction, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(comboAddFunc, javax.swing.GroupLayout.PREFERRED_SIZE, 129, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        pnlFuncAndOprtLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnDivide, btnMinus, btnMultiply, btnPlus, btnPower});

        pnlFuncAndOprtLayout.setVerticalGroup(
            pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlFuncAndOprtLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnPlus)
                    .addComponent(btnMinus)
                    .addComponent(btnMultiply)
                    .addComponent(btnDivide)
                    .addComponent(btnPower))
                .addGap(18, 18, 18)
                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnBrackets1)
                    .addComponent(btnBrackets))
                .addGap(18, 18, 18)
                .addComponent(lblFuncOprtDesc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 33, Short.MAX_VALUE)
                .addGroup(pnlFuncAndOprtLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(comboAddFunc, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblFunction))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnAddFunc)
                .addContainerGap())
        );

        pnlFuncAndOprtLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnDivide, btnMinus, btnMultiply, btnPlus, btnPower});

        pnlFuncAndOprtLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnBrackets, btnBrackets1});

        lblAnswerDesc.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        lblAnswerDesc.setText("...");
        lblAnswerDesc.setToolTipText("");

        lblTitle.setFont(new java.awt.Font("Segoe UI Semilight", 0, 12)); // NOI18N
        lblTitle.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTitle.setText("<html>\n<font size = \"6\" color = \"#ff0066\">math</font><font size = \"7\" color=\"#00ccff\" >ex</font>™ <font size=\"5\">Solver</font> v0.1.0.0 <i>alpha</i>\n</html>");
        lblTitle.setToolTipText("<html>\n<a href = \"mailto:umstek@gmail.com\"> e-mail: umstek@live.com </a>\n</html>");

        btnHelp.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnHelp.setText("Help");
        btnHelp.setToolTipText("NOT IMPLEMENTED YET");

        btnAbout.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnAbout.setText("About");
        btnAbout.setToolTipText("<html>\n<body bgcolor=\"white\">\nAbout this software\n</body>\n</html>");
        btnAbout.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAboutActionPerformed(evt);
            }
        });

        btnSettings.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N
        btnSettings.setText("Settings");
        btnSettings.setToolTipText("NOT IMPLEMENTED YET");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtExpression)
                    .addComponent(lblAnswerDesc, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(txtExpression1)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(lblTitle, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(lblExpression, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btnSettings)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnHelp)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnAbout))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(pnlVariables, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(pnlFuncAndOprt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addComponent(lblExpression1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnAbout, btnHelp, btnSettings});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lblTitle, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btnSettings, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(btnHelp)
                        .addComponent(btnAbout)))
                .addGap(18, 18, 18)
                .addComponent(lblExpression)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtExpression, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(pnlFuncAndOprt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(pnlVariables, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(lblExpression1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtExpression1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblAnswerDesc)
                .addContainerGap(13, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {btnAbout, btnHelp, btnSettings});

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