Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.33 KB | None | 0 0
  1. import java.awt.event.ActionEvent;
  2. import java.awt.event.ActionListener;
  3. import java.math.BigDecimal;
  4. import java.math.RoundingMode;
  5.  
  6. public class Controler {
  7. private BigDecimal tmpNumber, tmpNumber2;
  8. private int lastOperation = 0;
  9. private Model model;
  10. private View view;
  11. private boolean flag;
  12.  
  13.  
  14. public Controler(Model model, View view) {
  15. this.model = model;
  16. this.view = view;
  17. view.setSolution("0");
  18. view.addZeroListener(new NumberListener('0'));
  19. view.addOneListener(new NumberListener('1'));
  20. view.addTwoListener(new NumberListener('2'));
  21. view.addThreeListener(new NumberListener('3'));
  22. view.addFourListener(new NumberListener('4'));
  23. view.addFiveListener(new NumberListener('5'));
  24. view.addSixListener(new NumberListener('6'));
  25. view.addSevenListener(new NumberListener('7'));
  26. view.addEightListener(new NumberListener('8'));
  27. view.addNineListener(new NumberListener('9'));
  28. view.addDotListener(new DotListener());
  29. view.addAdditionListener(new OperationListener(13));
  30. view.addSubtractionListener(new OperationListener(14));
  31. view.addMultiplicationListener(new OperationListener(15));
  32. view.addDivisionListener(new OperationListener(16));
  33. view.addSqrtListener(new SqrtListener(17));
  34. view.addCalculationListener(new CalculationListener());
  35. view.addCListener(new ClearListener());
  36. view.addDelListener(new DelListener());
  37.  
  38. }
  39.  
  40. class NumberListener implements ActionListener {
  41. char c;
  42.  
  43. public NumberListener(char c) {
  44. this.c = c;
  45. }
  46.  
  47. @Override
  48. public void actionPerformed(ActionEvent actionEvent) {
  49. String tmpSol=view.getSolution();
  50. if(c=='0'&&tmpSol.length()>=2){
  51. tmpSol+='0';
  52. }else tmpSol = getNewSolution(view.getSolution(), c).setScale(10, RoundingMode.HALF_UP).stripTrailingZeros().toString();
  53. // 10 miejsc po przecinku, usuwa zera
  54.  
  55.  
  56. view.setSolution(tmpSol);
  57. }
  58. }
  59.  
  60. class DelListener implements ActionListener{
  61.  
  62. @Override
  63. public void actionPerformed(ActionEvent actionEvent) {
  64. String tmp=view.getSolution();
  65. if(tmp.length()>1) {
  66. String res = tmp.substring(0, tmp.length() - 1);
  67. view.setSolution(res);
  68. }else view.setSolution("0");
  69. }
  70. }
  71. class OperationListener implements ActionListener {
  72. int c;
  73.  
  74. public OperationListener(int c) {
  75. this.c = c;
  76. }
  77.  
  78. @Override
  79. public void actionPerformed(ActionEvent actionEvent) {
  80. tmpNumber=new BigDecimal(view.getSolution());
  81. if(lastOperation==0){
  82. lastOperation=c;
  83. view.setSolution("0");
  84. }else{
  85. view.setSolution("0");
  86. lastOperation=c;
  87. //refresh();
  88. }
  89.  
  90. }
  91. }
  92. class SqrtListener implements ActionListener {
  93. int c;
  94.  
  95. public SqrtListener(int c) {
  96. this.c = c;
  97. }
  98.  
  99. @Override
  100. public void actionPerformed(ActionEvent actionEvent) {
  101. tmpNumber=new BigDecimal(view.getSolution());
  102. lastOperation=c;
  103. refresh();
  104.  
  105. }
  106. }
  107. class ClearListener implements ActionListener{
  108.  
  109. @Override
  110. public void actionPerformed(ActionEvent actionEvent) {
  111. view.setSolution("0");
  112. flag=false;
  113. }
  114. }
  115.  
  116. class CalculationListener implements ActionListener{
  117. public void actionPerformed(ActionEvent actionEvent){
  118. if(flag==false)tmpNumber2=new BigDecimal(view.getSolution());
  119. if(!(model.subtract(tmpNumber,new BigDecimal(view.getSolution())).equals(new BigDecimal(0)))) tmpNumber2=new BigDecimal(view.getSolution());
  120. try{refresh();}catch(Exception e){}
  121. }
  122.  
  123. }
  124.  
  125. class DotListener implements ActionListener {
  126. @Override
  127. public void actionPerformed(ActionEvent actionEvent) {
  128. String tmpSol = view.getSolution();
  129. if (!(tmpSol.contains(".")) && tmpSol.length() < 12) {
  130. tmpSol += ".";
  131. }
  132. view.setSolution(tmpSol);
  133. }
  134.  
  135. }
  136.  
  137.  
  138. public static void main(String[] args){
  139. Model model=new Model();
  140. View view =new View();
  141. Controler controler=new Controler(model, view);
  142.  
  143. }
  144. public static BigDecimal getNewSolution(String tmpSolution, char c){
  145. if(c=='.'){
  146. return new BigDecimal(tmpSolution);
  147. }
  148. if(tmpSolution.length()<12){
  149. tmpSolution+=c;
  150. }
  151. return new BigDecimal(tmpSolution);
  152. }
  153. public static String correctResult(String tmp){
  154. String res="";
  155. if(tmp.length()>12){
  156. res=tmp.substring(0,12);
  157. return res;
  158. }
  159. return tmp;
  160. }
  161.  
  162. public void refresh() {
  163.  
  164. switch (lastOperation) {
  165. case 13:
  166. // System.out.println(tmpNumber2 + " " + view.getSolution());
  167. System.out.println("Sum "+tmpNumber+" and "+tmpNumber2);
  168. tmpNumber = model.add(tmpNumber, tmpNumber2);
  169.  
  170. break;
  171. case 15:
  172. System.out.println("multiply "+tmpNumber+" and "+tmpNumber2);
  173. tmpNumber = model.multiply(tmpNumber, tmpNumber2);
  174.  
  175.  
  176. break;
  177. case 14:
  178. System.out.println("Subtract "+tmpNumber+" and "+tmpNumber2);
  179. tmpNumber = model.subtract(tmpNumber,tmpNumber2);
  180.  
  181.  
  182. break;
  183. case 16:
  184. System.out.println("Divide "+tmpNumber+" and "+tmpNumber2);
  185. tmpNumber = model.divide(tmpNumber,tmpNumber2);
  186.  
  187.  
  188. break;
  189. case 17:
  190. tmpNumber=model.sqrt(tmpNumber);
  191. break;
  192. default:
  193. System.out.println("msg");
  194. break;
  195. }
  196. if (tmpNumber != null) view.setSolution(correctResult(tmpNumber.stripTrailingZeros().toString()));
  197. flag = true;
  198.  
  199.  
  200. }
  201.  
  202.  
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement