javaquery/demo-calculator/src/main/java/org/apidesign/bck2brwsr/mavenhtml/App.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 09 Nov 2012 12:06:45 +0100
changeset 141 63be794c1eeb
child 142 74c37d9cfdc9
permissions -rw-r--r--
Adding calculator demo to the repository
jaroslav@141
     1
package org.apidesign.bck2brwsr.mavenhtml;
jaroslav@141
     2
jaroslav@141
     3
import org.apidesign.bck2brwsr.htmlpage.api.OnClick;
jaroslav@141
     4
import org.apidesign.bck2brwsr.htmlpage.api.Page;
jaroslav@141
     5
jaroslav@141
     6
@Page(xhtml="Calculator.xhtml")
jaroslav@141
     7
public class App {
jaroslav@141
     8
    private static final int OP_PLUS = 1;
jaroslav@141
     9
    private static final int OP_MINUS = 2;
jaroslav@141
    10
    private static final int OP_MUL = 3;
jaroslav@141
    11
    private static final int OP_DIV = 4;
jaroslav@141
    12
    
jaroslav@141
    13
    static double memory = 0;
jaroslav@141
    14
    static int operation = 0;
jaroslav@141
    15
    
jaroslav@141
    16
    
jaroslav@141
    17
    
jaroslav@141
    18
    @OnClick(id="clear")
jaroslav@141
    19
    static void clear() {
jaroslav@141
    20
        setValue(0.0);
jaroslav@141
    21
    }
jaroslav@141
    22
    
jaroslav@141
    23
    private static void setValue(double v) {
jaroslav@141
    24
        StringBuilder sb = new StringBuilder();
jaroslav@141
    25
        sb.append(v);
jaroslav@141
    26
        Calculator.DISPLAY.setValue(sb.toString());
jaroslav@141
    27
    }
jaroslav@141
    28
    
jaroslav@141
    29
    private static double getValue() {
jaroslav@141
    30
        return Double.parseDouble(Calculator.DISPLAY.getValue());
jaroslav@141
    31
    }
jaroslav@141
    32
    
jaroslav@141
    33
    @OnClick(id="plus")
jaroslav@141
    34
    static void plus() {
jaroslav@141
    35
        memory = getValue();
jaroslav@141
    36
        operation = OP_PLUS;
jaroslav@141
    37
        setValue(0.0);
jaroslav@141
    38
    }
jaroslav@141
    39
    
jaroslav@141
    40
    @OnClick(id="minus")
jaroslav@141
    41
    static void minus() {
jaroslav@141
    42
        memory = getValue();
jaroslav@141
    43
        operation = OP_MINUS;
jaroslav@141
    44
        setValue(0.0);
jaroslav@141
    45
    }
jaroslav@141
    46
    
jaroslav@141
    47
    @OnClick(id="mul")
jaroslav@141
    48
    static void mul() {
jaroslav@141
    49
        memory = getValue();
jaroslav@141
    50
        operation = OP_MUL;
jaroslav@141
    51
        setValue(0.0);
jaroslav@141
    52
    }
jaroslav@141
    53
    
jaroslav@141
    54
    @OnClick(id="result")
jaroslav@141
    55
    static void computeTheValue() {
jaroslav@141
    56
        switch (operation) {
jaroslav@141
    57
            case 0: break;
jaroslav@141
    58
            case OP_PLUS: setValue(memory + getValue()); break;
jaroslav@141
    59
            case OP_MINUS: setValue(memory - getValue()); break;
jaroslav@141
    60
            case OP_MUL: setValue(memory * getValue()); break;
jaroslav@141
    61
        }
jaroslav@141
    62
    }
jaroslav@141
    63
    
jaroslav@141
    64
    @OnClick(id={"n0", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9"}) 
jaroslav@141
    65
    static void addDigit(String digit) {
jaroslav@141
    66
        digit = digit.substring(1);
jaroslav@141
    67
        String v = Calculator.DISPLAY.getValue();
jaroslav@141
    68
        if ("0".equals(v) || v == null) {
jaroslav@141
    69
            Calculator.DISPLAY.setValue(digit);
jaroslav@141
    70
        } else {
jaroslav@141
    71
            Calculator.DISPLAY.setValue(v + digit);
jaroslav@141
    72
        }
jaroslav@141
    73
    }
jaroslav@141
    74
}