samples/time_color.fx

changeset 1371
a8c536d1d3e0
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/samples/time_color.fx	Tue Dec 16 14:06:32 2014 +0530
     1.3 @@ -0,0 +1,89 @@
     1.4 +#// Usage: jjs -fx time_color.js [-- true/false]
     1.5 +
     1.6 +/*
     1.7 + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
     1.8 + *
     1.9 + * Redistribution and use in source and binary forms, with or without
    1.10 + * modification, are permitted provided that the following conditions
    1.11 + * are met:
    1.12 + *
    1.13 + *   - Redistributions of source code must retain the above copyright
    1.14 + *     notice, this list of conditions and the following disclaimer.
    1.15 + *
    1.16 + *   - Redistributions in binary form must reproduce the above copyright
    1.17 + *     notice, this list of conditions and the following disclaimer in the
    1.18 + *     documentation and/or other materials provided with the distribution.
    1.19 + *
    1.20 + *   - Neither the name of Oracle nor the names of its
    1.21 + *     contributors may be used to endorse or promote products derived
    1.22 + *     from this software without specific prior written permission.
    1.23 + *
    1.24 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
    1.25 + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    1.26 + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    1.27 + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    1.28 + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    1.29 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    1.30 + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    1.31 + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    1.32 + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    1.33 + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    1.34 + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    1.35 + */
    1.36 +
    1.37 +// A simple javafx program that changes background color
    1.38 +// of scene based on current time value (once per sec).
    1.39 +// inspired by http://whatcolourisit.scn9a.org/
    1.40 +
    1.41 +if (!$OPTIONS._fx) {
    1.42 +    print("Usage: jjs -fx time_color.js");
    1.43 +    print("       jjs -fx time_color.js -- true");
    1.44 +    exit(1);
    1.45 +}
    1.46 +
    1.47 +// JavaFX classes used
    1.48 +var Color = Java.type("javafx.scene.paint.Color");
    1.49 +var Group = Java.type("javafx.scene.Group");
    1.50 +var Label = Java.type("javafx.scene.control.Label");
    1.51 +var Platform = Java.type("javafx.application.Platform");
    1.52 +var Scene = Java.type("javafx.scene.Scene");
    1.53 +var Timer = Java.type("java.util.Timer");
    1.54 +
    1.55 +// execute function periodically once per given time in millisec
    1.56 +function setInterval(func, ms) {
    1.57 +    // New timer, run as daemon so the application can quit
    1.58 +    var timer = new Timer("setInterval", true);
    1.59 +    timer.schedule(function() Platform.runLater(func), ms, ms);	
    1.60 +    return timer;
    1.61 +}
    1.62 +
    1.63 +// do you want to flip hour/min/sec for RGB?
    1.64 +var flip = arguments.length > 0? "true".equals(arguments[0]) : false;
    1.65 +
    1.66 +// JavaFX start method
    1.67 +function start(stage) {
    1.68 +    start.title = "Time Color";
    1.69 +    var root = new Group();
    1.70 +    var label = new Label("time");
    1.71 +    label.textFill = Color.WHITE;
    1.72 +    root.children.add(label); 
    1.73 +    stage.scene = new Scene(root, 700, 500);
    1.74 +
    1.75 +    setInterval(function() {
    1.76 +        var d = new Date();
    1.77 +        var hours = d.getHours();
    1.78 +	var mins = d.getMinutes();
    1.79 +	var secs = d.getSeconds();
    1.80 +
    1.81 +        if (hours < 10) hours = "0" + hours;
    1.82 +        if (mins < 10) mins = "0" + mins;
    1.83 +        if (secs < 10) secs = "0" + secs;
    1.84 +
    1.85 +	var hex = flip?
    1.86 +            "#" + secs + mins + hours : "#" + hours + mins + secs;
    1.87 +        label.text = "Color: " + hex;
    1.88 +        stage.scene.fill = Color.web(hex);
    1.89 +    }, 1000);
    1.90 +
    1.91 +    stage.show();
    1.92 +}

mercurial