From a7308c2a38c19afab75c5f521c27cf51e9b81b76 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Tue, 29 Jan 2019 23:44:46 +0100 Subject: [PATCH] alwaysontop g-earth window --- G-Earth/src/main/java/gearth/Main.java | 2 +- .../main/java/gearth/ui/GEarthController.java | 31 +++++++++++++------ G-Earth/src/main/java/gearth/ui/SubForm.java | 1 + .../src/main/java/gearth/ui/extra/Extra.java | 7 +++++ 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/G-Earth/src/main/java/gearth/Main.java b/G-Earth/src/main/java/gearth/Main.java index 6053cdc..af8fc23 100644 --- a/G-Earth/src/main/java/gearth/Main.java +++ b/G-Earth/src/main/java/gearth/Main.java @@ -35,9 +35,9 @@ public class Main extends Application { FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/G-Earth.fxml")); Parent root = loader.load(); - GEarthController companion = loader.getController(); companion.setStage(primaryStage); + primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png"))); primaryStage.setResizable(false); diff --git a/G-Earth/src/main/java/gearth/ui/GEarthController.java b/G-Earth/src/main/java/gearth/ui/GEarthController.java index 05d700b..3380f36 100644 --- a/G-Earth/src/main/java/gearth/ui/GEarthController.java +++ b/G-Earth/src/main/java/gearth/ui/GEarthController.java @@ -22,6 +22,8 @@ public class GEarthController { private Stage stage = null; private volatile HConnection hConnection; + private volatile int initcount = 0; + public Connection connectionController; public Injection injectionController; public Logger loggerController; @@ -38,20 +40,14 @@ public class GEarthController { } public void initialize() { - connectionController.setParentController(this); - injectionController.setParentController(this); - loggerController.setParentController(this); - toolsController.setParentController(this); - schedulerController.setParentController(this); - extraController.setParentController(this); - infoController.setParentController(this); - extensionsController.setParentController(this); + synchronized (this) { + trySetController(); + } if (PacketLoggerFactory.usesUIlogger()) { tabBar.getTabs().remove(tab_Logger); } - //custom header bar // final Point[] startpos = {null}; // final Double[] xx = {0.0}; @@ -85,7 +81,24 @@ public class GEarthController { public void setStage(Stage stage) { this.stage = stage; + synchronized (this) { + trySetController(); + } } + + private void trySetController() { + if (++initcount == 2) { + connectionController.setParentController(this); + injectionController.setParentController(this); + loggerController.setParentController(this); + toolsController.setParentController(this); + schedulerController.setParentController(this); + extraController.setParentController(this); + infoController.setParentController(this); + extensionsController.setParentController(this); + } + } + public Stage getStage() { return stage; } diff --git a/G-Earth/src/main/java/gearth/ui/SubForm.java b/G-Earth/src/main/java/gearth/ui/SubForm.java index 3fe1412..e270be1 100644 --- a/G-Earth/src/main/java/gearth/ui/SubForm.java +++ b/G-Earth/src/main/java/gearth/ui/SubForm.java @@ -7,6 +7,7 @@ public class SubForm { protected GEarthController parentController; + //gets called when all UI elements are initialized, set parentController available & stage field is initialized public void setParentController(GEarthController controller) { parentController = controller; onParentSet(); diff --git a/G-Earth/src/main/java/gearth/ui/extra/Extra.java b/G-Earth/src/main/java/gearth/ui/extra/Extra.java index 55a1f05..f1048a3 100644 --- a/G-Earth/src/main/java/gearth/ui/extra/Extra.java +++ b/G-Earth/src/main/java/gearth/ui/extra/Extra.java @@ -3,6 +3,8 @@ package gearth.ui.extra; import gearth.Main; import gearth.ui.SubForm; import gearth.ui.info.Info; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; import javafx.event.ActionEvent; import javafx.scene.control.*; @@ -32,4 +34,9 @@ public class Extra extends SubForm { Info.activateHyperlink(url_troubleshooting); } + @Override + protected void onParentSet() { + parentController.getStage().setAlwaysOnTop(cbx_alwaysOnTop.isSelected()); + cbx_alwaysOnTop.selectedProperty().addListener(observable -> parentController.getStage().setAlwaysOnTop(cbx_alwaysOnTop.isSelected())); + } }