From ef8aa0d36409298e7fdc64b0b38c505ac8cea24b Mon Sep 17 00:00:00 2001 From: Victor Date: Sat, 9 Sep 2017 19:36:20 +0300 Subject: [PATCH] Switch to custom scene root --- .../hotarufx/ui/control/NodesGroup.java | 47 +++++++++++++++++++ .../annimon/hotarufx/visual/Composition.java | 4 +- .../annimon/hotarufx/visual/VirtualScene.java | 4 +- 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java diff --git a/app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java b/app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java new file mode 100644 index 0000000..b1b013b --- /dev/null +++ b/app/src/main/java/com/annimon/hotarufx/ui/control/NodesGroup.java @@ -0,0 +1,47 @@ +package com.annimon.hotarufx.ui.control; + +import javafx.collections.ObservableList; +import javafx.scene.Group; +import javafx.scene.Node; + +public class NodesGroup extends Group { + + private final double width, height; + + public NodesGroup(double width, double height) { + this.width = width; + this.height = height; + setAutoSizeChildren(false); + setManaged(false); + } + + @Override + public ObservableList getChildren() { + return super.getChildren(); + } + + @Override + public double prefWidth(double unused) { + return width; + } + + @Override + public double prefHeight(double unused) { + return height; + } + + @Override + protected double computePrefWidth(double unused) { + return width; + } + + @Override + protected double computePrefHeight(double unused) { + return height; + } + + @Override + public boolean isResizable() { + return false; + } +} diff --git a/app/src/main/java/com/annimon/hotarufx/visual/Composition.java b/app/src/main/java/com/annimon/hotarufx/visual/Composition.java index 66c3605..a304a01 100644 --- a/app/src/main/java/com/annimon/hotarufx/visual/Composition.java +++ b/app/src/main/java/com/annimon/hotarufx/visual/Composition.java @@ -1,6 +1,6 @@ package com.annimon.hotarufx.visual; -import javafx.scene.Group; +import com.annimon.hotarufx.ui.control.NodesGroup; import javafx.scene.Scene; import javafx.scene.input.KeyCode; import javafx.scene.paint.Color; @@ -54,7 +54,7 @@ public class Composition { } private VirtualScene newScene() { - val group = new Group(); + val group = new NodesGroup(sceneWidth, sceneHeight); group.setScaleX(1d / factor); group.setScaleY(1d / factor); group.setTranslateX(sceneWidth / 2); diff --git a/app/src/main/java/com/annimon/hotarufx/visual/VirtualScene.java b/app/src/main/java/com/annimon/hotarufx/visual/VirtualScene.java index 911cbff..a3d9b15 100644 --- a/app/src/main/java/com/annimon/hotarufx/visual/VirtualScene.java +++ b/app/src/main/java/com/annimon/hotarufx/visual/VirtualScene.java @@ -1,6 +1,6 @@ package com.annimon.hotarufx.visual; -import javafx.scene.Group; +import com.annimon.hotarufx.ui.control.NodesGroup; import javafx.scene.Node; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -9,7 +9,7 @@ import lombok.RequiredArgsConstructor; public class VirtualScene { @Getter - private final Group group; + private final NodesGroup group; @Getter private final int virtualWidth, virtualHeight;