ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java
changeset 1947 12a252145892
parent 1944 644d4f4bc6e0
     1.1 --- a/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java	Wed Apr 27 04:01:39 2016 +0200
     1.2 +++ b/ko/kosample/client/src/main/java/org/apidesign/bck2brwsr/kosample/DataModel.java	Wed Apr 27 06:14:49 2016 +0200
     1.3 @@ -17,17 +17,19 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.kosample;
     1.6  
     1.7 +import java.util.Timer;
     1.8  import java.util.TimerTask;
     1.9  import net.java.html.json.ComputedProperty;
    1.10  import net.java.html.json.Function;
    1.11  import net.java.html.json.Model;
    1.12 +import net.java.html.json.ModelOperation;
    1.13  import net.java.html.json.Property;
    1.14  import org.apidesign.bck2brwsr.kosample.js.Dialogs;
    1.15  
    1.16  /** Model annotation generates class Data with
    1.17   * one message property, boolean property and read only words property
    1.18   */
    1.19 -@Model(className = "Data", targetId="", properties = {
    1.20 +@Model(className = "Data", targetId="", instance = true, properties = {
    1.21      @Property(name = "message", type = String.class),
    1.22      @Property(name = "rotating", type = boolean.class)
    1.23  })
    1.24 @@ -54,7 +56,7 @@
    1.25          });
    1.26      }
    1.27  
    1.28 -    private static java.util.Timer TIMER = new java.util.Timer("Pending tasks");
    1.29 +    private static final Timer TIMER = new Timer("Pending tasks");
    1.30      private static void schedule(Runnable run, long delay) {
    1.31          TIMER.schedule(new TimerTask() {
    1.32              @Override
    1.33 @@ -80,5 +82,54 @@
    1.34          ui = new Data();
    1.35          ui.setMessage("Hello World from HTML and Java!");
    1.36          ui.applyBindings();
    1.37 +
    1.38 +        schedule(() -> ui.startTest(), 1000);
    1.39 +    }
    1.40 +
    1.41 +    //
    1.42 +    // testing
    1.43 +    //
    1.44 +
    1.45 +    @ModelOperation
    1.46 +    static void startTest(Data model) {
    1.47 +        Dialogs.triggerClick("beginTest");
    1.48 +    }
    1.49 +
    1.50 +    private boolean inTesting;
    1.51 +
    1.52 +    @Function
    1.53 +    void beginTest(Data model) {
    1.54 +        if (inTesting) {
    1.55 +            model.setRotating(false);
    1.56 +            model.setMessage("Hello World from HTML and Java!");
    1.57 +            inTesting = false;
    1.58 +            return;
    1.59 +        }
    1.60 +
    1.61 +        inTesting = true;
    1.62 +        model.setMessage("In testing mode stop Automatic testing?");
    1.63 +        model.setRotating(true);
    1.64 +        schedule(() -> {
    1.65 +            if (inTesting) {
    1.66 +                model.setMessage("In testing mode count down 3s");
    1.67 +            }
    1.68 +        }, 3000);
    1.69 +        schedule(() -> {
    1.70 +            if (inTesting) {
    1.71 +                model.setMessage("In testing mode count down 2s");
    1.72 +            }
    1.73 +        }, 4000);
    1.74 +        schedule(() -> {
    1.75 +            if (inTesting) {
    1.76 +                model.setMessage("In testing mode count down 1s");
    1.77 +            }
    1.78 +        }, 5000);
    1.79 +        schedule(() -> {
    1.80 +            if (inTesting) {
    1.81 +                model.setMessage("Finished testing mode close the browser");
    1.82 +                model.setRotating(false);
    1.83 +                System.exit(0);
    1.84 +            }
    1.85 +        }, 6000);
    1.86      }
    1.87  }