/* * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. */ package test.scenegraph.app; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Application; import javafx.geometry.Orientation; import javafx.scene.DepthTest; import javafx.stage.Stage; import javafx.scene.Group; import javafx.scene.PerspectiveCamera; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.input.KeyCode; import javafx.scene.layout.Pane; import javafx.scene.layout.FlowPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.scene.transform.Rotate; import javafx.scene.transform.Translate; import test.javaclient.shared.DragSupport; import test.javaclient.shared.Utils; /** * * @author shubov */ public class ShortAppWithoutDependencies extends Application { private Pane pageContent; FlowPane flow; DragSupport dragSupport; DragSupport dragSupport1; DragSupport dragSupport2; final Translate translateZ = new Translate(0, 0, 0); final Rotate rotateX = new Rotate(-150, 0, 0, 0, Rotate.X_AXIS); final Rotate rotateY = new Rotate(-40, 0, 0, 0, Rotate.Y_AXIS); final Translate translateY = new Translate(-400, -300, 0); public void addDragSupport() { dragSupport = new DragSupport(scene, KeyCode.CONTROL, Orientation.VERTICAL, translateZ.zProperty(), -3); dragSupport1 = new DragSupport(scene, null, Orientation.HORIZONTAL, rotateY.angleProperty()); dragSupport2 = new DragSupport(scene, null, Orientation.VERTICAL, rotateX.angleProperty()); } void set3D(Scene scene) { scene.setCamera(new PerspectiveCamera()); Translate centerTranslate = new Translate(); centerTranslate.xProperty().bind(scene.widthProperty().divide(2)); centerTranslate.yProperty().bind(scene.heightProperty().divide(2)); rotateY.setAngle(60); rotateX.setAngle(140); scene.getRoot().getTransforms().addAll(centerTranslate, translateZ, rotateX, rotateY, translateY); scene.getRoot().setDepthTest(DepthTest.ENABLE); addDragSupport(); } protected final static int width = 850; protected final static int height = 650; Scene scene; private Text getterNotifier; private Pane buttons; protected void fillScene() { //scene = new Scene(new Group(), width + 50, height + TABS_SPACE + 30); Group gr = new Group(); scene = new Scene(gr, -1, -1, true); set3D(scene); VBox vBox = new VBox(); pageContent = new Pane(); //setNodeForScreenshot(pageContent); getterNotifier = new Text(""); boolean showButtonsPane = true; buttons = new FlowPane(); if (showButtonsPane) { vBox.getChildren().add(buttons); } //getterNotifier.setId(GETTER_NOTIFIER); getterNotifier.setFill(Color.RED); vBox.getChildren().add(getterNotifier); //pageContent.setId(PAGE_CONTENT); boolean setPageContentSize = true; if (setPageContentSize) { pageContent.setMinSize(width, height); pageContent.setMaxSize(width, height); pageContent.setPrefSize(width, height); } //pageContent.setMouseTransparent(mouseTransparent); vBox.getChildren().add(pageContent); pageContent.setTranslateX(20); pageContent.setTranslateY(20); ((Group) scene.getRoot()).getChildren().add(vBox); } public void start(Stage stage) { stage.setWidth(width); stage.setHeight(height); fillScene(); stage.setScene(scene); /* Pane vBox = new FlowPane(); flow = new FlowPane(); vBox.getChildren().add(flow); pageContent = new FlowPane(); pageContent.setStyle("-fx-border-color: green"); vBox.getChildren().add(pageContent); gr.getChildren().add(vBox); * */ stage.show(); fillPageContent(); fillPageContent(); fillPageContent(); stFill(pageContent,true); } protected static Pane stFill(Pane region, boolean _withButton) { // resizeable node with child Pane resizeable = new Pane(); // was: Region x = new Region(); //if (withStyle) { resizeable.setStyle("-fx-border-color: blue;"); //} // resizeable.setId(IdBlueRegion); resizeable.getChildren().add(new Circle(4)); region.getChildren().add(resizeable); // resizeable node without child resizeable = new Pane(); //if (withStyle) { resizeable.setStyle("-fx-border-color: green;"); //} //resizeable.setId(IdGreenRegion); region.getChildren().add(resizeable); if (_withButton) { Button b1 = new Button("btn"); b1.setFont(new Font(14)); b1.setMaxWidth(85); b1.setMaxHeight(85); //b1.setId(IdTestButton1); b1.setMaxHeight(200); // 200 b1.setMaxWidth(200); region.getChildren().add(b1); } FillerWithNonResizeableNodes.stFill(region); return region; } static private interface RegionFiller { Pane fill(Pane region); } public static Color nodeColors[] = {Color.RED, Color.YELLOW, Color.BLUE, Color.GREEN, Color.BROWN, Color.MAGENTA}; private static int getZOffset() { return 10; } static private class FillerWithNonResizeableNodes implements RegionFiller { public static Pane stFill(Pane region) { for (int i = 0; i < nodeColors.length; ++i) { Circle nonresizeable = new Circle(5 + 3 * ((i) % 4)); //Node nonresizeable.setFill(nodeColors[i]); region.getChildren().add(nonresizeable); nonresizeable.setId("Circle"+nodeColors[i].toString()); nonresizeable.setTranslateZ(i*getZOffset()); } return region; } public Pane fill(Pane region) { return stFill(region); } } public void fillPageContent() { Pane tilePane = new HBox(); tilePane.setStyle("-fx-border-color: red"); tilePane.getChildren().add(new Circle(10)); Pane resizeable = new Pane(); resizeable.setStyle("-fx-border-color: blue;"); resizeable.getChildren().add(new Circle(4)); tilePane.getChildren().add(resizeable); // resizeable node without child resizeable = new Pane(); resizeable.setStyle("-fx-border-color: green;"); tilePane.getChildren().add(resizeable); Circle circle = new Circle(10); circle.setTranslateZ(10); tilePane.getChildren().add(circle); circle = new Circle(10); circle.setTranslateZ(20); tilePane.getChildren().add(circle); circle = new Circle(10); circle.setTranslateZ(30); tilePane.getChildren().add(new Circle(10)); tilePane.getChildren().add(new Circle(10)); tilePane.getChildren().add(new Circle(10)); tilePane.getChildren().add(new Button("Ok!")); stFill(tilePane, true); pageContent.getChildren().add(tilePane); } public static void main(String[] args) { launch(ShortAppWithoutDependencies.class, args); } }