/*
* CalculatorDialog.java
*
* Created on October 10, 2008, 2:21 PM
*/
package org.statcato.dialogs.calc;
import org.statcato.calculator.*;
import org.statcato.StatcatoDialog;
import org.statcato.utils.HelperFunctions;
import org.statcato.Statcato;
import javax.swing.*;
import java.util.Vector;
/**
*
* @author Margaret Yau
*/
public class CalculatorDialog extends StatcatoDialog {
/** Creates new form CalculatorDialog */
public CalculatorDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
this.app = (Statcato)parent;
this.ParentSpreadsheet = app.getSpreadsheet();
initComponents();
getRootPane().setDefaultButton(OKButton);
ButtonGroup group1 = new ButtonGroup();
group1.add(RadRadioButton);
group1.add(DegRadioButton);
// initialize functions list
FunList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//FunList.setLayoutOrientation(JList.VERTICAL_WRAP);
FunList.setListData(MathFunctions.getSortedFunNames());
ResultPanel.setVisible(false);
pack();
setHelpFile("calc-calculator");
name = "Calculator";
description = "For basic calculations involving data in columns " +
"or constants.";
helpStrings.add("Enter a valid expression to evaluate. Press F1 for help.");
}
/** 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.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
ExpTextField = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
BackButton = new javax.swing.JButton();
ClearButton = new javax.swing.JButton();
OKButton = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
PiButton = new javax.swing.JButton();
Num4Button = new javax.swing.JButton();
Num0Button = new javax.swing.JButton();
Num8Button = new javax.swing.JButton();
Num5Button = new javax.swing.JButton();
Num2Button = new javax.swing.JButton();
Num7Button = new javax.swing.JButton();
DotButton = new javax.swing.JButton();
Num1Button = new javax.swing.JButton();
Num3Button = new javax.swing.JButton();
Num9Button = new javax.swing.JButton();
Num6Button = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
MinusButton = new javax.swing.JButton();
PlusButton = new javax.swing.JButton();
MultiplyButton = new javax.swing.JButton();
PowerButton = new javax.swing.JButton();
DivideButton = new javax.swing.JButton();
ParanButton = new javax.swing.JButton();
SqrtButton = new javax.swing.JButton();
ExpButton = new javax.swing.JButton();
jPanel4 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
FunList = new javax.swing.JList();
FunButton = new javax.swing.JButton();
ResultPanel = new javax.swing.JPanel();
ResultLabel = new javax.swing.JLabel();
jPanel5 = new javax.swing.JPanel();
DegRadioButton = new javax.swing.JRadioButton();
RadRadioButton = new javax.swing.JRadioButton();
jPanel6 = new javax.swing.JPanel();
StoreLabel = new javax.swing.JLabel();
StoreCheckBox = new javax.swing.JCheckBox();
StoreTextField = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Calculator");
jLabel1.setText("Enter expression:");
BackButton.setText("← Back");
BackButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BackButtonActionPerformed(evt);
}
});
ClearButton.setText("Clear");
ClearButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ClearButtonActionPerformed(evt);
}
});
OKButton.setText("↵ OK");
OKButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OKButtonActionPerformed(evt);
}
});
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.LEADING)
.addComponent(jLabel1)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(ExpTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 308, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(34, 34, 34)
.addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(BackButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ClearButton)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {BackButton, ClearButton, OKButton});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ExpTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(BackButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ClearButton))
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Numbers"));
PiButton.setText("π\n");
PiButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PiButtonActionPerformed(evt);
}
});
Num4Button.setText("4");
Num4Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num4ButtonActionPerformed(evt);
}
});
Num0Button.setText("0");
Num0Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num0ButtonActionPerformed(evt);
}
});
Num8Button.setText("8");
Num8Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num8ButtonActionPerformed(evt);
}
});
Num5Button.setText("5");
Num5Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num5ButtonActionPerformed(evt);
}
});
Num2Button.setText("2");
Num2Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num2ButtonActionPerformed(evt);
}
});
Num7Button.setText("7");
Num7Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num7ButtonActionPerformed(evt);
}
});
DotButton.setText(".");
DotButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DotButtonActionPerformed(evt);
}
});
Num1Button.setText("1");
Num1Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num1ButtonActionPerformed(evt);
}
});
Num3Button.setText("3");
Num3Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num3ButtonActionPerformed(evt);
}
});
Num9Button.setText("9");
Num9Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num9ButtonActionPerformed(evt);
}
});
Num6Button.setText("6");
Num6Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Num6ButtonActionPerformed(evt);
}
});
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)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(Num7Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num8Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num9Button))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(Num4Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num5Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num6Button))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(Num1Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num2Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Num3Button))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(Num0Button)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(DotButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(PiButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {DotButton, Num0Button, Num1Button, Num2Button, Num3Button, Num4Button, Num5Button, Num6Button, Num7Button, Num8Button, Num9Button, PiButton});
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Num7Button)
.addComponent(Num8Button)
.addComponent(Num9Button))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Num4Button)
.addComponent(Num5Button)
.addComponent(Num6Button))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Num1Button)
.addComponent(Num2Button)
.addComponent(Num3Button))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Num0Button)
.addComponent(DotButton)
.addComponent(PiButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Operators"));
MinusButton.setText("-");
MinusButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MinusButtonActionPerformed(evt);
}
});
PlusButton.setText("+");
PlusButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PlusButtonActionPerformed(evt);
}
});
MultiplyButton.setText("*");
MultiplyButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MultiplyButtonActionPerformed(evt);
}
});
PowerButton.setText("^");
PowerButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PowerButtonActionPerformed(evt);
}
});
DivideButton.setText("/");
DivideButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
DivideButtonActionPerformed(evt);
}
});
ParanButton.setText("()");
ParanButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ParanButtonActionPerformed(evt);
}
});
SqrtButton.setText("√\n");
SqrtButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SqrtButtonActionPerformed(evt);
}
});
ExpButton.setText("e^");
ExpButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExpButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(PowerButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ParanButton))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(PlusButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(MinusButton))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(MultiplyButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(DivideButton))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(SqrtButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ExpButton, 0, 1, Short.MAX_VALUE)))
.addContainerGap(16, Short.MAX_VALUE))
);
jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {DivideButton, ExpButton, MinusButton, MultiplyButton, ParanButton, PlusButton, PowerButton, SqrtButton});
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(PlusButton)
.addComponent(MinusButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(MultiplyButton)
.addComponent(DivideButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(PowerButton)
.addComponent(ParanButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(SqrtButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ExpButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(13, Short.MAX_VALUE))
);
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Functions"));
jScrollPane1.setViewportView(FunList);
FunButton.setText("Select");
FunButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
FunButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(FunButton))
.addContainerGap(38, Short.MAX_VALUE))
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 82, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(FunButton)
.addContainerGap(12, Short.MAX_VALUE))
);
ResultPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Result"));
javax.swing.GroupLayout ResultPanelLayout = new javax.swing.GroupLayout(ResultPanel);
ResultPanel.setLayout(ResultPanelLayout);
ResultPanelLayout.setHorizontalGroup(
ResultPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ResultPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(ResultLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
ResultPanelLayout.setVerticalGroup(
ResultPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(ResultPanelLayout.createSequentialGroup()
.addComponent(ResultLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE)
.addContainerGap())
);
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("For Trigonometric Functions"));
DegRadioButton.setText("Degrees");
RadRadioButton.setSelected(true);
RadRadioButton.setText("Radians");
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(RadRadioButton)
.addComponent(DegRadioButton))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(RadRadioButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(DegRadioButton)
.addContainerGap(16, Short.MAX_VALUE))
);
jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Store Results"));
StoreLabel.setText("Column:");
StoreLabel.setEnabled(false);
StoreCheckBox.setText("Store in Worksheet");
StoreCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
StoreCheckBoxActionPerformed(evt);
}
});
StoreTextField.setEnabled(false);
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(StoreLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(StoreTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(StoreCheckBox))
.addContainerGap(19, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(StoreCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(StoreLabel)
.addComponent(StoreTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(ResultPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 86, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ResultPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// //GEN-END:initComponents
private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OKButtonActionPerformed
String exp = ExpTextField.getText();
if (!exp.equals("")) {
String output = "";
MathExpParserComplete parser = new MathExpParserComplete(ParentSpreadsheet);
CompUnit result = parser.parse(exp, RadRadioButton.isSelected());
if (result == null)
output = "" + parser.getError() + "";
else
output = "" + result + "
";
if (StoreCheckBox.isSelected()) {
String storeColumn = StoreTextField.getText();
if (!storeColumn.equals("")) {
// check if Column is valid
int storeColumnNum = ParentSpreadsheet.getColumnNumber(storeColumn);
if (storeColumnNum == -1) { // invalid column
app.showErrorDialog("Enter a valid column name (e.g. C1) or a valid variable name to store the results.");
return;
}
Vector v;
if (result != null)
{
if (result.getType() == Token.NUMBER){
v = new Vector();
v.addElement(new Double(result.getNumber()));
}
else
v = result.getColumn();
ParentSpreadsheet.setColumn(storeColumnNum,
HelperFunctions.ConvertDoubleVectorToString(v));
output = "" + result + "
" +
"Stored in " + storeColumn + "";
}
}
}
ResultLabel.setText(output);
ResultPanel.setVisible(true);
pack();
}
else {
ResultPanel.setVisible(false);
}
}//GEN-LAST:event_OKButtonActionPerformed
private void Num7ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num7ButtonActionPerformed
addText("7");
}//GEN-LAST:event_Num7ButtonActionPerformed
private void Num8ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num8ButtonActionPerformed
addText("8");
}//GEN-LAST:event_Num8ButtonActionPerformed
private void Num9ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num9ButtonActionPerformed
addText("9");
}//GEN-LAST:event_Num9ButtonActionPerformed
private void Num4ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num4ButtonActionPerformed
addText("4");
}//GEN-LAST:event_Num4ButtonActionPerformed
private void Num5ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num5ButtonActionPerformed
addText("5");
}//GEN-LAST:event_Num5ButtonActionPerformed
private void Num6ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num6ButtonActionPerformed
addText("6");
}//GEN-LAST:event_Num6ButtonActionPerformed
private void Num1ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num1ButtonActionPerformed
addText("1");
}//GEN-LAST:event_Num1ButtonActionPerformed
private void Num2ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num2ButtonActionPerformed
addText("2");
}//GEN-LAST:event_Num2ButtonActionPerformed
private void Num3ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num3ButtonActionPerformed
addText("3");
}//GEN-LAST:event_Num3ButtonActionPerformed
private void Num0ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Num0ButtonActionPerformed
addText("0");
}//GEN-LAST:event_Num0ButtonActionPerformed
private void DotButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DotButtonActionPerformed
addText(".");
}//GEN-LAST:event_DotButtonActionPerformed
private void PiButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PiButtonActionPerformed
addText("pi");
}//GEN-LAST:event_PiButtonActionPerformed
private void PlusButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PlusButtonActionPerformed
addText("+");
}//GEN-LAST:event_PlusButtonActionPerformed
private void MinusButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MinusButtonActionPerformed
addText("-");
}//GEN-LAST:event_MinusButtonActionPerformed
private void MultiplyButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MultiplyButtonActionPerformed
addText("*");
}//GEN-LAST:event_MultiplyButtonActionPerformed
private void DivideButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_DivideButtonActionPerformed
addText("/");
}//GEN-LAST:event_DivideButtonActionPerformed
private void PowerButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PowerButtonActionPerformed
addText("^");
}//GEN-LAST:event_PowerButtonActionPerformed
private void ParanButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ParanButtonActionPerformed
int pos = ExpTextField.getCaretPosition();
addText("()");
ExpTextField.setCaretPosition(pos+1);
}//GEN-LAST:event_ParanButtonActionPerformed
private void BackButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BackButtonActionPerformed
int pos = ExpTextField.getCaretPosition();
String text = ExpTextField.getText().trim();
String newText = "";
if (!text.equals("")) {
newText = text.substring(0, pos-1);
if (pos < text.length())
newText += text.substring(pos);
ExpTextField.setText(newText);
ExpTextField.setCaretPosition(pos-1);
}
ExpTextField.requestFocusInWindow();
}//GEN-LAST:event_BackButtonActionPerformed
private void SqrtButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SqrtButtonActionPerformed
int pos = ExpTextField.getCaretPosition();
addText("sqrt()");
ExpTextField.setCaretPosition(pos+5);
}//GEN-LAST:event_SqrtButtonActionPerformed
private void ExpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExpButtonActionPerformed
int pos = ExpTextField.getCaretPosition();
addText("exp()");
ExpTextField.setCaretPosition(pos+4);
}//GEN-LAST:event_ExpButtonActionPerformed
private void FunButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_FunButtonActionPerformed
String fun = (String)FunList.getSelectedValue();
int pos = ExpTextField.getCaretPosition();
addText(fun + "()");
ExpTextField.setCaretPosition(pos+fun.length()+1);
}//GEN-LAST:event_FunButtonActionPerformed
private void ClearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ClearButtonActionPerformed
ExpTextField.setText("");
ResultPanel.setVisible(false);
pack();
ExpTextField.requestFocusInWindow();
}//GEN-LAST:event_ClearButtonActionPerformed
private void StoreCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_StoreCheckBoxActionPerformed
if (StoreCheckBox.isSelected()) {
StoreLabel.setEnabled(true);
StoreTextField.setEnabled(true);
}
else {
StoreLabel.setEnabled(false);
StoreTextField.setEnabled(false);
}
}//GEN-LAST:event_StoreCheckBoxActionPerformed
private void addText(String str) {
int pos = ExpTextField.getCaretPosition();
String text = ExpTextField.getText();
String newText = "";
if (text.equals(""))
newText = str;
else {
newText = text.substring(0, pos) + str;
if (pos < text.length())
newText += text.substring(pos);
}
ExpTextField.setText(newText);
ExpTextField.setCaretPosition(pos+str.length());
ExpTextField.requestFocusInWindow();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton BackButton;
private javax.swing.JButton ClearButton;
private javax.swing.JRadioButton DegRadioButton;
private javax.swing.JButton DivideButton;
private javax.swing.JButton DotButton;
private javax.swing.JButton ExpButton;
private javax.swing.JTextField ExpTextField;
private javax.swing.JButton FunButton;
private javax.swing.JList FunList;
private javax.swing.JButton MinusButton;
private javax.swing.JButton MultiplyButton;
private javax.swing.JButton Num0Button;
private javax.swing.JButton Num1Button;
private javax.swing.JButton Num2Button;
private javax.swing.JButton Num3Button;
private javax.swing.JButton Num4Button;
private javax.swing.JButton Num5Button;
private javax.swing.JButton Num6Button;
private javax.swing.JButton Num7Button;
private javax.swing.JButton Num8Button;
private javax.swing.JButton Num9Button;
private javax.swing.JButton OKButton;
private javax.swing.JButton ParanButton;
private javax.swing.JButton PiButton;
private javax.swing.JButton PlusButton;
private javax.swing.JButton PowerButton;
private javax.swing.JRadioButton RadRadioButton;
private javax.swing.JLabel ResultLabel;
private javax.swing.JPanel ResultPanel;
private javax.swing.JButton SqrtButton;
private javax.swing.JCheckBox StoreCheckBox;
private javax.swing.JLabel StoreLabel;
private javax.swing.JTextField StoreTextField;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration//GEN-END:variables
}
Ads help maintain this website.