Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- public class Controler {
- private BigDecimal tmpNumber, tmpNumber2;
- private int lastOperation = 0;
- private Model model;
- private View view;
- private boolean flag;
- public Controler(Model model, View view) {
- this.model = model;
- this.view = view;
- view.setSolution("0");
- view.addZeroListener(new NumberListener('0'));
- view.addOneListener(new NumberListener('1'));
- view.addTwoListener(new NumberListener('2'));
- view.addThreeListener(new NumberListener('3'));
- view.addFourListener(new NumberListener('4'));
- view.addFiveListener(new NumberListener('5'));
- view.addSixListener(new NumberListener('6'));
- view.addSevenListener(new NumberListener('7'));
- view.addEightListener(new NumberListener('8'));
- view.addNineListener(new NumberListener('9'));
- view.addDotListener(new DotListener());
- view.addAdditionListener(new OperationListener(13));
- view.addSubtractionListener(new OperationListener(14));
- view.addMultiplicationListener(new OperationListener(15));
- view.addDivisionListener(new OperationListener(16));
- view.addSqrtListener(new SqrtListener(17));
- view.addCalculationListener(new CalculationListener());
- view.addCListener(new ClearListener());
- view.addDelListener(new DelListener());
- }
- class NumberListener implements ActionListener {
- char c;
- public NumberListener(char c) {
- this.c = c;
- }
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- String tmpSol=view.getSolution();
- if(c=='0'&&tmpSol.length()>=2){
- tmpSol+='0';
- }else tmpSol = getNewSolution(view.getSolution(), c).setScale(10, RoundingMode.HALF_UP).stripTrailingZeros().toString();
- // 10 miejsc po przecinku, usuwa zera
- view.setSolution(tmpSol);
- }
- }
- class DelListener implements ActionListener{
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- String tmp=view.getSolution();
- if(tmp.length()>1) {
- String res = tmp.substring(0, tmp.length() - 1);
- view.setSolution(res);
- }else view.setSolution("0");
- }
- }
- class OperationListener implements ActionListener {
- int c;
- public OperationListener(int c) {
- this.c = c;
- }
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- tmpNumber=new BigDecimal(view.getSolution());
- if(lastOperation==0){
- lastOperation=c;
- view.setSolution("0");
- }else{
- view.setSolution("0");
- lastOperation=c;
- //refresh();
- }
- }
- }
- class SqrtListener implements ActionListener {
- int c;
- public SqrtListener(int c) {
- this.c = c;
- }
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- tmpNumber=new BigDecimal(view.getSolution());
- lastOperation=c;
- refresh();
- }
- }
- class ClearListener implements ActionListener{
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- view.setSolution("0");
- flag=false;
- }
- }
- class CalculationListener implements ActionListener{
- public void actionPerformed(ActionEvent actionEvent){
- if(flag==false)tmpNumber2=new BigDecimal(view.getSolution());
- if(!(model.subtract(tmpNumber,new BigDecimal(view.getSolution())).equals(new BigDecimal(0)))) tmpNumber2=new BigDecimal(view.getSolution());
- try{refresh();}catch(Exception e){}
- }
- }
- class DotListener implements ActionListener {
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- String tmpSol = view.getSolution();
- if (!(tmpSol.contains(".")) && tmpSol.length() < 12) {
- tmpSol += ".";
- }
- view.setSolution(tmpSol);
- }
- }
- public static void main(String[] args){
- Model model=new Model();
- View view =new View();
- Controler controler=new Controler(model, view);
- }
- public static BigDecimal getNewSolution(String tmpSolution, char c){
- if(c=='.'){
- return new BigDecimal(tmpSolution);
- }
- if(tmpSolution.length()<12){
- tmpSolution+=c;
- }
- return new BigDecimal(tmpSolution);
- }
- public static String correctResult(String tmp){
- String res="";
- if(tmp.length()>12){
- res=tmp.substring(0,12);
- return res;
- }
- return tmp;
- }
- public void refresh() {
- switch (lastOperation) {
- case 13:
- // System.out.println(tmpNumber2 + " " + view.getSolution());
- System.out.println("Sum "+tmpNumber+" and "+tmpNumber2);
- tmpNumber = model.add(tmpNumber, tmpNumber2);
- break;
- case 15:
- System.out.println("multiply "+tmpNumber+" and "+tmpNumber2);
- tmpNumber = model.multiply(tmpNumber, tmpNumber2);
- break;
- case 14:
- System.out.println("Subtract "+tmpNumber+" and "+tmpNumber2);
- tmpNumber = model.subtract(tmpNumber,tmpNumber2);
- break;
- case 16:
- System.out.println("Divide "+tmpNumber+" and "+tmpNumber2);
- tmpNumber = model.divide(tmpNumber,tmpNumber2);
- break;
- case 17:
- tmpNumber=model.sqrt(tmpNumber);
- break;
- default:
- System.out.println("msg");
- break;
- }
- if (tmpNumber != null) view.setSolution(correctResult(tmpNumber.stripTrailingZeros().toString()));
- flag = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement