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
+ }
+
}