jaroslav@141: jaroslav@141: jaroslav@141: jaroslav@141: jaroslav@141:
jaroslav@141:jtulach@197: | jaroslav@141:|||
jaroslav@141: | jaroslav@141: | jaroslav@141: | jaroslav@141: |
jaroslav@141: | jaroslav@141: | jaroslav@141: | jaroslav@141: |
jaroslav@141: | jaroslav@141: | jaroslav@141: | jaroslav@141: |
jaroslav@141: | jaroslav@141: | jaroslav@141: | jaroslav@141: |
jaroslav@498:
jaroslav@498: jaroslav@141: jtulach@197: jtulach@197:jaroslav@198: package org.apidesign.bck2brwsr.mavenhtml; jaroslav@198: jaroslav@198: import org.apidesign.bck2brwsr.htmlpage.api.OnClick; jaroslav@198: import org.apidesign.bck2brwsr.htmlpage.api.Page; jaroslav@198: jaroslav@198: /** HTML5 & Java demo showing the power of annotation processors jaroslav@198: * as well as other goodies, including type-safe association between jaroslav@198: * an XHTML page and Java. jaroslav@198: * jaroslav@198: * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org> jaroslav@198: */ jaroslav@198: @Page(xhtml="Calculator.xhtml") jaroslav@198: public class App { jaroslav@198: private static double memory; jaroslav@198: private static String operation; jaroslav@198: jaroslav@198: @OnClick(id="clear") jaroslav@198: static void clear() { jaroslav@198: memory = 0; jaroslav@198: operation = null; jaroslav@198: Calculator.DISPLAY.setValue("0"); jaroslav@198: } jaroslav@198: jaroslav@198: @OnClick(id= { "plus", "minus", "mul", "div" }) jaroslav@198: static void applyOp(String op) { jaroslav@198: memory = getValue(); jaroslav@198: operation = op; jaroslav@198: Calculator.DISPLAY.setValue("0"); jaroslav@198: } jaroslav@198: jaroslav@198: @OnClick(id="result") jaroslav@198: static void computeTheValue() { jaroslav@198: switch (operation) { jaroslav@198: case "plus": setValue(memory + getValue()); break; jaroslav@198: case "minus": setValue(memory - getValue()); break; jaroslav@198: case "mul": setValue(memory * getValue()); break; jaroslav@198: case "div": setValue(memory / getValue()); break; jaroslav@198: default: throw new IllegalStateException(operation); jaroslav@198: } jaroslav@198: } jaroslav@198: jaroslav@198: @OnClick(id={"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9"}) jaroslav@198: static void addDigit(String digit) { jaroslav@198: digit = digit.substring(1); jaroslav@198: String v = Calculator.DISPLAY.getValue(); jaroslav@198: if (getValue() == 0.0) { jaroslav@198: Calculator.DISPLAY.setValue(digit); jaroslav@198: } else { jaroslav@198: Calculator.DISPLAY.setValue(v + digit); jaroslav@198: } jaroslav@198: } jaroslav@198: jaroslav@198: private static void setValue(double v) { jaroslav@198: StringBuilder sb = new StringBuilder(); jaroslav@198: sb.append(v); jaroslav@198: Calculator.DISPLAY.setValue(sb.toString()); jaroslav@198: } jaroslav@198: jaroslav@198: private static double getValue() { jaroslav@198: try { jaroslav@198: return Double.parseDouble(Calculator.DISPLAY.getValue()); jaroslav@198: } catch (NumberFormatException ex) { jaroslav@198: Calculator.DISPLAY.setValue("err"); jaroslav@198: return 0.0; jaroslav@198: } jaroslav@198: } jaroslav@198: } jaroslav@198: jaroslav@198:jaroslav@141: jaroslav@141: