@@ -79,10 +80,75 @@
-
- More information at the
- Bck2Brwsr
- project page.
-
+
+ package org.apidesign.bck2brwsr.mavenhtml;
+
+ import org.apidesign.bck2brwsr.htmlpage.api.OnClick;
+ import org.apidesign.bck2brwsr.htmlpage.api.Page;
+
+ annotation processors
+
+
+
+ @author <jaroslav.tulach@apidesign.org>
+
+ @Page(xhtml="Calculator.xhtml")
+ public class App {
+ private static double memory;
+ private static String operation;
+
+ @OnClick(id="clear")
+ static void clear() {
+ memory = 0;
+ operation = null;
+ Calculator.DISPLAY.setValue("0");
+ }
+
+ @OnClick(id= { "plus", "minus", "mul", "div" })
+ static void applyOp(String op) {
+ memory = getValue();
+ operation = op;
+ Calculator.DISPLAY.setValue("0");
+ }
+
+ @OnClick(id="result")
+ static void computeTheValue() {
+ switch (operation) {
+ case "plus": setValue(memory + getValue()); break;
+ case "minus": setValue(memory - getValue()); break;
+ case "mul": setValue(memory * getValue()); break;
+ case "div": setValue(memory / getValue()); break;
+ default: throw new IllegalStateException(operation);
+ }
+ }
+
+ @OnClick(id={"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9"})
+ static void addDigit(String digit) {
+ digit = digit.substring(1);
+ String v = Calculator.DISPLAY.getValue();
+ if (getValue() == 0.0) {
+ Calculator.DISPLAY.setValue(digit);
+ } else {
+ Calculator.DISPLAY.setValue(v + digit);
+ }
+ }
+
+ private static void setValue(double v) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(v);
+ Calculator.DISPLAY.setValue(sb.toString());
+ }
+
+ private static double getValue() {
+ try {
+ return Double.parseDouble(Calculator.DISPLAY.getValue());
+ } catch (NumberFormatException ex) {
+ Calculator.DISPLAY.setValue("err");
+ return 0.0;
+ }
+ }
+ }
+
+