1#Usage: jjs -fx fxmlrunner.js -- <.fxml file> 2 3/* 4 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * - Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 13 * - Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * - Neither the name of Oracle nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 22 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 23 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34// See also https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html 35 36// Simple script to "run" a .FXML file specified in 37// command line. FXML file is expected to have inline 38// fx:script to handle GUI events. i.e., self-contained 39// FXML file is assumed. 40 41var file = arguments[0]; 42var File = Java.type("java.io.File"); 43if (!$OPTIONS._fx || !file || !new File(file).isFile()) { 44 print("Usage: jjs -fx fxmlrunner.js -- <.fxml file> [width] [height]"); 45 exit(1); 46} 47 48// optional stage width and height from command line 49var width = arguments[1]? parseInt(arguments[1]) : 400; 50var height = arguments[2]? parseInt(arguments[2]) : 300; 51 52// JavaFX classes used 53var FXMLLoader = Java.type("javafx.fxml.FXMLLoader"); 54var Scene = Java.type("javafx.scene.Scene"); 55 56function start(stage) { 57 // load FXML 58 var root = FXMLLoader.load(new File(file).toURL()); 59 // show it in a scene 60 var scene = new Scene(root, width, height); 61 stage.title = file; 62 stage.scene = scene; 63 stage.show(); 64} 65