javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml
1.1 --- a/javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml Mon Mar 25 13:48:45 2013 +0100
1.2 +++ b/javaquery/demo-calculator-dynamic/src/main/resources/org/apidesign/bck2brwsr/demo/calc/Calculator.xhtml Mon Mar 25 14:15:09 2013 +0100
1.3 @@ -78,10 +78,15 @@
1.4 </table>
1.5 <div data-bind="text: displayPreview"></div>
1.6
1.7 - <h3>Results</h3>
1.8 + <h4>Previous Results</h4>
1.9
1.10 - <ul data-bind="foreach : results">
1.11 - <li>Item: <b data-bind="text: $data"></b></li>
1.12 + <div data-bind="if: emptyHistory">No results yet.</div>
1.13 + <ul data-bind="foreach: history">
1.14 + <li>
1.15 + <span data-bind="text: $data"/> -
1.16 + <a href="#" data-bind="click: $root.recoverMemory">Use</a>
1.17 + <a href="#" data-bind="click: $root.removeMemory">Remove</a>
1.18 + </li>
1.19 </ul>
1.20
1.21 <script src="bck2brwsr.js"></script>
1.22 @@ -91,75 +96,5 @@
1.23 </script>
1.24
1.25 <hr/>
1.26 - <pre>
1.27 - <span class="keyword-directive">package</span> org.apidesign.bck2brwsr.mavenhtml;
1.28 -
1.29 - <span class="keyword-directive">import</span> org.apidesign.bck2brwsr.htmlpage.api.OnClick;
1.30 - <span class="keyword-directive">import</span> org.apidesign.bck2brwsr.htmlpage.api.Page;
1.31 -
1.32 - <span class="comment">/**</span> <span class="comment">HTML5</span><span class="comment"> & </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.33 - <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.34 - <span class="comment"> * </span><span class="comment">an XHTML page and Java.</span>
1.35 - <span class="comment"> * </span>
1.36 - <span class="comment"> * </span><span class="ST1">@author</span> <span class="comment">Jaroslav</span> <span class="comment">Tulach</span> <span class="ST0"><jaroslav.tulach@apidesign.org></span>
1.37 - <span class="comment">*/</span>
1.38 - @Page(xhtml=<span class="string">"</span><span class="string">Calculator.xhtml</span><span class="string">"</span>)
1.39 - <span class="keyword-directive">public</span> <span class="keyword-directive">class</span> App {
1.40 - <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> <span class="keyword-directive">double</span> memory;
1.41 - <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> String operation;
1.42 -
1.43 - @OnClick(id=<span class="string">"</span><span class="string">clear</span><span class="string">"</span>)
1.44 - <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> clear() {
1.45 - memory = <span class="number">0</span>;
1.46 - operation = <span class="keyword-directive">null</span>;
1.47 - Calculator.DISPLAY.setValue(<span class="string">"</span><span class="string">0</span><span class="string">"</span>);
1.48 - }
1.49 -
1.50 - @OnClick(id= { <span class="string">"</span><span class="string">plus</span><span class="string">"</span>, <span class="string">"</span><span class="string">minus</span><span class="string">"</span>, <span class="string">"</span><span class="string">mul</span><span class="string">"</span>, <span class="string">"</span><span class="string">div</span><span class="string">"</span> })
1.51 - <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> applyOp(String op) {
1.52 - memory = getValue();
1.53 - operation = op;
1.54 - Calculator.DISPLAY.setValue(<span class="string">"</span><span class="string">0</span><span class="string">"</span>);
1.55 - }
1.56 -
1.57 - @OnClick(id=<span class="string">"</span><span class="string">result</span><span class="string">"</span>)
1.58 - <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> computeTheValue() {
1.59 - <span class="keyword-directive">switch</span> (operation) {
1.60 - <span class="keyword-directive">case</span> <span class="string">"</span><span class="string">plus</span><span class="string">"</span>: setValue(memory + getValue()); <span class="keyword-directive">break</span>;
1.61 - <span class="keyword-directive">case</span> <span class="string">"</span><span class="string">minus</span><span class="string">"</span>: setValue(memory - getValue()); <span class="keyword-directive">break</span>;
1.62 - <span class="keyword-directive">case</span> <span class="string">"</span><span class="string">mul</span><span class="string">"</span>: setValue(memory * getValue()); <span class="keyword-directive">break</span>;
1.63 - <span class="keyword-directive">case</span> <span class="string">"</span><span class="string">div</span><span class="string">"</span>: setValue(memory / getValue()); <span class="keyword-directive">break</span>;
1.64 - <span class="keyword-directive">default</span>: <span class="keyword-directive">throw</span> <span class="keyword-directive">new</span> IllegalStateException(operation);
1.65 - }
1.66 - }
1.67 -
1.68 - @OnClick(id={<span class="string">"</span><span class="string">n0</span><span class="string">"</span>, <span class="string">"</span><span class="string">n1</span><span class="string">"</span>, <span class="string">"</span><span class="string">n2</span><span class="string">"</span>, <span class="string">"</span><span class="string">n3</span><span class="string">"</span>, <span class="string">"</span><span class="string">n4</span><span class="string">"</span>, <span class="string">"</span><span class="string">n5</span><span class="string">"</span>, <span class="string">"</span><span class="string">n6</span><span class="string">"</span>, <span class="string">"</span><span class="string">n7</span><span class="string">"</span>, <span class="string">"</span><span class="string">n8</span><span class="string">"</span>, <span class="string">"</span><span class="string">n9</span><span class="string">"</span>})
1.69 - <span class="keyword-directive">static</span> <span class="keyword-directive">void</span> addDigit(String digit) {
1.70 - digit = digit.substring(<span class="number">1</span>);
1.71 - String v = Calculator.DISPLAY.getValue();
1.72 - <span class="keyword-directive">if</span> (getValue() == <span class="number">0.0</span>) {
1.73 - Calculator.DISPLAY.setValue(digit);
1.74 - } <span class="keyword-directive">else</span> {
1.75 - Calculator.DISPLAY.setValue(v + digit);
1.76 - }
1.77 - }
1.78 -
1.79 - <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.80 - StringBuilder sb = <span class="keyword-directive">new</span> StringBuilder();
1.81 - sb.append(v);
1.82 - Calculator.DISPLAY.setValue(sb.toString());
1.83 - }
1.84 -
1.85 - <span class="keyword-directive">private</span> <span class="keyword-directive">static</span> <span class="keyword-directive">double</span> getValue() {
1.86 - <span class="keyword-directive">try</span> {
1.87 - <span class="keyword-directive">return</span> Double.parseDouble(Calculator.DISPLAY.getValue());
1.88 - } <span class="keyword-directive">catch</span> (NumberFormatException ex) {
1.89 - Calculator.DISPLAY.setValue(<span class="string">"</span><span class="string">err</span><span class="string">"</span>);
1.90 - <span class="keyword-directive">return</span> <span class="number">0.0</span>;
1.91 - }
1.92 - }
1.93 - }
1.94 -
1.95 - </pre>
1.96 </body>
1.97 </html>