javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/mavenhtml/Calculator.xhtml
changeset 198 5c1604c5ca9a
parent 197 e7bb314eec32
child 357 dc375a56fd15
child 427 12e866a32b40
     1.1 --- a/javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/mavenhtml/Calculator.xhtml	Thu Nov 22 00:18:34 2012 +0100
     1.2 +++ b/javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/mavenhtml/Calculator.xhtml	Thu Nov 22 10:38:38 2012 +0100
     1.3 @@ -28,6 +28,7 @@
     1.4          pre {color: #ffffff; background-color: #121e31; font-family: Monospaced}
     1.5          table {color: #ffffff; background-color: #121e31; font-family: Monospaced}
     1.6          .string {color: #e2ce00}
     1.7 +        a {color: #e2ce00}
     1.8          .ST1 {color: #0000cc; font-family: Monospaced; font-weight: bold}
     1.9          .ST0 {color: #0000ff}
    1.10          .comment {color: #428bdd}
    1.11 @@ -41,7 +42,7 @@
    1.12          </style>    
    1.13          </head>
    1.14      <body>
    1.15 -        <h1>Java &amp; HTML5</h1>
    1.16 +        <h1>Java and HTML5 - Together at Last!</h1>
    1.17          <table border="0" cellspacing="2">
    1.18              <tbody>
    1.19                  <tr>
    1.20 @@ -79,10 +80,75 @@
    1.21          <script src="bootjava.js"/>
    1.22          
    1.23          <hr/>
    1.24 -        <p>
    1.25 -        More information at the <a href="http://wiki.apidesign.org/wiki/Bck2Brwsr">
    1.26 -            Bck2Brwsr
    1.27 -        </a> project page.
    1.28 -        </p>
    1.29 +    <pre>
    1.30 +    <span class="keyword-directive">package</span> org.apidesign.bck2brwsr.mavenhtml;
    1.31 +
    1.32 +    <span class="keyword-directive">import</span> org.apidesign.bck2brwsr.htmlpage.api.OnClick;
    1.33 +    <span class="keyword-directive">import</span> org.apidesign.bck2brwsr.htmlpage.api.Page;
    1.34 +
    1.35 +    <span class="comment">/**</span> <span class="comment">HTML5</span><span class="comment"> &amp; </span><span class="comment">Java</span> <span class="comment">demo</span> <span class="comment">showing</span> <span class="comment">the</span> <span class="comment">power</span> <span class="comment">of</span> <a href="http://wiki.apidesign.org/wiki/AnnotationProcessor">annotation processors</a>
    1.36 +    <span class="comment"> * </span><span class="comment">as</span> <span class="comment">well</span> <span class="comment">as</span> <span class="comment">other</span> <span class="comment">goodies</span><span class="comment">, including type-safe association between</span>
    1.37 +    <span class="comment"> * </span><span class="comment">an XHTML page and Java.</span>
    1.38 +    <span class="comment"> * </span>
    1.39 +    <span class="comment"> * </span><span class="ST1">@author</span> <span class="comment">Jaroslav</span> <span class="comment">Tulach</span> <span class="ST0">&lt;jaroslav.tulach@apidesign.org&gt;</span>
    1.40 +     <span class="comment">*/</span>
    1.41 +    @Page(xhtml=<span class="string">&quot;</span><span class="string">Calculator.xhtml</span><span class="string">&quot;</span>)
    1.42 +    <span class="keyword-directive">public</span> <span class="keyword-directive">class</span> App {
    1.43 +        <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> <span class="keyword-directive">double</span> memory;
    1.44 +        <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> String operation;
    1.45 +
    1.46 +        @OnClick(id=<span class="string">&quot;</span><span class="string">clear</span><span class="string">&quot;</span>)
    1.47 +        <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> clear() {
    1.48 +            memory = <span class="number">0</span>;
    1.49 +            operation = <span class="keyword-directive">null</span>;
    1.50 +            Calculator.DISPLAY.setValue(<span class="string">&quot;</span><span class="string">0</span><span class="string">&quot;</span>);
    1.51 +        }
    1.52 +
    1.53 +        @OnClick(id= { <span class="string">&quot;</span><span class="string">plus</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">minus</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">mul</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">div</span><span class="string">&quot;</span> })
    1.54 +        <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> applyOp(String op) {
    1.55 +            memory = getValue();
    1.56 +            operation = op;
    1.57 +            Calculator.DISPLAY.setValue(<span class="string">&quot;</span><span class="string">0</span><span class="string">&quot;</span>);
    1.58 +        }
    1.59 +
    1.60 +        @OnClick(id=<span class="string">&quot;</span><span class="string">result</span><span class="string">&quot;</span>)
    1.61 +        <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> computeTheValue() {
    1.62 +            <span class="keyword-directive">switch</span> (operation) {
    1.63 +                <span class="keyword-directive">case</span> <span class="string">&quot;</span><span class="string">plus</span><span class="string">&quot;</span>: setValue(memory + getValue()); <span class="keyword-directive">break</span>;
    1.64 +                <span class="keyword-directive">case</span> <span class="string">&quot;</span><span class="string">minus</span><span class="string">&quot;</span>: setValue(memory - getValue()); <span class="keyword-directive">break</span>;
    1.65 +                <span class="keyword-directive">case</span> <span class="string">&quot;</span><span class="string">mul</span><span class="string">&quot;</span>: setValue(memory * getValue()); <span class="keyword-directive">break</span>;
    1.66 +                <span class="keyword-directive">case</span> <span class="string">&quot;</span><span class="string">div</span><span class="string">&quot;</span>: setValue(memory / getValue()); <span class="keyword-directive">break</span>;
    1.67 +                <span class="keyword-directive">default</span>: <span class="keyword-directive">throw</span> <span class="keyword-directive">new</span> IllegalStateException(operation);
    1.68 +            }
    1.69 +        }
    1.70 +
    1.71 +        @OnClick(id={<span class="string">&quot;</span><span class="string">n0</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n1</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n2</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n3</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n4</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n5</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n6</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n7</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n8</span><span class="string">&quot;</span>, <span class="string">&quot;</span><span class="string">n9</span><span class="string">&quot;</span>}) 
    1.72 +        <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> addDigit(String digit) {
    1.73 +            digit = digit.substring(<span class="number">1</span>);
    1.74 +            String v = Calculator.DISPLAY.getValue();
    1.75 +            <span class="keyword-directive">if</span> (getValue() == <span class="number">0.0</span>) {
    1.76 +                Calculator.DISPLAY.setValue(digit);
    1.77 +            } <span class="keyword-directive">else</span> {
    1.78 +                Calculator.DISPLAY.setValue(v + digit);
    1.79 +            }
    1.80 +        }
    1.81 +
    1.82 +        <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> setValue(<span class="keyword-directive">double</span> v) {
    1.83 +            StringBuilder sb = <span class="keyword-directive">new</span> StringBuilder();
    1.84 +            sb.append(v);
    1.85 +            Calculator.DISPLAY.setValue(sb.toString());
    1.86 +        }
    1.87 +
    1.88 +        <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> <span class="keyword-directive">double</span> getValue() {
    1.89 +            <span class="keyword-directive">try</span> {
    1.90 +                <span class="keyword-directive">return</span> Double.parseDouble(Calculator.DISPLAY.getValue());
    1.91 +            } <span class="keyword-directive">catch</span> (NumberFormatException ex) {
    1.92 +                Calculator.DISPLAY.setValue(<span class="string">&quot;</span><span class="string">err</span><span class="string">&quot;</span>);
    1.93 +                <span class="keyword-directive">return</span> <span class="number">0.0</span>;
    1.94 +            }
    1.95 +        }
    1.96 +    }
    1.97 +
    1.98 +    </pre>
    1.99      </body>
   1.100  </html>