1
0
mirror of https://github.com/DanilaFe/abacus synced 2024-10-01 10:50:50 -07:00

Add Stop Button

This commit is contained in:
rileyJones 2017-07-31 14:55:20 -07:00
parent 699ba9e193
commit dd915136c6

View File

@ -16,12 +16,15 @@ import java.awt.event.MouseEvent;
*/ */
public class Window extends JFrame { public class Window extends JFrame {
private boolean contComputation;
private static final String CALC_STRING = "Calculate"; private static final String CALC_STRING = "Calculate";
private static final String SYNTAX_ERR_STRING = "Syntax Error"; private static final String SYNTAX_ERR_STRING = "Syntax Error";
private static final String EVAL_ERR_STRING = "Evaluation Error"; private static final String EVAL_ERR_STRING = "Evaluation Error";
private static final String NUMBER_SYSTEM_LABEL = "Number Type:"; private static final String NUMBER_SYSTEM_LABEL = "Number Type:";
private static final String FUNCTION_LABEL = "Functions:"; private static final String FUNCTION_LABEL = "Functions:";
private static final String STOP_STRING = "Stop";
private static final String STOPPED_TEXT = "Stop";
/** /**
* Array of Strings to which the "calculate" button's text * Array of Strings to which the "calculate" button's text
* changes. For instance, in the graph tab, the name will * changes. For instance, in the graph tab, the name will
@ -90,7 +93,10 @@ public class Window extends JFrame {
* The "submit" button. * The "submit" button.
*/ */
private JButton inputEnterButton; private JButton inputEnterButton;
/**
* The stop calculations button.
*/
private JButton inputStopButton;
/** /**
* The side panel for separate configuration. * The side panel for separate configuration.
*/ */
@ -117,22 +123,39 @@ public class Window extends JFrame {
/** /**
* Action listener that causes the input to be evaluated. * Action listener that causes the input to be evaluated.
*/ */
private ActionListener stopListener = (event) -> {
contComputation=false;
};
private ActionListener evaluateListener = (event) -> { private ActionListener evaluateListener = (event) -> {
contComputation = true;
TreeNode parsedExpression = abacus.parseString(inputField.getText()); TreeNode parsedExpression = abacus.parseString(inputField.getText());
if(contComputation) {
if (parsedExpression == null) { if (parsedExpression == null) {
lastOutputArea.setText(SYNTAX_ERR_STRING); lastOutputArea.setText(SYNTAX_ERR_STRING);
return; return;
} }
NumberInterface numberInterface = abacus.evaluateTree(parsedExpression); }
NumberInterface numberInterface = null;
if(contComputation)
numberInterface = abacus.evaluateTree(parsedExpression);
if(contComputation) {
if (numberInterface == null) { if (numberInterface == null) {
lastOutputArea.setText(EVAL_ERR_STRING); lastOutputArea.setText(EVAL_ERR_STRING);
return; return;
} }}
if(contComputation)
lastOutput = numberInterface.toString(); lastOutput = numberInterface.toString();
if(contComputation)
historyModel.addEntry(new HistoryTableModel.HistoryEntry(inputField.getText(), parsedExpression, lastOutput)); historyModel.addEntry(new HistoryTableModel.HistoryEntry(inputField.getText(), parsedExpression, lastOutput));
if(contComputation)
historyTable.invalidate(); historyTable.invalidate();
if(contComputation)
lastOutputArea.setText(lastOutput); lastOutputArea.setText(lastOutput);
else
lastOutputArea.setText(STOPPED_TEXT);
inputField.setText(""); inputField.setText("");
}; };
/** /**
@ -167,6 +190,7 @@ public class Window extends JFrame {
inputField = new JTextField(); inputField = new JTextField();
inputEnterButton = new JButton(CALC_STRING); inputEnterButton = new JButton(CALC_STRING);
inputStopButton = new JButton(STOP_STRING);
inputPanel = new JPanel(); inputPanel = new JPanel();
inputPanel.setLayout(new BorderLayout()); inputPanel.setLayout(new BorderLayout());