#// Usage: jjs -fx time_color.js [-- true/false] /* * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Oracle nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // A simple javafx program that changes background color // of scene based on current time value (once per sec). // inspired by http://whatcolourisit.scn9a.org/ if (!$OPTIONS._fx) { print("Usage: jjs -fx time_color.js"); print(" jjs -fx time_color.js -- true"); exit(1); } // JavaFX classes used var Color = Java.type("javafx.scene.paint.Color"); var Group = Java.type("javafx.scene.Group"); var Label = Java.type("javafx.scene.control.Label"); var Platform = Java.type("javafx.application.Platform"); var Scene = Java.type("javafx.scene.Scene"); var Timer = Java.type("java.util.Timer"); // execute function periodically once per given time in millisec function setInterval(func, ms) { // New timer, run as daemon so the application can quit var timer = new Timer("setInterval", true); timer.schedule(function() Platform.runLater(func), ms, ms); return timer; } // do you want to flip hour/min/sec for RGB? var flip = arguments.length > 0? "true".equals(arguments[0]) : false; // JavaFX start method function start(stage) { start.title = "Time Color"; var root = new Group(); var label = new Label("time"); label.textFill = Color.WHITE; root.children.add(label); stage.scene = new Scene(root, 700, 500); setInterval(function() { var d = new Date(); var hours = d.getHours(); var mins = d.getMinutes(); var secs = d.getSeconds(); if (hours < 10) hours = "0" + hours; if (mins < 10) mins = "0" + mins; if (secs < 10) secs = "0" + secs; var hex = flip? "#" + secs + mins + hours : "#" + hours + mins + secs; label.text = "Color: " + hex; stage.scene.fill = Color.web(hex); }, 1000); stage.show(); }