Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sample.controllers;
- import javafx.fxml.FXMLLoader;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.input.MouseEvent;
- import javafx.stage.Modality;
- import javafx.stage.Stage;
- import sample.Main;
- import sample.utils.EvaluateString;
- import java.io.IOException;
- import java.util.ArrayList;
- public class Controller {
- //get the label
- public Label equation = null;
- public Label result = null;
- ArrayList<String> insertions = new ArrayList<>();
- public void insertOperator(String operator){
- equation.setText(equation.getText() + " " + operator + " ");
- insertions.add(" " + operator + " ");
- }
- public void insertNumber(String number){
- equation.setText(equation.getText() + number);
- insertions.add(number);
- }
- public void clear(){
- equation.setText("");
- insertions.clear();
- }
- public void deleteLast(){
- if (!insertions.isEmpty()){
- //remove from the label
- equation.setText(equation.getText().substring(0, (equation.getText().length() - 1) - insertions.get(insertions.size() - 1).length()));
- insertions.remove(insertions.size() - 1);
- }
- }
- public double eval(String expression){
- return EvaluateString.evaluate(expression);
- }
- public void updateAnswer(double answer){
- result.setText("= " + answer);
- }
- public void openHistoryScene(){
- Stage stage = Main.getHistoryStage();
- stage.show();
- }
- //Button Control Handling
- public void onMouseClicked(MouseEvent mouseEvent) {
- Button button = (Button) mouseEvent.getSource();
- String number = button.getText();
- switch(button.getText()){
- case "1":
- case "2":
- case "3":
- case "4":
- case "5":
- case "6":
- case "7":
- case "8":
- case "9":
- case "0":
- insertNumber(number);
- break;
- case "CLEAR":
- clear();
- break;
- case "DELETE":
- deleteLast();
- break;
- case "*":
- case "/":
- case "+":
- case "-":
- insertOperator(button.getText());
- break;
- case "=":
- //Do the calculation
- double result = eval(equation.getText());
- updateAnswer(result);
- //Add to history
- HistoryController.addCalculation(equation.getText(), result);
- break;
- case "HIST":
- openHistoryScene();
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement