You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2015/09/15 19:47:29 UTC

svn commit: r1703267 - in /pivot/branches/2.0.x: ./ tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json

Author: rwhitcomb
Date: Tue Sep 15 17:47:28 2015
New Revision: 1703267

URL: http://svn.apache.org/r1703267
Log:
PIVOT-972:  Fix some more bugs with the calculator tutorial:
* Implement the difference between "Clear" and "All Clear".
* Highlight the current operator button (by changing border color).
* When two operators are pressed in a row, just change operators,
  don't do the prior operation.
* Fix backspace not to do it twice, and to work properly when clearing
  the last digit.

This is a merge of revision 1688484 from trunk to branches/2.0.x.

Modified:
    pivot/branches/2.0.x/   (props changed)
    pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java
    pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json

Propchange: pivot/branches/2.0.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 15 17:47:28 2015
@@ -1 +1 @@
-/pivot/trunk:1346574,1347051,1394847,1394858,1398511,1399331,1401781,1405882,1407585,1409081,1410536,1410555,1417081,1417258,1428056,1428650,1435351,1436707,1438126,1438659,1444260,1444910,1502657,1510821,1516518,1519859,1522078,1523205,1523736,1523776,1525982,1526005,1536829,1537222,1604238,1610563,1611829,1614462,1624381,1675204,1675517,1678238,1678251,1687873-1687874,1688306,1688523,1691618
+/pivot/trunk:1346574,1347051,1394847,1394858,1398511,1399331,1401781,1405882,1407585,1409081,1410536,1410555,1417081,1417258,1428056,1428650,1435351,1436707,1438126,1438659,1444260,1444910,1502657,1510821,1516518,1519859,1522078,1523205,1523736,1523776,1525982,1526005,1536829,1537222,1604238,1610563,1611829,1614462,1624381,1675204,1675517,1678238,1678251,1687873-1687874,1688306,1688484,1688523,1691618

Modified: pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java
URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java?rev=1703267&r1=1703266&r2=1703267&view=diff
==============================================================================
--- pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java (original)
+++ pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/Calculator.java Tue Sep 15 17:47:28 2015
@@ -56,9 +56,13 @@ public class Calculator
     private static StringBuilder resultBuffer = new StringBuilder("0");
     private static BigDecimal result = BigDecimal.ZERO;
     private static boolean seenDecimalPoint = false;
+    private static boolean clearingAll = false;
     private static BigDecimal accumulator = BigDecimal.ZERO;
     private static Operator currentOperator = null;
+    private static PushButton currentOperatorButton = null;
+    private static boolean justSeenOperator = false;
 
+    /** Instance variable so non-static components can be accessed from static methods. */
     private static Calculator instance;
 
     @Override
@@ -82,7 +86,6 @@ public class Calculator
                       case '%':
                         ACTION.PERCENT.perform(comp);
                         return true;
-                      case '\u0008':
                       case '\u007F':
                         ACTION.BACKSPACE.perform(comp);
                         return true;
@@ -92,6 +95,13 @@ public class Calculator
                 }
             });
 
+            // Hook up the operators with their buttons
+            Operator.ADD.setButton(plusButton);
+            Operator.SUBTRACT.setButton(minusButton);
+            Operator.MULTIPLY.setButton(multiplyButton);
+            Operator.DIVIDE.setButton(divideButton);
+            Operator.EQUALS.setButton(equalsButton);
+
             mainWindow.open(display);
             mainWindow.requestFocus();
         }
@@ -107,7 +117,22 @@ public class Calculator
         instance.resultText.setText(resultBuffer.toString());
     }
 
+    private static void setClearAll(boolean all) {
+        instance.clearButton.setButtonData(all ? "AC" : "C");
+        clearingAll = all;
+    }
+
+    private static void setOperatorButton(boolean on) {
+        if (currentOperatorButton != null) {
+            currentOperatorButton.setStyleName(on ? "buttonBorderHighlight" : "buttonBorderNormal");
+        }
+    }
+
     private static void digit(char digit) {
+        setClearAll(false);
+        setOperatorButton(false);
+        justSeenOperator = false;
+
         switch (digit) {
           case '0':
           case '1':
@@ -140,7 +165,17 @@ public class Calculator
         SUBTRACT,
         MULTIPLY,
         DIVIDE,
-        EQUALS
+        EQUALS;
+
+        private PushButton button;
+
+        public void setButton(PushButton button) {
+            this.button = button;
+        }
+
+        public PushButton getButton() {
+            return this.button;
+        }
     }
 
     private static void changeOperator(Operator newOperator) {
@@ -149,9 +184,15 @@ public class Calculator
             accumulator = result;
             resultBuffer = new StringBuilder();
             seenDecimalPoint = false;
-            // TODO: highlight (somehow) the selected operator
-        }
-        else {
+            currentOperatorButton = currentOperator.getButton();
+            setOperatorButton(true);
+            justSeenOperator = true;
+        } else if (justSeenOperator) {
+            setOperatorButton(false);
+            currentOperator = newOperator;
+            currentOperatorButton = currentOperator.getButton();
+            setOperatorButton(true);
+        } else {
             // Perform the currentOperator function on accumulator x result
             switch (currentOperator) {
               case ADD:
@@ -168,11 +209,14 @@ public class Calculator
                 break;
             }
             if (newOperator == Operator.EQUALS) {
+                setOperatorButton(false);
                 currentOperator = null;
+                currentOperatorButton = null;
+                justSeenOperator = false;
                 accumulator = BigDecimal.ZERO;
-            }
-            else {
+            } else {
                 currentOperator = newOperator;
+                currentOperatorButton = currentOperator.getButton();
                 accumulator = result;
             }
             seenDecimalPoint = false;
@@ -313,7 +357,11 @@ public class Calculator
                     if (ch == '.') {
                         seenDecimalPoint = false;
                     }
-                    resultBuffer.deleteCharAt(resultBuffer.length() - 1);
+                    if (resultBuffer.length() == 1) {
+                        resultBuffer.setCharAt(0, '0');
+                    } else {
+                        resultBuffer.deleteCharAt(resultBuffer.length() - 1);
+                    }
                     instance.resultText.setText(resultBuffer.toString());
                 }
             }
@@ -323,8 +371,15 @@ public class Calculator
             public void perform(Component source) {
                 result = BigDecimal.ZERO;
                 seenDecimalPoint = false;
-                accumulator = BigDecimal.ZERO;
-                currentOperator = null;
+                justSeenOperator = false;
+                if (clearingAll) {
+                    accumulator = BigDecimal.ZERO;
+                    setOperatorButton(false);
+                    currentOperator = null;
+                    currentOperatorButton = null;
+                } else {
+                    setClearAll(true);
+                }
                 updateResult();
             }
         },

Modified: pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json
URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json?rev=1703267&r1=1703266&r2=1703267&view=diff
==============================================================================
--- pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json (original)
+++ pivot/branches/2.0.x/tutorials/src/org/apache/pivot/tutorials/calculator/calculator_styles.json Tue Sep 15 17:47:28 2015
@@ -42,5 +42,13 @@
         padding : { top : 8, bottom : 8 },
     },
 
+    buttonBorderHighlight : {
+        borderColor : 'black'
+    },
+
+    buttonBorderNormal : {
+        borderColor : 7
+    }
+
 }