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 +}