/** * Copyright 2013 (C) Mr LoNee - (Laurent NICOLAS) - www.mrlonee.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, see <http://www.gnu.org/licenses/>. */ package com.mrlonee.radialfx.moviemenu; import java.io.File; import java.io.IOException; import javafx.application.Application; import javafx.embed.swing.SwingFXUtils; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.WritableImage; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.stage.Stage; import javax.imageio.ImageIO; public class RadialMovieMenuDemo extends Application { public static void main(final String[] args) { launch(args); } private Group container; private RadialMovieMenu radialMenu; @Override public void start(final Stage primaryStage) throws Exception { container = new Group(); final Scene scene = new Scene(container); scene.setFill(Color.LIGHTBLUE); primaryStage.setResizable(false); primaryStage.setScene(scene); primaryStage.setWidth(450); primaryStage.setHeight(480); primaryStage.centerOnScreen(); primaryStage.setTitle("Radial Movie Menu Demo"); primaryStage.show(); final double itemInnerRadius = 60; final double itemRadius = 95; final double centerClosedRadius = 28; final double centerOpenedRadius = 40; final String[] menus = new String[] { "DOWLOADS", "SYNOPSIS", "VIDEO", "PHOTO", "GAME", "CAST & CREW" }; radialMenu = new RadialMovieMenu(menus, itemInnerRadius, itemRadius, centerClosedRadius, centerOpenedRadius); radialMenu.setTranslateX(200); radialMenu.setTranslateY(200); container.getChildren().addAll(radialMenu); scene.setOnMouseClicked(new EventHandler<MouseEvent>() { @Override public void handle(final MouseEvent event) { if (event.isSecondaryButtonDown()) { radialMenu.setTranslateX(event.getX()); radialMenu.setTranslateY(event.getY()); } } }); scene.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(final KeyEvent event) { System.out.println(event); if (event.getCode() == KeyCode.F5) { RadialMovieMenuDemo.this.takeSnapshot(scene); } } }); } int snapshotCounter = 0; private void takeSnapshot(final Scene scene) { // Take snapshot of the scene final WritableImage writableImage = scene.snapshot(null); // Write snapshot to file system as a .png image final File outFile = new File("snapshot/radialmenu-snapshot-" + snapshotCounter + ".png"); outFile.getParentFile().mkdirs(); try { ImageIO.write(SwingFXUtils.fromFXImage(writableImage, null), "png", outFile); } catch (final IOException ex) { System.out.println(ex.getMessage()); } snapshotCounter++; } }