From 292696172cae3268e45c1d62aeab1a6178298dde Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 01:44:39 +0100 Subject: [PATCH 01/22] stuff --- G-Earth/src/main/java/gearth/GEarth.java | 74 ++++++++++++++----- .../main/java/gearth/ui/GEarthController.java | 48 ------------ .../src/main/java/gearth/ui/themes/Theme.java | 7 ++ .../gearth/ui/titlebar/TitleBarConfig.java | 10 +++ .../ui/titlebar/TitleBarController.java | 73 ++++++++++++++++++ .../src/main/resources/gearth/ui/G-Earth.fxml | 27 ------- .../gearth/ui/titlebar/Titlebar.fxml | 35 +++++++++ 7 files changed, 181 insertions(+), 93 deletions(-) create mode 100644 G-Earth/src/main/java/gearth/ui/themes/Theme.java create mode 100644 G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java create mode 100644 G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java create mode 100644 G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 6cb6041..9c98f6b 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -4,15 +4,14 @@ import gearth.misc.AdminValidator; import gearth.misc.Cacher; import gearth.misc.UpdateChecker; import gearth.ui.GEarthController; +import gearth.ui.titlebar.TitleBarConfig; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Application; import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.scene.control.ToolBar; import javafx.scene.image.Image; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.stage.StageStyle; @@ -25,6 +24,10 @@ public class GEarth extends Application { public static String theme = "G-Earth_Dark"; public static String[] themes = new String[] {"G-Earth", "Tanji", "G-Earth_Dark"}; + private Stage stage; + private TitleBarController titleBar; + private GEarthController controller; + static { if (Cacher.getCacheContents().has("theme")) { theme = Cacher.getCacheContents().getString("theme"); @@ -34,36 +37,71 @@ public class GEarth extends Application { @Override public void start(Stage primaryStage) throws Exception{ main = this; + stage = primaryStage; FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/G-Earth.fxml")); Parent root = loader.load(); - GEarthController companion = loader.getController(); - companion.setStage(primaryStage); - primaryStage.initStyle(StageStyle.TRANSPARENT); + controller = loader.getController(); + controller.setStage(primaryStage); + stage.initStyle(StageStyle.TRANSPARENT); - // https://stackoverflow.com/questions/20732100/javafx-why-does-stage-setresizablefalse-cause-additional-margins -// primaryStage.setScene(new Scene(root, 650, 295)); primaryStage.setScene(new Scene(root)); + titleBar = TitleBarController.create(primaryStage, new TitleBarConfig() { + @Override + public boolean displayThemePicker() { + return true; + } + + @Override + public void onCloseClicked() { + closeGEarth(); + } + + @Override + public void onMinimizeClicked() { + stage.setIconified(true); + } + + @Override + public void onSetTheme(String theme) { + setTheme(theme); + } + }); primaryStage.setResizable(false); primaryStage.sizeToScene(); - - primaryStage.getScene().setFill(Color.TRANSPARENT); - companion.setTheme(theme); + + setTheme(theme); primaryStage.show(); - primaryStage.setOnCloseRequest( event -> { - companion.exit(); - Platform.exit(); - - // Platform.exit doesn't seem to be enough on Windows? - System.exit(0); - }); + primaryStage.setOnCloseRequest( event -> closeGEarth()); AdminValidator.validate(); UpdateChecker.checkForUpdates(); } + private void closeGEarth() { + controller.exit(); + Platform.exit(); + System.exit(0); + } + + private void setTheme(String theme) { + GEarth.theme = theme; + + stage.getScene().getStylesheets().clear(); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", theme)).toExternalForm()); + + stage.getIcons().clear(); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", theme)))); + + stage.setTitle(theme.split("_")[0] + " " + GEarth.version); + titleBar.setTitle(stage.getTitle()); + + controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", theme)))); + controller.infoController.version.setText(stage.getTitle()); + } + public static String[] args; public static void main(String[] args) { diff --git a/G-Earth/src/main/java/gearth/ui/GEarthController.java b/G-Earth/src/main/java/gearth/ui/GEarthController.java index 4627294..2106a99 100644 --- a/G-Earth/src/main/java/gearth/ui/GEarthController.java +++ b/G-Earth/src/main/java/gearth/ui/GEarthController.java @@ -43,9 +43,6 @@ public class GEarthController { private List tabs = null; - public Pane titleBar; - public Label titleLabel; - public GEarthController() { SocksConfiguration temporary_socks = new SocksConfiguration() { public boolean useSocks() { return false; } @@ -123,54 +120,9 @@ public class GEarthController { loggerController.miniLogText(color, text); } - public void setTheme(String theme) { - GEarth.theme = theme; - - getStage().getScene().getStylesheets().clear(); - getStage().getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", theme)).toExternalForm()); - - getStage().getIcons().clear(); - getStage().getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", theme)))); - - getStage().setTitle(theme.split("_")[0] + " " + GEarth.version); - titleLabel.setText(getStage().getTitle()); - - infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", theme)))); - infoController.version.setText(getStage().getTitle()); - } - - public void exit() { tabs.forEach(SubForm::exit); hConnection.abort(); } - public void handleCloseAction(MouseEvent event) { - this.exit(); - Platform.exit(); - - // Platform.exit doesn't seem to be enough on Windows? - System.exit(0); - } - - public void handleMinimizeAction(MouseEvent event) { - getStage().setIconified(true); - } - - private double xOffset, yOffset; - - public void handleClickAction(MouseEvent event) { - xOffset = event.getSceneX(); - yOffset = event.getSceneY(); - } - - public void handleMovementAction(MouseEvent event) { - getStage().setX(event.getScreenX() - xOffset); - getStage().setY(event.getScreenY() - yOffset); - } - - public void toggleTheme(MouseEvent event) { - int themeIndex = Arrays.asList(GEarth.themes).indexOf(GEarth.theme); - setTheme(GEarth.themes[(themeIndex + 1) % GEarth.themes.length]); - } } diff --git a/G-Earth/src/main/java/gearth/ui/themes/Theme.java b/G-Earth/src/main/java/gearth/ui/themes/Theme.java new file mode 100644 index 0000000..a2bae69 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/Theme.java @@ -0,0 +1,7 @@ +package gearth.ui.themes; + +public class Theme { + + + +} diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java new file mode 100644 index 0000000..57537d0 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java @@ -0,0 +1,10 @@ +package gearth.ui.titlebar; + +public interface TitleBarConfig { + + boolean displayThemePicker(); + + void onCloseClicked(); + void onMinimizeClicked(); + void onSetTheme(String theme); +} diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java new file mode 100644 index 0000000..c2709c0 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -0,0 +1,73 @@ +package gearth.ui.titlebar; + +import gearth.GEarth; +import javafx.application.Platform; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.control.Label; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.Pane; +import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; +import javafx.stage.Stage; +import javafx.stage.StageStyle; + +import java.io.IOException; +import java.util.Arrays; + +public class TitleBarController { + + public Label titleLabel; + public Pane titleBar; + + private Stage stage; + private TitleBarConfig config; + + public static TitleBarController create(Stage stage, TitleBarConfig config) throws IOException { + FXMLLoader loader = new FXMLLoader(TitleBarController.class.getResource("Titlebar.fxml")); + Parent root = loader.load(); + TitleBarController controller = loader.getController(); + controller.stage = stage; + controller.config = config; + stage.initStyle(StageStyle.TRANSPARENT); + + Parent parent = stage.getScene().getRoot(); + + VBox newParent = new VBox(root, parent); + stage.getScene().setRoot(newParent); + parent.getScene().setFill(Color.TRANSPARENT); + + return controller; + } + + public void setTitle(String title) { + titleLabel.setText(title); + } + + + public void handleCloseAction(MouseEvent event) { + config.onCloseClicked(); + } + + public void handleMinimizeAction(MouseEvent event) { + stage.setIconified(true); + } + + private double xOffset, yOffset; + + public void handleClickAction(MouseEvent event) { + xOffset = event.getSceneX(); + yOffset = event.getSceneY(); + } + + public void handleMovementAction(MouseEvent event) { + stage.setX(event.getScreenX() - xOffset); + stage.setY(event.getScreenY() - yOffset); + } + + public void toggleTheme(MouseEvent event) { + int themeIndex = Arrays.asList(GEarth.themes).indexOf(GEarth.theme); + config.onSetTheme(GEarth.themes[(themeIndex + 1) % GEarth.themes.length]); + } + +} diff --git a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml index 6dc6ac7..9f9f0d3 100644 --- a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml +++ b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml @@ -8,33 +8,6 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml new file mode 100644 index 0000000..24acbca --- /dev/null +++ b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 7a7da9835a2fb80f66a6f732147788be4af883d8 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 01:48:41 +0100 Subject: [PATCH 02/22] Update Titlebar.fxml --- G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml index 24acbca..e0c1e34 100644 --- a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml +++ b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml @@ -8,12 +8,12 @@ - + - + @@ -28,7 +28,7 @@ - + From 33db81a8b51118d5d463e2413a63549f08e914a6 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 02:08:49 +0100 Subject: [PATCH 03/22] more refactoring --- G-Earth/src/main/java/gearth/GEarth.java | 7 +++-- .../main/java/gearth/misc/AdminValidator.java | 4 +-- .../java/gearth/misc/ConfirmationDialog.java | 4 +-- .../main/java/gearth/misc/UpdateChecker.java | 4 +-- .../proxy/ProxyProviderFactory.java | 4 +-- .../proxy/flash/FlashProxyProvider.java | 4 +-- .../proxy/flash/NormalFlashProxyProvider.java | 4 +-- .../proxy/nitro/http/NitroHttpProxy.java | 4 +-- .../gearth/protocol/memory/Rc4Obtainer.java | 4 +-- .../services/g_python/GPythonShell.java | 6 ++--- .../GExtensionStoreLauncher.java | 4 +-- .../uilogger/UiLogger.java | 9 +------ .../uilogger/UiLoggerController.java | 4 +-- .../uilogger/UiLoggerLauncher.java | 4 +-- .../gearth/services/scheduler/Interval.java | 2 +- .../unity_tools/GUnityFileServer.java | 2 +- .../main/java/gearth/ui/GEarthController.java | 24 +++++++----------- .../connection/ConnectionController.java | 2 +- .../extensions/ExtensionItemContainer.java | 3 +-- .../ExtensionItemContainerProducer.java | 2 +- .../extensions/ExtensionsController.java | 4 +-- .../extensions/logger/Element.java | 2 +- .../extensions/logger/ExtensionLogger.java | 8 +++--- .../logger/ExtensionLoggerController.java | 3 +-- .../{ => subforms}/extra/ExtraController.java | 8 +++--- .../{ => subforms}/info/InfoController.java | 4 +-- .../injection/InjectedPackets.java | 2 +- .../injection/InjectionController.java | 5 +--- .../logger/LoggerController.java | 6 ++--- .../loggerdisplays/LinuxTerminalLogger.java | 2 +- .../logger/loggerdisplays/PacketLogger.java | 2 +- .../loggerdisplays/PacketLoggerFactory.java | 2 +- .../loggerdisplays/SimpleTerminalLogger.java | 2 +- .../scheduler/InteractableScheduleItem.java | 5 +--- .../scheduler/ScheduleItemContainer.java | 3 +-- .../scheduler/SchedulerController.java | 5 +--- .../{ => subforms}/tools/ToolsController.java | 3 +-- .../ui/titlebar/TitleBarController.java | 1 + .../src/main/resources/gearth/ui/G-Earth.fxml | 18 ++++++------- .../{ => subforms}/connection/Connection.fxml | 2 +- .../{ => subforms}/extensions/Extensions.fxml | 2 +- .../extensions/logger/ExtensionLogger.fxml | 2 +- .../extensions/logger/logger.css | 0 .../gearth/ui/{ => subforms}/extra/Extra.fxml | 2 +- .../gearth/ui/{ => subforms}/info/Info.fxml | 2 +- .../{ => subforms}/injection/Injection.fxml | 2 +- .../ui/{ => subforms}/logger/Logger.fxml | 2 +- .../{ => subforms}/scheduler/Scheduler.fxml | 2 +- .../gearth/ui/{ => subforms}/tools/Tools.fxml | 2 +- .../gearth/{ => ui}/themes/G-Earth/logo.ico | Bin .../gearth/{ => ui}/themes/G-Earth/logo.png | Bin .../{ => ui}/themes/G-Earth/logoSmall.png | Bin .../{ => ui}/themes/G-Earth/styling.css | 18 ++++++------- .../{ => ui}/themes/G-Earth/themeButton.png | Bin .../{ => ui}/themes/G-Earth_Dark/logo.ico | Bin .../{ => ui}/themes/G-Earth_Dark/logo.png | Bin .../themes/G-Earth_Dark/logoSmall.png | Bin .../{ => ui}/themes/G-Earth_Dark/styling.css | 18 ++++++------- .../themes/G-Earth_Dark/themeButton.png | Bin .../gearth/{ => ui}/themes/Tanji/logo.ico | Bin .../gearth/{ => ui}/themes/Tanji/logo.png | Bin .../{ => ui}/themes/Tanji/logoSmall.png | Bin .../gearth/{ => ui}/themes/Tanji/styling.css | 18 ++++++------- .../{ => ui}/themes/Tanji/themeButton.png | Bin .../gearth/ui/titlebar/Titlebar.fxml | 4 +-- 65 files changed, 116 insertions(+), 146 deletions(-) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/connection/ConnectionController.java (99%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/ExtensionItemContainer.java (99%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/ExtensionItemContainerProducer.java (97%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/ExtensionsController.java (97%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/logger/Element.java (80%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/logger/ExtensionLogger.java (89%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extensions/logger/ExtensionLoggerController.java (97%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/extra/ExtraController.java (96%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/info/InfoController.java (96%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/injection/InjectedPackets.java (98%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/injection/InjectionController.java (98%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/logger/LoggerController.java (96%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/logger/loggerdisplays/LinuxTerminalLogger.java (98%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/logger/loggerdisplays/PacketLogger.java (94%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/logger/loggerdisplays/PacketLoggerFactory.java (96%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/logger/loggerdisplays/SimpleTerminalLogger.java (97%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/scheduler/InteractableScheduleItem.java (95%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/scheduler/ScheduleItemContainer.java (98%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/scheduler/SchedulerController.java (98%) rename G-Earth/src/main/java/gearth/ui/{ => subforms}/tools/ToolsController.java (98%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/connection/Connection.fxml (99%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/extensions/Extensions.fxml (98%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/extensions/logger/ExtensionLogger.fxml (86%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/extensions/logger/logger.css (100%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/extra/Extra.fxml (99%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/info/Info.fxml (98%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/injection/Injection.fxml (98%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/logger/Logger.fxml (98%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/scheduler/Scheduler.fxml (99%) rename G-Earth/src/main/resources/gearth/ui/{ => subforms}/tools/Tools.fxml (99%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth/logo.ico (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth/logo.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth/logoSmall.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth/styling.css (98%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth/themeButton.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth_Dark/logo.ico (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth_Dark/logo.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth_Dark/logoSmall.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth_Dark/styling.css (98%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/G-Earth_Dark/themeButton.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/Tanji/logo.ico (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/Tanji/logo.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/Tanji/logoSmall.png (100%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/Tanji/styling.css (98%) rename G-Earth/src/main/resources/gearth/{ => ui}/themes/Tanji/themeButton.png (100%) diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 9c98f6b..fff1a18 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -12,7 +12,6 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.image.Image; -import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.stage.StageStyle; @@ -90,15 +89,15 @@ public class GEarth extends Application { GEarth.theme = theme; stage.getScene().getStylesheets().clear(); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", theme)).toExternalForm()); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme)).toExternalForm()); stage.getIcons().clear(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", theme)))); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme)))); stage.setTitle(theme.split("_")[0] + " " + GEarth.version); titleBar.setTitle(stage.getTitle()); - controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", theme)))); + controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logo.png", theme)))); controller.infoController.version.setText(stage.getTitle()); } diff --git a/G-Earth/src/main/java/gearth/misc/AdminValidator.java b/G-Earth/src/main/java/gearth/misc/AdminValidator.java index 338b89f..a19e6d7 100644 --- a/G-Earth/src/main/java/gearth/misc/AdminValidator.java +++ b/G-Earth/src/main/java/gearth/misc/AdminValidator.java @@ -48,8 +48,8 @@ public class AdminValidator { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); alert.show(); diff --git a/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java b/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java index d607e04..4c10bc8 100644 --- a/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java +++ b/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java @@ -27,8 +27,8 @@ public class ConfirmationDialog { // Need to force the alert to layout in order to grab the graphic, // as we are replacing the dialog pane with a custom pane Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().applyCss(); Node graphic = alert.getDialogPane().getGraphic(); // Create a new dialog pane that has a checkbox instead of the hide/show details button diff --git a/G-Earth/src/main/java/gearth/misc/UpdateChecker.java b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java index 5fd42e3..b43f49e 100644 --- a/G-Earth/src/main/java/gearth/misc/UpdateChecker.java +++ b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java @@ -38,8 +38,8 @@ public class UpdateChecker { Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); FlowPane fp = new FlowPane(); Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:"); diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java index da9f8b7..92796f5 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java @@ -109,8 +109,8 @@ public class ProxyProviderFactory { "Due to current limitations you can only connect one session per hotel to G-Earth in Raw IP mode on Windows.\n\n" + "You can bypass this by using a SOCKS proxy [Extra -> Advanced -> SOCKS]", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); alert.show(); diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java index 8740163..55d3a06 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java @@ -125,8 +125,8 @@ public abstract class FlashProxyProvider implements ProxyProvider { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "You entered invalid connection information, G-Earth could not connect", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); alert.show(); diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java index 4cf7b5f..21d9730 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java @@ -110,8 +110,8 @@ public class NormalFlashProxyProvider extends FlashProxyProvider { Alert a = new Alert(Alert.AlertType.ERROR, "The port is in use by " + processName, ButtonType.OK); Stage stage = (Stage) a.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); a.showAndWait(); }); throw new IOException(e); diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java index ad9f575..dbe319e 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java @@ -57,8 +57,8 @@ public class NitroHttpProxy { ButtonType.YES, ButtonType.NO ); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); shouldInstall.set(alert.showAndWait().filter(t -> t == ButtonType.YES).isPresent()); waitForDialog.release(); diff --git a/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java b/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java index 1066821..f342683 100644 --- a/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java +++ b/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java @@ -83,8 +83,8 @@ public class Rc4Obtainer { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.WARNING, "Something went wrong!", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); FlowPane fp = new FlowPane(); Label lbl = new Label("G-Earth has experienced an issue" + System.lineSeparator()+ System.lineSeparator() + "Head over to our Troubleshooting page to solve the problem:"); diff --git a/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java b/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java index 0012ff2..76bfd66 100644 --- a/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java +++ b/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java @@ -1,7 +1,7 @@ package gearth.services.g_python; import gearth.GEarth; -import gearth.ui.extra.ExtraController; +import gearth.ui.subforms.extra.ExtraController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -171,8 +171,8 @@ public class GPythonShell { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "G-Python error", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.setTitle("G-Python error"); FlowPane fp = new FlowPane(); diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java index 5e94d67..42eda93 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java @@ -26,8 +26,8 @@ public class GExtensionStoreLauncher extends InternalExtensionFormLauncher { Parent root = loader.load(); stage.setTitle(String.format("%s | Packet Logger", GEarth.theme)); stage.initModality(Modality.NONE); - stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); Scene scene = new Scene(root); - scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", GEarth.theme)); + scene.getStylesheets().add(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)); scene.getStylesheets().add("/gearth/services/internal_extensions/uilogger/logger.css"); UiLoggerController controller = loader.getController(); diff --git a/G-Earth/src/main/java/gearth/services/scheduler/Interval.java b/G-Earth/src/main/java/gearth/services/scheduler/Interval.java index 5ff49bb..2c15c15 100644 --- a/G-Earth/src/main/java/gearth/services/scheduler/Interval.java +++ b/G-Earth/src/main/java/gearth/services/scheduler/Interval.java @@ -1,6 +1,6 @@ package gearth.services.scheduler; -import gearth.ui.scheduler.SchedulerController; +import gearth.ui.subforms.scheduler.SchedulerController; /** * Created by Jonas on 11/04/18. diff --git a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java index 4a00d9a..ba8b4e6 100644 --- a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java +++ b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java @@ -135,7 +135,7 @@ public class GUnityFileServer extends HttpServlet private void getLogo(HttpServletResponse response) throws IOException { OutputStream out = response.getOutputStream(); - InputStream in = GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", GEarth.theme)); + InputStream in = GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logo.png", GEarth.theme)); byte[] bytes = new byte[4096]; int bytesRead; diff --git a/G-Earth/src/main/java/gearth/ui/GEarthController.java b/G-Earth/src/main/java/gearth/ui/GEarthController.java index 2106a99..a7725a1 100644 --- a/G-Earth/src/main/java/gearth/ui/GEarthController.java +++ b/G-Earth/src/main/java/gearth/ui/GEarthController.java @@ -1,27 +1,21 @@ package gearth.ui; -import gearth.GEarth; import gearth.protocol.connection.proxy.ProxyProviderFactory; import gearth.protocol.connection.proxy.SocksConfiguration; -import gearth.ui.logger.loggerdisplays.PacketLoggerFactory; -import javafx.application.Platform; +import gearth.ui.subforms.logger.loggerdisplays.PacketLoggerFactory; import javafx.scene.control.*; -import javafx.scene.image.Image; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.Pane; import javafx.stage.Stage; import gearth.protocol.HConnection; -import gearth.ui.connection.ConnectionController; -import gearth.ui.extensions.ExtensionsController; -import gearth.ui.info.InfoController; -import gearth.ui.injection.InjectionController; -import gearth.ui.logger.LoggerController; -import gearth.ui.scheduler.SchedulerController; -import gearth.ui.extra.ExtraController; -import gearth.ui.tools.ToolsController; +import gearth.ui.subforms.connection.ConnectionController; +import gearth.ui.subforms.extensions.ExtensionsController; +import gearth.ui.subforms.info.InfoController; +import gearth.ui.subforms.injection.InjectionController; +import gearth.ui.subforms.logger.LoggerController; +import gearth.ui.subforms.scheduler.SchedulerController; +import gearth.ui.subforms.extra.ExtraController; +import gearth.ui.subforms.tools.ToolsController; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class GEarthController { diff --git a/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java b/G-Earth/src/main/java/gearth/ui/subforms/connection/ConnectionController.java similarity index 99% rename from G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java rename to G-Earth/src/main/java/gearth/ui/subforms/connection/ConnectionController.java index 4afa7c1..3add757 100644 --- a/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/connection/ConnectionController.java @@ -1,4 +1,4 @@ -package gearth.ui.connection; +package gearth.ui.subforms.connection; import gearth.GEarth; import gearth.misc.Cacher; diff --git a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java similarity index 99% rename from G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java index b6f6c24..8413663 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java @@ -1,4 +1,4 @@ -package gearth.ui.extensions; +package gearth.ui.subforms.extensions; import gearth.services.extension_handler.extensions.ExtensionType; import gearth.services.extension_handler.extensions.GEarthExtension; @@ -9,7 +9,6 @@ import javafx.geometry.Pos; import javafx.scene.control.*; import javafx.scene.input.MouseEvent; import javafx.scene.layout.*; -import javafx.scene.paint.Paint; import javafx.scene.text.Font; import gearth.misc.ConfirmationDialog; import gearth.ui.buttons.*; diff --git a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainerProducer.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainerProducer.java similarity index 97% rename from G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainerProducer.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainerProducer.java index 6bc2a2e..d183e6d 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionItemContainerProducer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainerProducer.java @@ -1,4 +1,4 @@ -package gearth.ui.extensions; +package gearth.ui.subforms.extensions; import gearth.services.extension_handler.extensions.GEarthExtension; import javafx.scene.Node; diff --git a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionsController.java similarity index 97% rename from G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionsController.java index 979b073..d51f7fd 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionsController.java @@ -1,4 +1,4 @@ -package gearth.ui.extensions; +package gearth.ui.subforms.extensions; import gearth.services.extension_handler.ExtensionHandler; import gearth.services.extension_handler.extensions.ExtensionListener; @@ -9,7 +9,7 @@ import gearth.services.extension_handler.extensions.implementations.network.exec import gearth.services.extension_handler.extensions.implementations.network.executer.ExtensionRunnerFactory; import gearth.services.g_python.GPythonShell; import gearth.ui.SubForm; -import gearth.ui.extensions.logger.ExtensionLogger; +import gearth.ui.subforms.extensions.logger.ExtensionLogger; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.scene.control.*; diff --git a/G-Earth/src/main/java/gearth/ui/extensions/logger/Element.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/Element.java similarity index 80% rename from G-Earth/src/main/java/gearth/ui/extensions/logger/Element.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/Element.java index 6dee891..5b91a98 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/logger/Element.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/Element.java @@ -1,4 +1,4 @@ -package gearth.ui.extensions.logger; +package gearth.ui.subforms.extensions.logger; class Element { final String text; diff --git a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java similarity index 89% rename from G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java index bd435b2..19bffe8 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java @@ -1,4 +1,4 @@ -package gearth.ui.extensions.logger; +package gearth.ui.subforms.extensions.logger; import gearth.GEarth; import javafx.fxml.FXMLLoader; @@ -21,7 +21,7 @@ public class ExtensionLogger { volatile boolean isVisible = false; public ExtensionLogger() { - FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/extensions/logger/ExtensionLogger.fxml")); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml")); try { Parent root = loader.load(); @@ -37,13 +37,13 @@ public class ExtensionLogger { stage = new Stage(); stage.setTitle(String.format("%s | Extension Console", GEarth.theme)); stage.initModality(Modality.NONE); - stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); stage.setAlwaysOnTop(true); stage.setMinHeight(235); stage.setMinWidth(370); Scene scene = new Scene(root); - scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", GEarth.theme)); + scene.getStylesheets().add(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)); scene.getStylesheets().add("/gearth/ui/extensions/logger/logger.css"); ExtensionLoggerController controller = loader.getController(); controller.setStage(stage); diff --git a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLoggerController.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java similarity index 97% rename from G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLoggerController.java rename to G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java index 58f88a6..9b00886 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/logger/ExtensionLoggerController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java @@ -1,8 +1,7 @@ -package gearth.ui.extensions.logger; +package gearth.ui.subforms.extensions.logger; import javafx.application.Platform; import javafx.fxml.Initializable; -import javafx.scene.control.ScrollPane; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import org.fxmisc.flowless.VirtualizedScrollPane; diff --git a/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java b/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java similarity index 96% rename from G-Earth/src/main/java/gearth/ui/extra/ExtraController.java rename to G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java index 0705892..d502d8d 100644 --- a/G-Earth/src/main/java/gearth/ui/extra/ExtraController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java @@ -1,4 +1,4 @@ -package gearth.ui.extra; +package gearth.ui.subforms.extra; import gearth.GEarth; import gearth.misc.Cacher; @@ -9,7 +9,7 @@ import gearth.protocol.connection.proxy.SocksConfiguration; import gearth.services.always_admin.AdminService; import gearth.services.g_python.GPythonVersionUtils; import gearth.ui.SubForm; -import gearth.ui.info.InfoController; +import gearth.ui.subforms.info.InfoController; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.scene.control.*; @@ -176,8 +176,8 @@ public class ExtraController extends SubForm implements SocksConfiguration { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "G-Python installation", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/themes/%s/styling.css", GEarth.theme)).toExternalForm()); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.setTitle("G-Python installation"); FlowPane fp = new FlowPane(); diff --git a/G-Earth/src/main/java/gearth/ui/info/InfoController.java b/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java similarity index 96% rename from G-Earth/src/main/java/gearth/ui/info/InfoController.java rename to G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java index 38965c8..dcefbc3 100644 --- a/G-Earth/src/main/java/gearth/ui/info/InfoController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java @@ -1,14 +1,12 @@ -package gearth.ui.info; +package gearth.ui.subforms.info; import gearth.GEarth; import javafx.event.ActionEvent; import javafx.scene.control.*; import gearth.ui.SubForm; -import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.Region; import javafx.scene.web.WebView; -import javafx.stage.Stage; /** * Created by Jonas on 06/04/18. diff --git a/G-Earth/src/main/java/gearth/ui/injection/InjectedPackets.java b/G-Earth/src/main/java/gearth/ui/subforms/injection/InjectedPackets.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/injection/InjectedPackets.java rename to G-Earth/src/main/java/gearth/ui/subforms/injection/InjectedPackets.java index 44208ef..45f8219 100644 --- a/G-Earth/src/main/java/gearth/ui/injection/InjectedPackets.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/injection/InjectedPackets.java @@ -1,4 +1,4 @@ -package gearth.ui.injection; +package gearth.ui.subforms.injection; import gearth.misc.StringifyAble; import gearth.protocol.HMessage; diff --git a/G-Earth/src/main/java/gearth/ui/injection/InjectionController.java b/G-Earth/src/main/java/gearth/ui/subforms/injection/InjectionController.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/injection/InjectionController.java rename to G-Earth/src/main/java/gearth/ui/subforms/injection/InjectionController.java index 8267791..3ad4317 100644 --- a/G-Earth/src/main/java/gearth/ui/injection/InjectionController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/injection/InjectionController.java @@ -1,4 +1,4 @@ -package gearth.ui.injection; +package gearth.ui.subforms.injection; import gearth.misc.Cacher; import gearth.services.packet_info.PacketInfoManager; @@ -8,8 +8,6 @@ import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.scene.control.*; import javafx.scene.input.MouseButton; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.paint.Paint; import javafx.scene.text.Text; @@ -20,7 +18,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import java.util.function.Predicate; import java.util.stream.Collectors; public class InjectionController extends SubForm { diff --git a/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/LoggerController.java similarity index 96% rename from G-Earth/src/main/java/gearth/ui/logger/LoggerController.java rename to G-Earth/src/main/java/gearth/ui/subforms/logger/LoggerController.java index 1eba104..4f8c581 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/LoggerController.java @@ -1,4 +1,4 @@ -package gearth.ui.logger; +package gearth.ui.subforms.logger; import gearth.protocol.connection.HState; import javafx.application.Platform; @@ -12,8 +12,8 @@ import javafx.scene.text.Text; import javafx.scene.text.TextFlow; import gearth.protocol.HMessage; import gearth.ui.SubForm; -import gearth.ui.logger.loggerdisplays.PacketLogger; -import gearth.ui.logger.loggerdisplays.PacketLoggerFactory; +import gearth.ui.subforms.logger.loggerdisplays.PacketLogger; +import gearth.ui.subforms.logger.loggerdisplays.PacketLoggerFactory; import java.util.Calendar; diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/LinuxTerminalLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/LinuxTerminalLogger.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/LinuxTerminalLogger.java rename to G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/LinuxTerminalLogger.java index 0b125a5..d6f7946 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/LinuxTerminalLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/LinuxTerminalLogger.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays; +package gearth.ui.subforms.logger.loggerdisplays; import gearth.protocol.HMessage; import gearth.protocol.HPacket; diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLogger.java similarity index 94% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLogger.java rename to G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLogger.java index a2e1770..195f844 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLogger.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays; +package gearth.ui.subforms.logger.loggerdisplays; import gearth.protocol.HConnection; import gearth.protocol.HMessage; diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java similarity index 96% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java rename to G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java index 82c8281..b4c93a9 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays; +package gearth.ui.subforms.logger.loggerdisplays; import gearth.GEarth; import gearth.extensions.InternalExtensionFormBuilder; diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/SimpleTerminalLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/SimpleTerminalLogger.java similarity index 97% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/SimpleTerminalLogger.java rename to G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/SimpleTerminalLogger.java index b8aaf4e..0489a01 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/SimpleTerminalLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/SimpleTerminalLogger.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays; +package gearth.ui.subforms.logger.loggerdisplays; import gearth.services.packet_info.PacketInfoManager; import gearth.protocol.HConnection; diff --git a/G-Earth/src/main/java/gearth/ui/scheduler/InteractableScheduleItem.java b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/InteractableScheduleItem.java similarity index 95% rename from G-Earth/src/main/java/gearth/ui/scheduler/InteractableScheduleItem.java rename to G-Earth/src/main/java/gearth/ui/subforms/scheduler/InteractableScheduleItem.java index 471fab2..7651cd6 100644 --- a/G-Earth/src/main/java/gearth/ui/scheduler/InteractableScheduleItem.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/InteractableScheduleItem.java @@ -1,17 +1,14 @@ -package gearth.ui.scheduler; +package gearth.ui.subforms.scheduler; import gearth.misc.StringifyAble; import gearth.misc.listenerpattern.Observable; import gearth.protocol.HMessage; -import gearth.protocol.HPacket; import gearth.services.scheduler.Interval; import gearth.services.scheduler.ScheduleItem; import gearth.services.scheduler.listeners.OnBeingUpdatedListener; import gearth.services.scheduler.listeners.OnDeleteListener; import gearth.services.scheduler.listeners.OnEditListener; import gearth.services.scheduler.listeners.OnUpdatedListener; -import javafx.beans.property.SimpleObjectProperty; -import javafx.beans.property.SimpleStringProperty; public class InteractableScheduleItem extends ScheduleItem implements StringifyAble { diff --git a/G-Earth/src/main/java/gearth/ui/scheduler/ScheduleItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/scheduler/ScheduleItemContainer.java rename to G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java index 8907793..d041313 100644 --- a/G-Earth/src/main/java/gearth/ui/scheduler/ScheduleItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java @@ -1,6 +1,5 @@ -package gearth.ui.scheduler; +package gearth.ui.subforms.scheduler; -import gearth.services.scheduler.ScheduleItem; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Label; diff --git a/G-Earth/src/main/java/gearth/ui/scheduler/SchedulerController.java b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/SchedulerController.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/scheduler/SchedulerController.java rename to G-Earth/src/main/java/gearth/ui/subforms/scheduler/SchedulerController.java index 2eef5a1..0f1ea75 100644 --- a/G-Earth/src/main/java/gearth/ui/scheduler/SchedulerController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/SchedulerController.java @@ -1,8 +1,7 @@ -package gearth.ui.scheduler; +package gearth.ui.subforms.scheduler; import com.tulskiy.keymaster.common.Provider; import gearth.services.scheduler.Interval; -import gearth.services.scheduler.ScheduleItem; import gearth.services.scheduler.Scheduler; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -17,9 +16,7 @@ import gearth.ui.SubForm; import javax.swing.*; import java.io.*; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; /** * Created by Jonas on 06/04/18. diff --git a/G-Earth/src/main/java/gearth/ui/tools/ToolsController.java b/G-Earth/src/main/java/gearth/ui/subforms/tools/ToolsController.java similarity index 98% rename from G-Earth/src/main/java/gearth/ui/tools/ToolsController.java rename to G-Earth/src/main/java/gearth/ui/subforms/tools/ToolsController.java index 701174c..bd27506 100644 --- a/G-Earth/src/main/java/gearth/ui/tools/ToolsController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/tools/ToolsController.java @@ -1,7 +1,6 @@ -package gearth.ui.tools; +package gearth.ui.subforms.tools; import gearth.services.packet_info.PacketInfoManager; -import gearth.protocol.HMessage; import javafx.event.ActionEvent; import javafx.scene.control.Button; import javafx.scene.control.TextArea; diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index c2709c0..1806086 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -34,6 +34,7 @@ public class TitleBarController { Parent parent = stage.getScene().getRoot(); VBox newParent = new VBox(root, parent); + newParent.setId("titlebar-main-container"); stage.getScene().setRoot(newParent); parent.getScene().setFill(Color.TRANSPARENT); diff --git a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml index 9f9f0d3..8976b77 100644 --- a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml +++ b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml @@ -7,31 +7,31 @@ - + - + - + - + - + - + - + - + - + diff --git a/G-Earth/src/main/resources/gearth/ui/connection/Connection.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/connection/Connection.fxml similarity index 99% rename from G-Earth/src/main/resources/gearth/ui/connection/Connection.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/connection/Connection.fxml index d01b5c4..923279c 100644 --- a/G-Earth/src/main/resources/gearth/ui/connection/Connection.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/connection/Connection.fxml @@ -5,7 +5,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/extensions/Extensions.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/Extensions.fxml similarity index 98% rename from G-Earth/src/main/resources/gearth/ui/extensions/Extensions.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/extensions/Extensions.fxml index c5539f5..0614878 100644 --- a/G-Earth/src/main/resources/gearth/ui/extensions/Extensions.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/Extensions.fxml @@ -4,7 +4,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/extensions/logger/ExtensionLogger.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml similarity index 86% rename from G-Earth/src/main/resources/gearth/ui/extensions/logger/ExtensionLogger.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml index 0fcd89f..f98429a 100644 --- a/G-Earth/src/main/resources/gearth/ui/extensions/logger/ExtensionLogger.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml @@ -3,7 +3,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/extensions/logger/logger.css b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css similarity index 100% rename from G-Earth/src/main/resources/gearth/ui/extensions/logger/logger.css rename to G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css diff --git a/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/extra/Extra.fxml similarity index 99% rename from G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/extra/Extra.fxml index 7368aba..f16dba0 100644 --- a/G-Earth/src/main/resources/gearth/ui/extra/Extra.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/extra/Extra.fxml @@ -4,7 +4,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/info/Info.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/info/Info.fxml similarity index 98% rename from G-Earth/src/main/resources/gearth/ui/info/Info.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/info/Info.fxml index e19c71d..12d7e97 100644 --- a/G-Earth/src/main/resources/gearth/ui/info/Info.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/info/Info.fxml @@ -5,7 +5,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/injection/Injection.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/injection/Injection.fxml similarity index 98% rename from G-Earth/src/main/resources/gearth/ui/injection/Injection.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/injection/Injection.fxml index 1f57489..d615c13 100644 --- a/G-Earth/src/main/resources/gearth/ui/injection/Injection.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/injection/Injection.fxml @@ -5,7 +5,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/logger/Logger.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/logger/Logger.fxml similarity index 98% rename from G-Earth/src/main/resources/gearth/ui/logger/Logger.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/logger/Logger.fxml index 67f8dc5..41988da 100644 --- a/G-Earth/src/main/resources/gearth/ui/logger/Logger.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/logger/Logger.fxml @@ -14,7 +14,7 @@ + fx:controller="gearth.ui.subforms.logger.LoggerController"> diff --git a/G-Earth/src/main/resources/gearth/ui/scheduler/Scheduler.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/scheduler/Scheduler.fxml similarity index 99% rename from G-Earth/src/main/resources/gearth/ui/scheduler/Scheduler.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/scheduler/Scheduler.fxml index bdbb415..50abd20 100644 --- a/G-Earth/src/main/resources/gearth/ui/scheduler/Scheduler.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/scheduler/Scheduler.fxml @@ -4,7 +4,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/tools/Tools.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/tools/Tools.fxml similarity index 99% rename from G-Earth/src/main/resources/gearth/ui/tools/Tools.fxml rename to G-Earth/src/main/resources/gearth/ui/subforms/tools/Tools.fxml index e876daa..55f0241 100644 --- a/G-Earth/src/main/resources/gearth/ui/tools/Tools.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/tools/Tools.fxml @@ -12,7 +12,7 @@ + fx:controller="gearth.ui.subforms.tools.ToolsController"> diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth/logo.ico b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logo.ico similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth/logo.ico rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logo.ico diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth/logo.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logo.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth/logo.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logo.png diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth/logoSmall.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logoSmall.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth/logoSmall.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth/logoSmall.png diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css similarity index 98% rename from G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 56493f5..bc70a61 100644 --- a/G-Earth/src/main/resources/gearth/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -1,4 +1,4 @@ -#main-window { +#titlebar-main-container { -fx-body-color : transparent; -fx-background-radius: 15; -fx-outer-border : #cecece; @@ -921,27 +921,27 @@ VBox > .split-menu-button.last > .arrow-button { } #close-button { - -fx-image: url("../../ui/titlebar/files/closeButton.png"); + -fx-image: url("../../titlebar/files/closeButton.png"); } #close-button:hover { - -fx-image: url("../../ui/titlebar/files/closeButtonHover.png"); + -fx-image: url("../../titlebar/files/closeButtonHover.png"); } #close-button:pressed { - -fx-image: url("../../ui/titlebar/files/closeButtonPressed.png"); + -fx-image: url("../../titlebar/files/closeButtonPressed.png"); } #minimize-button { - -fx-image: url("../../ui/titlebar/files/minimizeButton.png"); + -fx-image: url("../../titlebar/files/minimizeButton.png"); } #minimize-button:hover { - -fx-image: url("../../ui/titlebar/files/minimizeButtonHover.png"); + -fx-image: url("../../titlebar/files/minimizeButtonHover.png"); } #minimize-button:pressed { - -fx-image: url("../../ui/titlebar/files/minimizeButtonPressed.png"); + -fx-image: url("../../titlebar/files/minimizeButtonPressed.png"); } #main-tab-pane, #main-tab-pane > * { @@ -949,11 +949,11 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("./logoSmall.png"); + -fx-image: url("logoSmall.png"); } #theme-button { - -fx-image: url("./themeButton.png"); + -fx-image: url("themeButton.png"); } .corrupted-label { diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth/themeButton.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/themeButton.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth/themeButton.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth/themeButton.png diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logo.ico b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logo.ico similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logo.ico rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logo.ico diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logo.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logo.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logo.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logo.png diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logoSmall.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logoSmall.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/logoSmall.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/logoSmall.png diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css similarity index 98% rename from G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/styling.css rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index 5bb9e90..6d12ffe 100644 --- a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -1,4 +1,4 @@ -#main-window { +#titlebar-main-container { -fx-body-color : transparent; -fx-background-radius: 15; -fx-outer-border: #222222; @@ -960,31 +960,31 @@ VBox > .split-menu-button.last > .arrow-button { } #close-button { - -fx-image: url("../../ui/titlebar/files/closeButtonDark.png"); + -fx-image: url("../../titlebar/files/closeButtonDark.png"); -fx-padding: 10; -fx-background-color: firebrick; } #close-button:hover { - -fx-image: url("../../ui/titlebar/files/closeButtonHover.png"); + -fx-image: url("../../titlebar/files/closeButtonHover.png"); -fx-background-color: #e81123; } #close-button:pressed { - -fx-image: url("../../ui/titlebar/files/closeButtonPressed.png"); + -fx-image: url("../../titlebar/files/closeButtonPressed.png"); -fx-background-color: rgba(232, 17, 35, 0.8); } #minimize-button { - -fx-image: url("../../ui/titlebar/files/minimizeButtonDark.png"); + -fx-image: url("../../titlebar/files/minimizeButtonDark.png"); } #minimize-button:hover { - -fx-image: url("../../ui/titlebar/files/minimizeButtonDarkHover.png"); + -fx-image: url("../../titlebar/files/minimizeButtonDarkHover.png"); } #minimize-button:pressed { - -fx-image: url("../../ui/titlebar/files/minimizeButtonDarkPressed.png"); + -fx-image: url("../../titlebar/files/minimizeButtonDarkPressed.png"); } #main-tab-pane, #main-tab-pane > * { @@ -992,11 +992,11 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("./logoSmall.png"); + -fx-image: url("logoSmall.png"); } #theme-button { - -fx-image: url("./themeButton.png"); + -fx-image: url("themeButton.png"); } /* Error window */ diff --git a/G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/themeButton.png b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/themeButton.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/G-Earth_Dark/themeButton.png rename to G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/themeButton.png diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logo.ico b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/logo.ico similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/Tanji/logo.ico rename to G-Earth/src/main/resources/gearth/ui/themes/Tanji/logo.ico diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logo.png b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/logo.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/Tanji/logo.png rename to G-Earth/src/main/resources/gearth/ui/themes/Tanji/logo.png diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/logoSmall.png b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/logoSmall.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/Tanji/logoSmall.png rename to G-Earth/src/main/resources/gearth/ui/themes/Tanji/logoSmall.png diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css similarity index 98% rename from G-Earth/src/main/resources/gearth/themes/Tanji/styling.css rename to G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 386f8e5..26c68e8 100644 --- a/G-Earth/src/main/resources/gearth/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -1,4 +1,4 @@ -#main-window { +#titlebar-main-container { -fx-body-color : transparent; -fx-background-radius: 15; -fx-outer-border : #cecece; @@ -921,27 +921,27 @@ VBox > .split-menu-button.last > .arrow-button { } #close-button { - -fx-image: url("../../ui/titlebar/files/closeButton.png"); + -fx-image: url("../../titlebar/files/closeButton.png"); } #close-button:hover { - -fx-image: url("../../ui/titlebar/files/closeButtonHover.png"); + -fx-image: url("../../titlebar/files/closeButtonHover.png"); } #close-button:pressed { - -fx-image: url("../../ui/titlebar/files/closeButtonPressed.png"); + -fx-image: url("../../titlebar/files/closeButtonPressed.png"); } #minimize-button { - -fx-image: url("../../ui/titlebar/files/minimizeButton.png"); + -fx-image: url("../../titlebar/files/minimizeButton.png"); } #minimize-button:hover { - -fx-image: url("../../ui/titlebar/files/minimizeButtonHover.png"); + -fx-image: url("../../titlebar/files/minimizeButtonHover.png"); } #minimize-button:pressed { - -fx-image: url("../../ui/titlebar/files/minimizeButtonPressed.png"); + -fx-image: url("../../titlebar/files/minimizeButtonPressed.png"); } #main-tab-pane, #main-tab-pane > * { @@ -949,11 +949,11 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("./logoSmall.png"); + -fx-image: url("logoSmall.png"); } #theme-button { - -fx-image: url("./themeButton.png"); + -fx-image: url("themeButton.png"); } .corrupted-label { diff --git a/G-Earth/src/main/resources/gearth/themes/Tanji/themeButton.png b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/themeButton.png similarity index 100% rename from G-Earth/src/main/resources/gearth/themes/Tanji/themeButton.png rename to G-Earth/src/main/resources/gearth/ui/themes/Tanji/themeButton.png diff --git a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml index e0c1e34..76aafba 100644 --- a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml +++ b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml @@ -20,7 +20,7 @@ - + - + \ No newline at end of file From 767fb1ab9b2fb8c45b3e285579c8831c91d321ae Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 04:14:44 +0100 Subject: [PATCH 04/22] more refactoring --- G-Earth/src/main/java/gearth/GEarth.java | 39 ++++++---- .../extensions/logger/ExtensionLogger.java | 25 ++++--- .../java/gearth/ui/themes/AnimeTheme.java | 7 ++ .../main/java/gearth/ui/themes/DarkTheme.java | 23 ++++++ .../java/gearth/ui/themes/LightTheme.java | 23 ++++++ .../java/gearth/ui/themes/TanjiTheme.java | 23 ++++++ .../src/main/java/gearth/ui/themes/Theme.java | 6 +- .../java/gearth/ui/themes/ThemeFactory.java | 27 +++++++ .../ui/titlebar/DefaultTitleBarConfig.java | 56 +++++++++++++++ .../gearth/ui/titlebar/TitleBarConfig.java | 5 +- .../ui/titlebar/TitleBarController.java | 27 +++++-- .../gearth/ui/themes/G-Earth/styling.css | 2 +- .../gearth/ui/themes/G-Earth_Dark/styling.css | 2 +- .../gearth/ui/themes/Tanji/styling.css | 2 +- .../gearth/ui/titlebar/Titlebar.fxml | 71 ++++++++++++------- 15 files changed, 282 insertions(+), 56 deletions(-) create mode 100644 G-Earth/src/main/java/gearth/ui/themes/AnimeTheme.java create mode 100644 G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java create mode 100644 G-Earth/src/main/java/gearth/ui/themes/LightTheme.java create mode 100644 G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java create mode 100644 G-Earth/src/main/java/gearth/ui/themes/ThemeFactory.java create mode 100644 G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index fff1a18..22f3941 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -4,6 +4,8 @@ import gearth.misc.AdminValidator; import gearth.misc.Cacher; import gearth.misc.UpdateChecker; import gearth.ui.GEarthController; +import gearth.ui.themes.Theme; +import gearth.ui.themes.ThemeFactory; import gearth.ui.titlebar.TitleBarConfig; import gearth.ui.titlebar.TitleBarController; import javafx.application.Application; @@ -20,8 +22,7 @@ public class GEarth extends Application { public static Application main; public static String version = "1.5.1"; public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest"; - public static String theme = "G-Earth_Dark"; - public static String[] themes = new String[] {"G-Earth", "Tanji", "G-Earth_Dark"}; + public static Theme theme; private Stage stage; private TitleBarController titleBar; @@ -29,7 +30,10 @@ public class GEarth extends Application { static { if (Cacher.getCacheContents().has("theme")) { - theme = Cacher.getCacheContents().getString("theme"); + theme = ThemeFactory.themeForTitle(Cacher.getCacheContents().getString("theme")); + } + else { + theme = ThemeFactory.getDefaultTheme(); } } @@ -62,14 +66,19 @@ public class GEarth extends Application { } @Override - public void onSetTheme(String theme) { - setTheme(theme); + public void setTheme(Theme theme) { + setGearthTheme(theme); + } + + @Override + public Theme getCurrentTheme() { + return theme; } }); primaryStage.setResizable(false); primaryStage.sizeToScene(); - setTheme(theme); + setGearthTheme(theme); primaryStage.show(); primaryStage.setOnCloseRequest( event -> closeGEarth()); @@ -85,19 +94,23 @@ public class GEarth extends Application { System.exit(0); } - private void setTheme(String theme) { + private void setGearthTheme(Theme theme) { GEarth.theme = theme; + Theme defaultTheme = ThemeFactory.getDefaultTheme(); stage.getScene().getStylesheets().clear(); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme)).toExternalForm()); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm()); stage.getIcons().clear(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme)))); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); + stage.setTitle((theme.overridesTitle() ? theme.title() : defaultTheme.title()) + " " + GEarth.version); - stage.setTitle(theme.split("_")[0] + " " + GEarth.version); - titleBar.setTitle(stage.getTitle()); - - controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logo.png", theme)))); + controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream( + String.format( + "/gearth/ui/themes/%s/logo.png", + theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName() + ) + ))); controller.infoController.version.setText(stage.getTitle()); } diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java index 19bffe8..f2b5f90 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java @@ -1,6 +1,8 @@ package gearth.ui.subforms.extensions.logger; import gearth.GEarth; +import gearth.ui.titlebar.DefaultTitleBarConfig; +import gearth.ui.titlebar.TitleBarController; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; @@ -35,26 +37,31 @@ public class ExtensionLogger { stage = new Stage(); - stage.setTitle(String.format("%s | Extension Console", GEarth.theme)); + stage.setTitle("G-Earth | Extension Console"); stage.initModality(Modality.NONE); - stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); stage.setAlwaysOnTop(true); stage.setMinHeight(235); stage.setMinWidth(370); Scene scene = new Scene(root); - scene.getStylesheets().add(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)); - scene.getStylesheets().add("/gearth/ui/extensions/logger/logger.css"); + scene.getStylesheets().add("/gearth/ui/subforms/extensions/logger/logger.css"); ExtensionLoggerController controller = loader.getController(); controller.setStage(stage); stage.setScene(scene); - - // don't let the user close this window on their own - stage.setOnCloseRequest(windowEvent -> { - stage.hide(); - isVisible = false; + TitleBarController titleBar = TitleBarController.create(stage, new DefaultTitleBarConfig(stage) { + @Override + public void onCloseClicked() { + stage.hide(); + isVisible = false; + } }); + +// // don't let the user close this window on their own +// stage.setOnCloseRequest(windowEvent -> { +// stage.hide(); +// isVisible = false; +// }); } catch (IOException e) { e.printStackTrace(); } diff --git a/G-Earth/src/main/java/gearth/ui/themes/AnimeTheme.java b/G-Earth/src/main/java/gearth/ui/themes/AnimeTheme.java new file mode 100644 index 0000000..baf0a34 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/AnimeTheme.java @@ -0,0 +1,7 @@ +package gearth.ui.themes; + +public class AnimeTheme { + + // just kidding + +} diff --git a/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java b/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java new file mode 100644 index 0000000..25f90da --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java @@ -0,0 +1,23 @@ +package gearth.ui.themes; + +public class DarkTheme implements Theme { + @Override + public String title() { + return "G-Earth Dark"; + } + + @Override + public String internalName() { + return "G-Earth_Dark"; + } + + @Override + public boolean overridesLogo() { + return false; + } + + @Override + public boolean overridesTitle() { + return false; + } +} diff --git a/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java b/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java new file mode 100644 index 0000000..6e131fe --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java @@ -0,0 +1,23 @@ +package gearth.ui.themes; + +public class LightTheme implements Theme { + @Override + public String title() { + return "G-Earth"; + } + + @Override + public String internalName() { + return "G-Earth"; + } + + @Override + public boolean overridesLogo() { + return true; + } + + @Override + public boolean overridesTitle() { + return true; + } +} diff --git a/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java b/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java new file mode 100644 index 0000000..abf3078 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java @@ -0,0 +1,23 @@ +package gearth.ui.themes; + +public class TanjiTheme implements Theme { + @Override + public String title() { + return "Tanji"; + } + + @Override + public String internalName() { + return "Tanji"; + } + + @Override + public boolean overridesLogo() { + return false; + } + + @Override + public boolean overridesTitle() { + return false; + } +} diff --git a/G-Earth/src/main/java/gearth/ui/themes/Theme.java b/G-Earth/src/main/java/gearth/ui/themes/Theme.java index a2bae69..ee50c28 100644 --- a/G-Earth/src/main/java/gearth/ui/themes/Theme.java +++ b/G-Earth/src/main/java/gearth/ui/themes/Theme.java @@ -1,7 +1,11 @@ package gearth.ui.themes; -public class Theme { +public interface Theme { + String title(); + String internalName(); + boolean overridesLogo(); + boolean overridesTitle(); } diff --git a/G-Earth/src/main/java/gearth/ui/themes/ThemeFactory.java b/G-Earth/src/main/java/gearth/ui/themes/ThemeFactory.java new file mode 100644 index 0000000..915b27d --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/themes/ThemeFactory.java @@ -0,0 +1,27 @@ +package gearth.ui.themes; + +import java.util.Arrays; +import java.util.List; + +public class ThemeFactory { + + private static List themes = Arrays.asList( + new LightTheme(), + new TanjiTheme(), + new DarkTheme() + ); + + public static Theme getDefaultTheme() { + return themes.get(0); + } + + public static List allThemes() { + return themes; + } + + // returns default theme if not found + public static Theme themeForTitle(String title) { + return allThemes().stream().filter(theme -> theme.title().equals(title)).findFirst().orElse(getDefaultTheme()); + } + +} diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java new file mode 100644 index 0000000..2fed191 --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java @@ -0,0 +1,56 @@ +package gearth.ui.titlebar; + +import gearth.GEarth; +import gearth.ui.themes.Theme; +import gearth.ui.themes.ThemeFactory; +import javafx.scene.image.Image; +import javafx.stage.Stage; + +// a typical config to be used in all windows that is not the g-earth main window +public class DefaultTitleBarConfig implements TitleBarConfig { + + protected Stage stage; + private String currentStylesheet = null; + private Theme currentTheme; + + + public DefaultTitleBarConfig(Stage stage) { + this.stage = stage; + currentTheme = ThemeFactory.getDefaultTheme(); + setTheme(currentTheme); + } + + @Override + public boolean displayThemePicker() { + return false; + } + + @Override + public void onCloseClicked() { + + } + + @Override + public void onMinimizeClicked() { + stage.setIconified(true); + } + + @Override + public void setTheme(Theme theme) { + currentTheme = theme; + Theme defaultTheme = ThemeFactory.getDefaultTheme(); + if (currentStylesheet != null) { + stage.getScene().getStylesheets().remove(currentStylesheet); + } + currentStylesheet = GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm(); + stage.getScene().getStylesheets().add(currentStylesheet); + + stage.getIcons().clear(); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); + } + + @Override + public Theme getCurrentTheme() { + return currentTheme; + } +} diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java index 57537d0..6186284 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java @@ -1,10 +1,13 @@ package gearth.ui.titlebar; +import gearth.ui.themes.Theme; + public interface TitleBarConfig { boolean displayThemePicker(); void onCloseClicked(); void onMinimizeClicked(); - void onSetTheme(String theme); + void setTheme(Theme theme); + Theme getCurrentTheme(); } diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index 1806086..cd654ae 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -1,10 +1,15 @@ package gearth.ui.titlebar; import gearth.GEarth; -import javafx.application.Platform; +import gearth.ui.themes.Theme; +import gearth.ui.themes.ThemeFactory; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; @@ -13,12 +18,12 @@ import javafx.stage.Stage; import javafx.stage.StageStyle; import java.io.IOException; -import java.util.Arrays; public class TitleBarController { public Label titleLabel; public Pane titleBar; + public ImageView titleIcon; private Stage stage; private TitleBarConfig config; @@ -38,9 +43,21 @@ public class TitleBarController { stage.getScene().setRoot(newParent); parent.getScene().setFill(Color.TRANSPARENT); + stage.titleProperty().addListener((i) -> controller.setTitle(stage.getTitle())); + controller.setTitle(stage.getTitle()); + + stage.getIcons().addListener((InvalidationListener) observable -> controller.updateIcon()); + controller.updateIcon(); + return controller; } + public void updateIcon() { + titleIcon.setImage(stage.getIcons().size() > 0 ? stage.getIcons().get(0) : + new Image(GEarth.class.getResourceAsStream( + String.format("/gearth/ui/themes/%s/logoSmall.png", ThemeFactory.getDefaultTheme().internalName())))); + } + public void setTitle(String title) { titleLabel.setText(title); } @@ -51,7 +68,7 @@ public class TitleBarController { } public void handleMinimizeAction(MouseEvent event) { - stage.setIconified(true); + config.onMinimizeClicked(); } private double xOffset, yOffset; @@ -67,8 +84,8 @@ public class TitleBarController { } public void toggleTheme(MouseEvent event) { - int themeIndex = Arrays.asList(GEarth.themes).indexOf(GEarth.theme); - config.onSetTheme(GEarth.themes[(themeIndex + 1) % GEarth.themes.length]); + int themeIndex = ThemeFactory.allThemes().indexOf(config.getCurrentTheme()); + config.setTheme(ThemeFactory.allThemes().get((themeIndex + 1) % ThemeFactory.allThemes().size())); } } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index bc70a61..03e337a 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -949,7 +949,7 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("logoSmall.png"); + /*-fx-image: url("logoSmall.png");*/ } #theme-button { diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index 6d12ffe..9f78ffa 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -992,7 +992,7 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("logoSmall.png"); + /*-fx-image: url("logoSmall.png");*/ } #theme-button { diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 26c68e8..9ae3974 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -949,7 +949,7 @@ VBox > .split-menu-button.last > .arrow-button { } #icon { - -fx-image: url("logoSmall.png"); + /*-fx-image: url("logoSmall.png");*/ } #theme-button { diff --git a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml index 76aafba..cdf7ae1 100644 --- a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml +++ b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml @@ -1,35 +1,58 @@ - + + - + - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + From f4ee6f00c83239cba6fcaaf6df19a0f3bc0de817 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 05:34:37 +0100 Subject: [PATCH 05/22] stuff --- G-Earth/src/main/java/gearth/GEarth.java | 5 +-- .../main/java/gearth/misc/AdminValidator.java | 37 ++++++++++++++++--- .../GExtensionStoreLauncher.java | 4 +- .../uilogger/UiLoggerLauncher.java | 6 +-- .../extensions/logger/ExtensionLogger.java | 2 +- .../ui/titlebar/DefaultTitleBarConfig.java | 2 +- .../gearth/ui/themes/G-Earth/styling.css | 4 +- .../gearth/ui/themes/Tanji/styling.css | 4 +- 8 files changed, 45 insertions(+), 19 deletions(-) diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 22f3941..8b9537a 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -19,13 +19,12 @@ import javafx.stage.StageStyle; public class GEarth extends Application { - public static Application main; + public static GEarth main; public static String version = "1.5.1"; public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest"; public static Theme theme; private Stage stage; - private TitleBarController titleBar; private GEarthController controller; static { @@ -49,7 +48,7 @@ public class GEarth extends Application { stage.initStyle(StageStyle.TRANSPARENT); primaryStage.setScene(new Scene(root)); - titleBar = TitleBarController.create(primaryStage, new TitleBarConfig() { + TitleBarController.create(primaryStage, new TitleBarConfig() { @Override public boolean displayThemePicker() { return true; diff --git a/G-Earth/src/main/java/gearth/misc/AdminValidator.java b/G-Earth/src/main/java/gearth/misc/AdminValidator.java index a19e6d7..9f9eb74 100644 --- a/G-Earth/src/main/java/gearth/misc/AdminValidator.java +++ b/G-Earth/src/main/java/gearth/misc/AdminValidator.java @@ -1,13 +1,18 @@ package gearth.misc; import gearth.GEarth; +import gearth.ui.titlebar.DefaultTitleBarConfig; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; import javafx.scene.image.Image; import javafx.scene.layout.Region; import javafx.stage.Stage; +import java.io.IOException; import java.io.PrintStream; import java.util.prefs.Preferences; @@ -48,11 +53,33 @@ public class AdminValidator { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK); Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); - alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); - alert.setResizable(false); - alert.show(); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream("/gearth/ui/themes/G-Earth/logoSmall.png"))); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme.internalName())).toExternalForm()); +// try { +// TitleBarController.create(stage, new DefaultTitleBarConfig(stage)); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// alert.getDialogPane().setMaxHeight(-1); +// alert.getDialogPane().setMinHeight(200); +// alert.getDialogPane() +// +// +// boolean[] once = new boolean[]{false}; +// stage.heightProperty().addListener(observable -> { +// if (!once[0]) { +// once[0] = true; +// stage.setMinHeight(alert.getDialogPane().getHeight() + 25); +// stage.setHeight(alert.getDialogPane().getHeight() + 25); +// stage.setMaxHeight(alert.getDialogPane().getHeight() + 25); +// } +// +// }); + +// stage.setHeight(stage.getHeight() + 25); +// stage.setResizable(false); +// stage.sizeToScene();x + stage.show(); }); } diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java index 42eda93..ed136f8 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java @@ -26,8 +26,8 @@ public class GExtensionStoreLauncher extends InternalExtensionFormLauncher { FXMLLoader loader = new FXMLLoader(UiLogger.class.getResource("UiLogger.fxml")); Parent root = loader.load(); - stage.setTitle(String.format("%s | Packet Logger", GEarth.theme)); + stage.setTitle("G-Earth | Packet Logger"); stage.initModality(Modality.NONE); - stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); + stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/ui/themes/G-Earth/logoSmall.png"))); Scene scene = new Scene(root); - scene.getStylesheets().add(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)); + scene.getStylesheets().add("/gearth/ui/themes/G-Earth/styling.css"); scene.getStylesheets().add("/gearth/services/internal_extensions/uilogger/logger.css"); UiLoggerController controller = loader.getController(); diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java index f2b5f90..e548b17 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java @@ -49,7 +49,7 @@ public class ExtensionLogger { controller.setStage(stage); stage.setScene(scene); - TitleBarController titleBar = TitleBarController.create(stage, new DefaultTitleBarConfig(stage) { + TitleBarController.create(stage, new DefaultTitleBarConfig(stage) { @Override public void onCloseClicked() { stage.hide(); diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java index 2fed191..60703c0 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java @@ -27,7 +27,7 @@ public class DefaultTitleBarConfig implements TitleBarConfig { @Override public void onCloseClicked() { - + stage.close(); } @Override diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 03e337a..247d66b 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -57,7 +57,7 @@ .info > .label, .warning > .label, .danger > .label { - -fx-text-fill: white; + -fx-text-fill: black; } .action-btn { @@ -689,7 +689,7 @@ VBox > .split-menu-button.last > .arrow-button { } .titled-pane.primary { - -fx-text-fill: white; + -fx-text-fill: black; } .titled-pane.primary > .title { diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 9ae3974..96db9ba 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -59,7 +59,7 @@ .info > .label, .warning > .label, .danger > .label { - -fx-text-fill: white; + -fx-text-fill: black; } .action-btn { @@ -691,7 +691,7 @@ VBox > .split-menu-button.last > .arrow-button { } .titled-pane.primary { - -fx-text-fill: white; + -fx-text-fill: black; } .titled-pane.primary > .title { From 08f157d2c43ed253eca5db65f62bb641bfdcae22 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 13 Feb 2022 06:10:44 +0100 Subject: [PATCH 06/22] stuff --- .../gearth/ui/subforms/extensions/ExtensionItemContainer.java | 3 +++ .../resources/gearth/ui/subforms/extensions/logger/logger.css | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java index 8413663..62b2522 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java @@ -142,6 +142,9 @@ public class ExtensionItemContainer extends GridPane { parent.getChildren().add(this); + getStyleClass().clear(); + getStyleClass().add("connectedExtension"); + if (item.extensionType() == ExtensionType.INTERNAL) { getStyleClass().clear(); getStyleClass().add("internalExtension"); diff --git a/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css index 6748947..37f68e3 100644 --- a/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css +++ b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/logger.css @@ -64,7 +64,7 @@ } .label { - -fx-text-fill: #000000 !important; + /*-fx-text-fill: #000000 !important;*/ } .scroll-bar:vertical { From e95fd7b9e23e83b65877ebf6859521f044630835 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Tue, 15 Feb 2022 04:13:10 +0100 Subject: [PATCH 07/22] style stuff --- G-Earth/src/main/java/gearth/GEarth.java | 49 ++++++++--- .../main/java/gearth/misc/AdminValidator.java | 43 ++-------- .../uilogger/UiLoggerLauncher.java | 9 +++ .../main/java/gearth/ui/GEarthController.java | 1 + .../extensions/logger/ExtensionLogger.java | 3 +- .../ui/subforms/info/InfoController.java | 23 ++++-- .../ui/titlebar/DefaultTitleBarConfig.java | 40 ++++++--- .../titlebar/GEarthThemedTitleBarConfig.java | 21 +++++ .../gearth/ui/titlebar/TitleBarConfig.java | 2 + .../ui/titlebar/TitleBarController.java | 81 +++++++++++++++---- .../src/main/resources/gearth/ui/G-Earth.fxml | 4 +- .../gearth/ui/titlebar/Titlebar.fxml | 6 +- 12 files changed, 195 insertions(+), 87 deletions(-) create mode 100644 G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 8b9537a..2327186 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -3,7 +3,9 @@ package gearth; import gearth.misc.AdminValidator; import gearth.misc.Cacher; import gearth.misc.UpdateChecker; +import gearth.misc.listenerpattern.Observable; import gearth.ui.GEarthController; +import gearth.ui.subforms.logger.loggerdisplays.PacketLogger; import gearth.ui.themes.Theme; import gearth.ui.themes.ThemeFactory; import gearth.ui.titlebar.TitleBarConfig; @@ -17,12 +19,15 @@ import javafx.scene.image.Image; import javafx.stage.Stage; import javafx.stage.StageStyle; +import java.util.function.Consumer; + public class GEarth extends Application { public static GEarth main; public static String version = "1.5.1"; public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest"; public static Theme theme; + public static Observable> themeObservable = new Observable<>(); private Stage stage; private GEarthController controller; @@ -54,6 +59,16 @@ public class GEarth extends Application { return true; } + @Override + public boolean displayMinimizeButton() { + return true; + } + +// @Override +// public boolean allowResizing() { +// return false; +// } + @Override public void onCloseClicked() { closeGEarth(); @@ -80,7 +95,7 @@ public class GEarth extends Application { setGearthTheme(theme); primaryStage.show(); - primaryStage.setOnCloseRequest( event -> closeGEarth()); + primaryStage.setOnCloseRequest(event -> closeGEarth()); AdminValidator.validate(); UpdateChecker.checkForUpdates(); @@ -94,23 +109,27 @@ public class GEarth extends Application { } private void setGearthTheme(Theme theme) { + themeObservable.fireEvent(t -> t.accept(theme)); GEarth.theme = theme; Theme defaultTheme = ThemeFactory.getDefaultTheme(); - stage.getScene().getStylesheets().clear(); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm()); +// Platform.runLater(() -> { + stage.getScene().getStylesheets().clear(); + stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm()); - stage.getIcons().clear(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); - stage.setTitle((theme.overridesTitle() ? theme.title() : defaultTheme.title()) + " " + GEarth.version); + stage.getIcons().clear(); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); + stage.setTitle((theme.overridesTitle() ? theme.title() : defaultTheme.title()) + " " + GEarth.version); + + controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream( + String.format( + "/gearth/ui/themes/%s/logo.png", + theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName() + ) + ))); + controller.infoController.version.setText(stage.getTitle()); +// }); - controller.infoController.img_logo.setImage(new Image(GEarth.class.getResourceAsStream( - String.format( - "/gearth/ui/themes/%s/logo.png", - theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName() - ) - ))); - controller.infoController.version.setText(stage.getTitle()); } public static String[] args; @@ -139,4 +158,8 @@ public class GEarth extends Application { } return null; } + + public static Observable> getThemeObservable() { + return themeObservable; + } } diff --git a/G-Earth/src/main/java/gearth/misc/AdminValidator.java b/G-Earth/src/main/java/gearth/misc/AdminValidator.java index 9f9eb74..7a96735 100644 --- a/G-Earth/src/main/java/gearth/misc/AdminValidator.java +++ b/G-Earth/src/main/java/gearth/misc/AdminValidator.java @@ -1,16 +1,11 @@ package gearth.misc; -import gearth.GEarth; -import gearth.ui.titlebar.DefaultTitleBarConfig; import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; -import javafx.beans.InvalidationListener; -import javafx.beans.Observable; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; -import javafx.scene.image.Image; +import javafx.scene.control.Label; import javafx.scene.layout.Region; -import javafx.stage.Stage; import java.io.IOException; import java.io.PrintStream; @@ -51,35 +46,13 @@ public class AdminValidator { new Thread(() -> { if (!AdminValidator.isAdmin()) { Platform.runLater(() -> { - Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream("/gearth/ui/themes/G-Earth/logoSmall.png"))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme.internalName())).toExternalForm()); -// try { -// TitleBarController.create(stage, new DefaultTitleBarConfig(stage)); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// alert.getDialogPane().setMaxHeight(-1); -// alert.getDialogPane().setMinHeight(200); -// alert.getDialogPane() -// -// -// boolean[] once = new boolean[]{false}; -// stage.heightProperty().addListener(observable -> { -// if (!once[0]) { -// once[0] = true; -// stage.setMinHeight(alert.getDialogPane().getHeight() + 25); -// stage.setHeight(alert.getDialogPane().getHeight() + 25); -// stage.setMaxHeight(alert.getDialogPane().getHeight() + 25); -// } -// -// }); - -// stage.setHeight(stage.getHeight() + 25); -// stage.setResizable(false); -// stage.sizeToScene();x - stage.show(); + Alert alert = new Alert(Alert.AlertType.WARNING, "", ButtonType.OK); + alert.getDialogPane().setContent(new Label("G-Earth needs admin privileges in order to work on Flash,\nplease restart G-Earth with admin permissions unless\nyou're using Unity")); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); } diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java index bf3f0e5..0048ce2 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java @@ -2,6 +2,8 @@ package gearth.services.internal_extensions.uilogger; import gearth.GEarth; import gearth.extensions.InternalExtensionFormLauncher; +import gearth.ui.titlebar.DefaultTitleBarConfig; +import gearth.ui.titlebar.TitleBarController; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; @@ -30,6 +32,13 @@ public class UiLoggerLauncher extends InternalExtensionFormLauncher { controller.setStage(stage); stage.setScene(scene); +// TitleBarController.create(stage, new DefaultTitleBarConfig(stage) { +// @Override +// public void onCloseClicked() { +// stage.hide(); +//// uiLogger.onHide(); +// } +// }); return uiLogger; } } diff --git a/G-Earth/src/main/java/gearth/ui/GEarthController.java b/G-Earth/src/main/java/gearth/ui/GEarthController.java index a7725a1..557295b 100644 --- a/G-Earth/src/main/java/gearth/ui/GEarthController.java +++ b/G-Earth/src/main/java/gearth/ui/GEarthController.java @@ -4,6 +4,7 @@ import gearth.protocol.connection.proxy.ProxyProviderFactory; import gearth.protocol.connection.proxy.SocksConfiguration; import gearth.ui.subforms.logger.loggerdisplays.PacketLoggerFactory; import javafx.scene.control.*; +import javafx.scene.input.MouseEvent; import javafx.stage.Stage; import gearth.protocol.HConnection; import gearth.ui.subforms.connection.ConnectionController; diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java index e548b17..bba6600 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLogger.java @@ -2,6 +2,7 @@ package gearth.ui.subforms.extensions.logger; import gearth.GEarth; import gearth.ui.titlebar.DefaultTitleBarConfig; +import gearth.ui.titlebar.GEarthThemedTitleBarConfig; import gearth.ui.titlebar.TitleBarController; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; @@ -49,7 +50,7 @@ public class ExtensionLogger { controller.setStage(stage); stage.setScene(scene); - TitleBarController.create(stage, new DefaultTitleBarConfig(stage) { + TitleBarController.create(stage, new GEarthThemedTitleBarConfig(stage) { @Override public void onCloseClicked() { stage.hide(); diff --git a/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java b/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java index dcefbc3..81e8e07 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/info/InfoController.java @@ -1,13 +1,17 @@ package gearth.ui.subforms.info; import gearth.GEarth; +import gearth.ui.titlebar.TitleBarController; import javafx.event.ActionEvent; import javafx.scene.control.*; import gearth.ui.SubForm; import javafx.scene.image.ImageView; import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; import javafx.scene.web.WebView; +import java.io.IOException; + /** * Created by Jonas on 06/04/18. */ @@ -53,15 +57,20 @@ public class InfoController extends SubForm { Alert alert = new Alert(Alert.AlertType.INFORMATION, "Donate Bitcoins", ButtonType.OK); alert.setHeaderText("Donate Bitcoins"); - WebView webView = new WebView(); - webView.getEngine().loadContent("Bitcoin public address:

" + - "" + - ""); - webView.setPrefSize(200, 100); + VBox test = new VBox(); + test.getChildren().add(new Label("Bitcoin public address:")); + TextArea pubText = new TextArea(pubkey); + pubText.setPrefHeight(28); + pubText.setMaxWidth(250); + test.getChildren().add(pubText); alert.setResizable(false); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); - alert.getDialogPane().setContent(webView); - alert.show(); + alert.getDialogPane().setContent(test); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } } } diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java index 60703c0..ff91776 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/DefaultTitleBarConfig.java @@ -3,6 +3,7 @@ package gearth.ui.titlebar; import gearth.GEarth; import gearth.ui.themes.Theme; import gearth.ui.themes.ThemeFactory; +import javafx.application.Platform; import javafx.scene.image.Image; import javafx.stage.Stage; @@ -15,16 +16,30 @@ public class DefaultTitleBarConfig implements TitleBarConfig { public DefaultTitleBarConfig(Stage stage) { + this(stage, ThemeFactory.getDefaultTheme()); + } + + public DefaultTitleBarConfig(Stage stage, Theme theme) { this.stage = stage; - currentTheme = ThemeFactory.getDefaultTheme(); - setTheme(currentTheme); + currentTheme = theme; + setTheme(theme); } @Override public boolean displayThemePicker() { - return false; + return true; } + @Override + public boolean displayMinimizeButton() { + return true; + } + +// @Override +// public boolean allowResizing() { +// return false; +// } + @Override public void onCloseClicked() { stage.close(); @@ -38,15 +53,18 @@ public class DefaultTitleBarConfig implements TitleBarConfig { @Override public void setTheme(Theme theme) { currentTheme = theme; - Theme defaultTheme = ThemeFactory.getDefaultTheme(); - if (currentStylesheet != null) { - stage.getScene().getStylesheets().remove(currentStylesheet); - } - currentStylesheet = GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm(); - stage.getScene().getStylesheets().add(currentStylesheet); + Platform.runLater(() -> { + Theme defaultTheme = ThemeFactory.getDefaultTheme(); + if (currentStylesheet != null) { + stage.getScene().getStylesheets().remove(currentStylesheet); + } + currentStylesheet = GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", theme.internalName())).toExternalForm(); + stage.getScene().getStylesheets().add(currentStylesheet); - stage.getIcons().clear(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); + stage.getIcons().clear(); + stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", theme.overridesLogo() ? theme.internalName() : defaultTheme.internalName())))); + + }); } @Override diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java new file mode 100644 index 0000000..ffa2d8e --- /dev/null +++ b/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java @@ -0,0 +1,21 @@ +package gearth.ui.titlebar; + +import gearth.GEarth; +import gearth.ui.themes.Theme; +import javafx.stage.Stage; + +import java.util.function.Consumer; + +public class GEarthThemedTitleBarConfig extends DefaultTitleBarConfig { + + public GEarthThemedTitleBarConfig(Stage stage) { + super(stage, GEarth.theme); + GEarth.themeObservable.addListener(this::setTheme); + } + + @Override + public boolean displayThemePicker() { + return false; + } + +} diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java index 6186284..a83eaa9 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarConfig.java @@ -5,6 +5,8 @@ import gearth.ui.themes.Theme; public interface TitleBarConfig { boolean displayThemePicker(); + boolean displayMinimizeButton(); +// boolean allowResizing(); void onCloseClicked(); void onMinimizeClicked(); diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index cd654ae..9553f58 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -1,16 +1,20 @@ package gearth.ui.titlebar; import gearth.GEarth; -import gearth.ui.themes.Theme; import gearth.ui.themes.ThemeFactory; +import javafx.application.Platform; import javafx.beans.InvalidationListener; import javafx.beans.Observable; import javafx.fxml.FXMLLoader; +import javafx.scene.Cursor; import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Alert; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; +import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; @@ -24,24 +28,54 @@ public class TitleBarController { public Label titleLabel; public Pane titleBar; public ImageView titleIcon; + public ImageView themeBtn; + public ImageView minimizeBtn; private Stage stage; private TitleBarConfig config; public static TitleBarController create(Stage stage, TitleBarConfig config) throws IOException { FXMLLoader loader = new FXMLLoader(TitleBarController.class.getResource("Titlebar.fxml")); - Parent root = loader.load(); + Parent titleBar = loader.load(); + TitleBarController controller = initNewController(loader, stage, config); + + VBox newParent = new VBox(titleBar, stage.getScene().getRoot()); + newParent.setId("titlebar-main-container"); + stage.getScene().setRoot(newParent); + + return controller; + } + + public static TitleBarController create(Alert alert) throws IOException { + + FXMLLoader loader = new FXMLLoader(TitleBarController.class.getResource("Titlebar.fxml")); + Parent titleBar = loader.load(); + Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); + + TitleBarConfig config = new GEarthThemedTitleBarConfig(stage) { + @Override + public boolean displayMinimizeButton() { + return false; + } + }; + TitleBarController controller = initNewController(loader, stage, config); + + Parent parent = alert.getDialogPane().getScene().getRoot(); + VBox newParent = new VBox(titleBar, parent); + newParent.setId("titlebar-main-container"); + stage.setScene(new Scene(newParent)); + stage.getScene().setFill(Color.TRANSPARENT); + + return controller; + } + + private static TitleBarController initNewController(FXMLLoader loader, Stage stage, TitleBarConfig config) throws IOException { TitleBarController controller = loader.getController(); + controller.stage = stage; controller.config = config; stage.initStyle(StageStyle.TRANSPARENT); - - Parent parent = stage.getScene().getRoot(); - - VBox newParent = new VBox(root, parent); - newParent.setId("titlebar-main-container"); - stage.getScene().setRoot(newParent); - parent.getScene().setFill(Color.TRANSPARENT); + stage.getScene().setFill(Color.TRANSPARENT); stage.titleProperty().addListener((i) -> controller.setTitle(stage.getTitle())); controller.setTitle(stage.getTitle()); @@ -49,17 +83,23 @@ public class TitleBarController { stage.getIcons().addListener((InvalidationListener) observable -> controller.updateIcon()); controller.updateIcon(); + Platform.runLater(() -> { + controller.themeBtn.setVisible(config.displayThemePicker()); + if (!config.displayMinimizeButton()) { + ((GridPane) controller.minimizeBtn.getParent()).getChildren().remove(controller.minimizeBtn); + } + }); return controller; } public void updateIcon() { - titleIcon.setImage(stage.getIcons().size() > 0 ? stage.getIcons().get(0) : + Platform.runLater(() -> titleIcon.setImage(stage.getIcons().size() > 0 ? stage.getIcons().get(0) : new Image(GEarth.class.getResourceAsStream( - String.format("/gearth/ui/themes/%s/logoSmall.png", ThemeFactory.getDefaultTheme().internalName())))); + String.format("/gearth/ui/themes/%s/logoSmall.png", ThemeFactory.getDefaultTheme().internalName()))))); } public void setTitle(String title) { - titleLabel.setText(title); + Platform.runLater(() -> titleLabel.setText(title)); } @@ -72,15 +112,23 @@ public class TitleBarController { } private double xOffset, yOffset; + private boolean isMoving = false; public void handleClickAction(MouseEvent event) { xOffset = event.getSceneX(); yOffset = event.getSceneY(); + isMoving = true; } public void handleMovementAction(MouseEvent event) { - stage.setX(event.getScreenX() - xOffset); - stage.setY(event.getScreenY() - yOffset); + if (isMoving) { + stage.setX(event.getScreenX() - xOffset); + stage.setY(event.getScreenY() - yOffset); + } + } + + public void handleClickReleaseAction(MouseEvent mouseEvent) { + isMoving = false; } public void toggleTheme(MouseEvent event) { @@ -88,4 +136,9 @@ public class TitleBarController { config.setTheme(ThemeFactory.allThemes().get((themeIndex + 1) % ThemeFactory.allThemes().size())); } + public void showAlert() { + stage.show(); + Platform.runLater(() -> stage.sizeToScene()); + } + } diff --git a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml index 8976b77..549ec24 100644 --- a/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml +++ b/G-Earth/src/main/resources/gearth/ui/G-Earth.fxml @@ -1,13 +1,11 @@ - - - + diff --git a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml index cdf7ae1..d5c4bf6 100644 --- a/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml +++ b/G-Earth/src/main/resources/gearth/ui/titlebar/Titlebar.fxml @@ -15,7 +15,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -47,7 +47,7 @@ - + From a81c68718a5e3fae34b4d1f0cd2a97411e66efcb Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Tue, 15 Feb 2022 04:14:26 +0100 Subject: [PATCH 08/22] delete old code --- .../blockreplacepackets/blockreplace.fxml | 139 ------------------ .../PacketInfoExplorer.fxml | 116 --------------- 2 files changed, 255 deletions(-) delete mode 100644 G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml delete mode 100644 G-Earth/src/main/resources/gearth/services/internal_extensions/packetinfoexplorer/PacketInfoExplorer.fxml diff --git a/G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml b/G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml deleted file mode 100644 index 0e135cf..0000000 --- a/G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/G-Earth/src/main/resources/gearth/services/internal_extensions/packetinfoexplorer/PacketInfoExplorer.fxml b/G-Earth/src/main/resources/gearth/services/internal_extensions/packetinfoexplorer/PacketInfoExplorer.fxml deleted file mode 100644 index 966234a..0000000 --- a/G-Earth/src/main/resources/gearth/services/internal_extensions/packetinfoexplorer/PacketInfoExplorer.fxml +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 8dcd84f1790412d49d47e84065a1b7dff744800b Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Tue, 15 Feb 2022 04:15:38 +0100 Subject: [PATCH 09/22] packetlogger no longer open by default --- .../services/internal_extensions/uilogger/UiLogger.fxml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml b/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml index cb202bf..405c104 100644 --- a/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml +++ b/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml @@ -13,7 +13,7 @@ - + @@ -26,7 +26,7 @@ - + From d5a60f9fb97cbb8edc521aabe8d5d433b2dc11fa Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 00:59:49 +0100 Subject: [PATCH 10/22] styling scheduler, extensionconsole --- .../extensions/ExtensionItemContainer.java | 8 ++++---- .../logger/ExtensionLoggerController.java | 8 +++++--- .../subforms/scheduler/ScheduleItemContainer.java | 14 ++++++++++++-- .../extensions/logger/ExtensionLogger.fxml | 2 +- .../resources/gearth/ui/themes/G-Earth/styling.css | 12 +++++++++--- .../gearth/ui/themes/G-Earth_Dark/styling.css | 11 ++++++++--- .../resources/gearth/ui/themes/Tanji/styling.css | 11 ++++++++--- 7 files changed, 47 insertions(+), 19 deletions(-) diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java index 62b2522..de1a9fa 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java @@ -143,11 +143,11 @@ public class ExtensionItemContainer extends GridPane { parent.getChildren().add(this); getStyleClass().clear(); - getStyleClass().add("connectedExtension"); + getStyleClass().add("tableRowActive"); if (item.extensionType() == ExtensionType.INTERNAL) { getStyleClass().clear(); - getStyleClass().add("internalExtension"); + getStyleClass().add("tableRowBlue"); } @@ -180,7 +180,7 @@ public class ExtensionItemContainer extends GridPane { item.getDeletedObservable().addListener(() -> Platform.runLater(() -> { if (item.isInstalledExtension()) { getStyleClass().clear(); - getStyleClass().add("disconnectedExtension"); + getStyleClass().add("tableRowInactive"); getChildren().remove(buttonsBox); add(additionalButtonBox, 4, 0); reloadButton.setVisible(true); @@ -196,7 +196,7 @@ public class ExtensionItemContainer extends GridPane { initExtension(); getStyleClass().clear(); - getStyleClass().add("connectedExtension"); + getStyleClass().add("tableRowActive"); getChildren().remove(additionalButtonBox); if (buttonsBox != null) { add(buttonsBox, 4, 0); diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java index 9b00886..bafc3a8 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/logger/ExtensionLoggerController.java @@ -24,12 +24,14 @@ public class ExtensionLoggerController implements Initializable { @Override public void initialize(URL arg0, ResourceBundle arg1) { area = new StyleClassedTextArea(); - area.getStyleClass().add("white"); + area.getStyleClass().add("themed-background"); area.setWrapText(true); area.setEditable(false); VirtualizedScrollPane vsPane = new VirtualizedScrollPane<>(area); borderPane.setCenter(vsPane); + vsPane.getStyleClass().add("themed-background"); + borderPane.getStyleClass().add("themed-background"); synchronized (appendOnLoad) { initialized = true; @@ -73,7 +75,7 @@ public class ExtensionLoggerController implements Initializable { text = s.substring(s.indexOf("]") + 1); } else { - classname = "black"; + classname = "label"; text = s; } @@ -81,7 +83,7 @@ public class ExtensionLoggerController implements Initializable { int index = text.indexOf(" --> ") + 5; String extensionAnnouncement = text.substring(0, index); text = text.substring(index); - elements.add(new Element(extensionAnnouncement, "black")); + elements.add(new Element(extensionAnnouncement, "label")); } elements.add(new Element(text + "\n", classname.toLowerCase())); diff --git a/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java index d041313..89bdaf7 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/scheduler/ScheduleItemContainer.java @@ -83,11 +83,21 @@ public class ScheduleItemContainer extends GridPane { parent.getChildren().add(this); + getStyleClass().clear(); + getStyleClass().add("tableRowActive"); GridPane this2 = this; item.onDelete(() -> parent.getChildren().remove(this2)); - item.onIsBeingUpdated(() -> setStyle("-fx-background-color: #faebcc;")); - item.onIsupdated(() -> setStyle("-fx-background-color: #ffffff;")); + item.onIsBeingUpdated(() -> { + getStyleClass().clear(); + getStyleClass().add("tableRowBlue"); +// setStyle("-fx-background-color: #faebcc;") + }); + item.onIsupdated(() -> { + getStyleClass().clear(); + getStyleClass().add("tableRowActive"); +// setStyle("-fx-background-color: #ffffff;") + }); } private Label initNewLabelColumn(String text) { diff --git a/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml index f98429a..b6fc53e 100644 --- a/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml +++ b/G-Earth/src/main/resources/gearth/ui/subforms/extensions/logger/ExtensionLogger.fxml @@ -3,7 +3,7 @@ - + diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 247d66b..431f730 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -6,6 +6,12 @@ -fx-border-radius: 11; -fx-border-width: 0 1 1 1; } + +.themed-background { + -fx-background-color: white; + -fx-background-radius: 4; +} + .button,.menu-button,.toggle-button,.split-menu-button { -fx-font-size: 14; -fx-background-radius: 4; @@ -903,15 +909,15 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: #0096c8; } -.internalExtension { +.tableRowBlue { -fx-background-color: #F0FFFF; } -.disconnectedExtension { +.tableRowInactive { -fx-background-color: #CCCCCC; } -.connectedExtension { +.tableRowActive { -fx-background-color: #FFFFFF; } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index 9f78ffa..f6209c3 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -8,6 +8,11 @@ -fx-border-width: 0 1 1 1; } +.themed-background { + -fx-background-color: #363636; + -fx-background-radius: 4; +} + .button,.menu-button,.toggle-button,.split-menu-button { -fx-font-size: 14; -fx-background-radius: 4; @@ -925,15 +930,15 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: #0096c8; } -.internalExtension { +.tableRowBlue { -fx-background-color: #3d5b69; } -.disconnectedExtension { +.tableRowInactive { -fx-background-color: #5e5e5e; } -.connectedExtension { +.tableRowActive { -fx-background-color: #525252; } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 96db9ba..080056c 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -7,6 +7,11 @@ -fx-border-width: 0 1 1 1; } +.themed-background { + -fx-background-color: white; + -fx-background-radius: 4; +} + .button,.menu-button,.toggle-button,.split-menu-button { -fx-font-size: 14; -fx-background-radius: 4; @@ -903,15 +908,15 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: #c88600; } -.internalExtension { +.tableRowBlue { -fx-background-color: #fff0e3; } -.disconnectedExtension { +.tableRowInactive { -fx-background-color: #CCCCCC; } -.connectedExtension { +.tableRowActive { -fx-background-color: #FFFFFF; } From e6b5507968f95bb2009adc6dfdcc292501876f25 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 01:32:32 +0100 Subject: [PATCH 11/22] update alerts --- .../java/gearth/misc/ConfirmationDialog.java | 3 --- .../main/java/gearth/misc/UpdateChecker.java | 10 +++++---- .../proxy/ProxyProviderFactory.java | 10 +++++---- .../proxy/flash/FlashProxyProvider.java | 10 +++++---- .../proxy/flash/NormalFlashProxyProvider.java | 10 +++++---- .../proxy/nitro/http/NitroHttpProxy.java | 12 +++++++---- .../gearth/protocol/memory/Rc4Obtainer.java | 15 ++++++------- .../network/authentication/Authenticator.java | 11 ++++++++-- .../services/g_python/GPythonShell.java | 10 +++++---- .../StoreExtensionDetailsOverview.java | 8 ++++++- .../unity_tools/GUnityFileServer.java | 3 ++- .../extensions/ExtensionItemContainer.java | 11 ++++++++-- .../ui/subforms/extra/ExtraController.java | 12 +++++++---- .../ui/titlebar/TitleBarController.java | 21 +++++++++++++++---- 14 files changed, 98 insertions(+), 48 deletions(-) diff --git a/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java b/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java index 4c10bc8..81ede90 100644 --- a/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java +++ b/G-Earth/src/main/java/gearth/misc/ConfirmationDialog.java @@ -26,9 +26,6 @@ public class ConfirmationDialog { Alert alert = new Alert(type); // Need to force the alert to layout in order to grab the graphic, // as we are replacing the dialog pane with a custom pane - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().applyCss(); Node graphic = alert.getDialogPane().getGraphic(); // Create a new dialog pane that has a checkbox instead of the hide/show details button diff --git a/G-Earth/src/main/java/gearth/misc/UpdateChecker.java b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java index b43f49e..93a0827 100644 --- a/G-Earth/src/main/java/gearth/misc/UpdateChecker.java +++ b/G-Earth/src/main/java/gearth/misc/UpdateChecker.java @@ -1,6 +1,7 @@ package gearth.misc; import gearth.GEarth; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -37,9 +38,6 @@ public class UpdateChecker { boolean isForcedUpdate = body.contains("(!)"); Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); FlowPane fp = new FlowPane(); Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:"); @@ -62,7 +60,11 @@ public class UpdateChecker { if (isForcedUpdate) { alert.setOnCloseRequest(event -> System.exit(0)); } - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); } diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java index 92796f5..e437c83 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java @@ -9,6 +9,7 @@ import gearth.protocol.connection.HStateSetter; import gearth.protocol.connection.proxy.flash.NormalFlashProxyProvider; import gearth.protocol.connection.proxy.flash.unix.LinuxRawIpFlashProxyProvider; import gearth.protocol.connection.proxy.flash.windows.WindowsRawIpFlashProxyProvider; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -108,12 +109,13 @@ public class ProxyProviderFactory { Alert alert = new Alert(Alert.AlertType.ERROR, "G-Earth is already connected to this hotel. " + "Due to current limitations you can only connect one session per hotel to G-Earth in Raw IP mode on Windows.\n\n" + "You can bypass this by using a SOCKS proxy [Extra -> Advanced -> SOCKS]", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); return null; diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java index 55d3a06..c27ff8f 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java @@ -11,6 +11,7 @@ import gearth.protocol.memory.Rc4Obtainer; import gearth.protocol.packethandler.flash.IncomingFlashPacketHandler; import gearth.protocol.packethandler.flash.OutgoingFlashPacketHandler; import gearth.protocol.packethandler.flash.FlashPacketHandler; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -124,12 +125,13 @@ public abstract class FlashProxyProvider implements ProxyProvider { protected void showInvalidConnectionError() { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "You entered invalid connection information, G-Earth could not connect", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); } diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java index 21d9730..49b4c6e 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/NormalFlashProxyProvider.java @@ -10,6 +10,7 @@ import gearth.protocol.hostreplacer.hostsfile.HostReplacer; import gearth.protocol.hostreplacer.hostsfile.HostReplacerFactory; import gearth.protocol.portchecker.PortChecker; import gearth.protocol.portchecker.PortCheckerFactory; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -109,10 +110,11 @@ public class NormalFlashProxyProvider extends FlashProxyProvider { Platform.runLater(() -> { Alert a = new Alert(Alert.AlertType.ERROR, "The port is in use by " + processName, ButtonType.OK); - Stage stage = (Stage) a.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); - a.showAndWait(); + try { + TitleBarController.create(a).showAlertAndWait(); + } catch (IOException ex) { + ex.printStackTrace(); + } }); throw new IOException(e); } diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java index dbe319e..e9ac358 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java @@ -5,6 +5,7 @@ import gearth.misc.ConfirmationDialog; import gearth.protocol.connection.proxy.nitro.NitroConstants; import gearth.protocol.connection.proxy.nitro.os.NitroOsFunctions; import gearth.protocol.connection.proxy.nitro.os.NitroOsFunctionsFactory; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -16,6 +17,7 @@ import org.littleshoot.proxy.mitm.Authority; import org.littleshoot.proxy.mitm.RootCertificateException; import java.io.File; +import java.io.IOException; import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicBoolean; @@ -56,11 +58,13 @@ public class NitroHttpProxy { "G-Earth will ask you for Administrator permission if you do so.", "Remember my choice", ButtonType.YES, ButtonType.NO ); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); - shouldInstall.set(alert.showAndWait().filter(t -> t == ButtonType.YES).isPresent()); + try { + shouldInstall.set(TitleBarController.create(alert).showAlertAndWait() + .filter(t -> t == ButtonType.YES).isPresent()); + } catch (IOException e) { + e.printStackTrace(); + } waitForDialog.release(); }); diff --git a/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java b/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java index f342683..40ff481 100644 --- a/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java +++ b/G-Earth/src/main/java/gearth/protocol/memory/Rc4Obtainer.java @@ -10,6 +10,7 @@ import gearth.protocol.memory.habboclient.HabboClientFactory; import gearth.protocol.packethandler.flash.BufferChangeListener; import gearth.protocol.packethandler.flash.FlashPacketHandler; import gearth.protocol.packethandler.PayloadBuffer; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -18,9 +19,11 @@ import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.layout.FlowPane; import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; import javafx.scene.web.WebView; import javafx.stage.Stage; +import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -82,9 +85,6 @@ public class Rc4Obtainer { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.WARNING, "Something went wrong!", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); FlowPane fp = new FlowPane(); Label lbl = new Label("G-Earth has experienced an issue" + System.lineSeparator()+ System.lineSeparator() + "Head over to our Troubleshooting page to solve the problem:"); @@ -95,15 +95,16 @@ public class Rc4Obtainer { event.consume(); }); - WebView webView = new WebView(); - webView.getEngine().loadContent("G-Earth has experienced an issue

Head over to our Troubleshooting page to solve the problem:
https://github.com/sirjonasxx/G-Earth/wiki/Troubleshooting"); - webView.setPrefSize(500, 200); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.getDialogPane().setContent(fp); alert.setOnCloseRequest(event -> { GEarth.main.getHostServices().showDocument(link.getText()); }); - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java index ebea488..7047364 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java @@ -2,10 +2,12 @@ package gearth.services.extension_handler.extensions.implementations.network.aut import gearth.misc.ConfirmationDialog; import gearth.services.extension_handler.extensions.implementations.network.NetworkExtension; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import java.io.IOException; import java.util.*; /** @@ -70,8 +72,13 @@ public class Authenticator { ButtonType.YES, ButtonType.NO ); - if (!(alert.showAndWait().filter(t -> t == ButtonType.YES).isPresent())) { - allowConnection[0] = false; + try { + if (!(TitleBarController.create(alert).showAlertAndWait() + .filter(t -> t == ButtonType.YES).isPresent())) { + allowConnection[0] = false; + } + } catch (IOException e) { + e.printStackTrace(); } done[0] = true; if (!ConfirmationDialog.showDialog(connectExtensionKey)) { diff --git a/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java b/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java index 76bfd66..da92ac6 100644 --- a/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java +++ b/G-Earth/src/main/java/gearth/services/g_python/GPythonShell.java @@ -2,6 +2,7 @@ package gearth.services.g_python; import gearth.GEarth; import gearth.ui.subforms.extra.ExtraController; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; @@ -170,9 +171,6 @@ public class GPythonShell { private void showError() { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "G-Python error", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.setTitle("G-Python error"); FlowPane fp = new FlowPane(); @@ -188,7 +186,11 @@ public class GPythonShell { alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.getDialogPane().setContent(fp); - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } }); } diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsOverview.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsOverview.java index aa594c1..7c06d56 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsOverview.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/application/entities/extensiondetails/StoreExtensionDetailsOverview.java @@ -11,12 +11,14 @@ import gearth.services.internal_extensions.extensionstore.repository.StoreReposi import gearth.services.internal_extensions.extensionstore.repository.models.StoreExtension; import gearth.services.internal_extensions.extensionstore.tools.InstalledExtension; import gearth.services.internal_extensions.extensionstore.tools.StoreExtensionTools; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; import org.apache.maven.artifact.versioning.ComparableVersion; import org.w3c.dom.Element; +import java.io.IOException; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -114,7 +116,11 @@ public class StoreExtensionDetailsOverview extends HOverview { alert.setHeaderText(header); alert.setContentText(context); - alert.showAndWait(); + try { + TitleBarController.create(alert).showAlertAndWait(); + } catch (IOException e) { + e.printStackTrace(); + } } @Override diff --git a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java index ba8b4e6..8058604 100644 --- a/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java +++ b/G-Earth/src/main/java/gearth/services/unity_tools/GUnityFileServer.java @@ -2,6 +2,7 @@ package gearth.services.unity_tools; import gearth.GEarth; import gearth.misc.Cacher; +import gearth.ui.themes.ThemeFactory; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; @@ -135,7 +136,7 @@ public class GUnityFileServer extends HttpServlet private void getLogo(HttpServletResponse response) throws IOException { OutputStream out = response.getOutputStream(); - InputStream in = GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logo.png", GEarth.theme)); + InputStream in = GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logo.png", ThemeFactory.getDefaultTheme().internalName())); byte[] bytes = new byte[4096]; int bytesRead; diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java index de1a9fa..b1623fe 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extensions/ExtensionItemContainer.java @@ -2,6 +2,7 @@ package gearth.ui.subforms.extensions; import gearth.services.extension_handler.extensions.ExtensionType; import gearth.services.extension_handler.extensions.GEarthExtension; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.event.EventHandler; import javafx.geometry.Insets; @@ -17,6 +18,7 @@ import gearth.services.extension_handler.extensions.implementations.network.exec import gearth.services.extension_handler.extensions.implementations.network.executer.ExtensionRunnerFactory; import gearth.services.extension_handler.extensions.implementations.network.executer.NormalExtensionRunner; +import java.io.IOException; import java.nio.file.Paths; /** @@ -113,8 +115,13 @@ public class ExtensionItemContainer extends GridPane { ButtonType.YES, ButtonType.NO ); - if (!(alert.showAndWait().filter(t -> t == ButtonType.YES).isPresent())) { - delet_dis = false; + try { + if (!(TitleBarController.create(alert).showAlertAndWait() + .filter(t -> t == ButtonType.YES).isPresent())) { + delet_dis = false; + } + } catch (IOException e) { + e.printStackTrace(); } } diff --git a/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java b/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java index d502d8d..ce02079 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/extra/ExtraController.java @@ -10,6 +10,7 @@ import gearth.services.always_admin.AdminService; import gearth.services.g_python.GPythonVersionUtils; import gearth.ui.SubForm; import gearth.ui.subforms.info.InfoController; +import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.scene.control.*; @@ -20,6 +21,8 @@ import javafx.scene.layout.Region; import javafx.stage.Stage; import org.json.JSONObject; +import java.io.IOException; + /** * Created by Jonas on 06/04/18. */ @@ -175,9 +178,6 @@ public class ExtraController extends SubForm implements SocksConfiguration { if (!GPythonVersionUtils.validInstallation()) { Platform.runLater(() -> { Alert alert = new Alert(Alert.AlertType.ERROR, "G-Python installation", ButtonType.OK); - Stage stage = (Stage) alert.getDialogPane().getScene().getWindow(); - stage.getIcons().add(new Image(GEarth.class.getResourceAsStream(String.format("/gearth/ui/themes/%s/logoSmall.png", GEarth.theme)))); - stage.getScene().getStylesheets().add(GEarth.class.getResource(String.format("/gearth/ui/themes/%s/styling.css", GEarth.theme)).toExternalForm()); alert.setTitle("G-Python installation"); FlowPane fp = new FlowPane(); @@ -192,7 +192,11 @@ public class ExtraController extends SubForm implements SocksConfiguration { alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.getDialogPane().setContent(fp); - alert.show(); + try { + TitleBarController.create(alert).showAlert(); + } catch (IOException e) { + e.printStackTrace(); + } cbx_gpython.setDisable(false); }); diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index 9553f58..6b7630d 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -4,12 +4,11 @@ import gearth.GEarth; import gearth.ui.themes.ThemeFactory; import javafx.application.Platform; import javafx.beans.InvalidationListener; -import javafx.beans.Observable; import javafx.fxml.FXMLLoader; -import javafx.scene.Cursor; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; @@ -22,6 +21,7 @@ import javafx.stage.Stage; import javafx.stage.StageStyle; import java.io.IOException; +import java.util.Optional; public class TitleBarController { @@ -34,6 +34,8 @@ public class TitleBarController { private Stage stage; private TitleBarConfig config; + private Alert alert = null; + public static TitleBarController create(Stage stage, TitleBarConfig config) throws IOException { FXMLLoader loader = new FXMLLoader(TitleBarController.class.getResource("Titlebar.fxml")); Parent titleBar = loader.load(); @@ -60,6 +62,7 @@ public class TitleBarController { }; TitleBarController controller = initNewController(loader, stage, config); + controller.alert = alert; Parent parent = alert.getDialogPane().getScene().getRoot(); VBox newParent = new VBox(titleBar, parent); newParent.setId("titlebar-main-container"); @@ -137,8 +140,18 @@ public class TitleBarController { } public void showAlert() { - stage.show(); - Platform.runLater(() -> stage.sizeToScene()); + if (alert != null) { + alert.show(); + Platform.runLater(() -> stage.sizeToScene()); + } + } + + public Optional showAlertAndWait() { + if (alert != null) { + Platform.runLater(() -> stage.sizeToScene()); + return alert.showAndWait(); + } + return Optional.empty(); } } From 73614f28bec98c83838331816fbefa2a4f5d80ca Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 01:34:16 +0100 Subject: [PATCH 12/22] cache theme --- G-Earth/src/main/java/gearth/GEarth.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 2327186..5fce2d0 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -18,6 +18,7 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; import javafx.stage.StageStyle; +import sun.misc.Cache; import java.util.function.Consumer; @@ -109,6 +110,7 @@ public class GEarth extends Application { } private void setGearthTheme(Theme theme) { + Cacher.put("theme", theme.internalName()); themeObservable.fireEvent(t -> t.accept(theme)); GEarth.theme = theme; Theme defaultTheme = ThemeFactory.getDefaultTheme(); From 7993790b90c5ededcc06977e5ad95ae6917b65c1 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 01:35:48 +0100 Subject: [PATCH 13/22] Update GEarth.java --- G-Earth/src/main/java/gearth/GEarth.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 5fce2d0..367b1f2 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -110,7 +110,7 @@ public class GEarth extends Application { } private void setGearthTheme(Theme theme) { - Cacher.put("theme", theme.internalName()); + Cacher.put("theme", theme.title()); themeObservable.fireEvent(t -> t.accept(theme)); GEarth.theme = theme; Theme defaultTheme = ThemeFactory.getDefaultTheme(); From c294b92d778c6016abd79e799076a91a1b7bdcc8 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 01:46:44 +0100 Subject: [PATCH 14/22] alert fixes --- .../protocol/connection/proxy/ProxyProviderFactory.java | 6 ++++-- .../connection/proxy/flash/FlashProxyProvider.java | 4 +++- .../connection/proxy/nitro/http/NitroHttpProxy.java | 9 ++++++--- .../network/authentication/Authenticator.java | 6 +++++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java index e437c83..783f4d0 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/ProxyProviderFactory.java @@ -13,6 +13,7 @@ import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.layout.Region; import javafx.stage.Stage; @@ -106,9 +107,10 @@ public class ProxyProviderFactory { } Platform.runLater(() -> { - Alert alert = new Alert(Alert.AlertType.ERROR, "G-Earth is already connected to this hotel. " + + Alert alert = new Alert(Alert.AlertType.ERROR, "", ButtonType.OK); + alert.getDialogPane().getChildren().add(new Label("G-Earth is already connected to this hotel.\n" + "Due to current limitations you can only connect one session per hotel to G-Earth in Raw IP mode on Windows.\n\n" + - "You can bypass this by using a SOCKS proxy [Extra -> Advanced -> SOCKS]", ButtonType.OK); + "You can bypass this by using a SOCKS proxy [Extra -> Advanced -> SOCKS]")); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); try { diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java index c27ff8f..dbbc7af 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/flash/FlashProxyProvider.java @@ -15,6 +15,7 @@ import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.layout.Region; import javafx.stage.Stage; @@ -124,7 +125,8 @@ public abstract class FlashProxyProvider implements ProxyProvider { protected void showInvalidConnectionError() { Platform.runLater(() -> { - Alert alert = new Alert(Alert.AlertType.ERROR, "You entered invalid connection information, G-Earth could not connect", ButtonType.OK); + Alert alert = new Alert(Alert.AlertType.ERROR, "", ButtonType.OK); + alert.getDialogPane().getChildren().add(new Label("You entered invalid connection information, G-Earth could not connect")); alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE); alert.setResizable(false); try { diff --git a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java index e9ac358..f056564 100644 --- a/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java +++ b/G-Earth/src/main/java/gearth/protocol/connection/proxy/nitro/http/NitroHttpProxy.java @@ -9,6 +9,7 @@ import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.stage.Stage; import org.littleshoot.proxy.HttpProxyServer; @@ -53,12 +54,14 @@ public class NitroHttpProxy { Platform.runLater(() -> { Alert alert = ConfirmationDialog.createAlertWithOptOut(Alert.AlertType.WARNING, ADMIN_WARNING_KEY, "Root certificate installation", null, - "G-Earth detected that you do not have the root certificate authority installed. " + - "This is required for Nitro to work, do you want to continue? " + - "G-Earth will ask you for Administrator permission if you do so.", "Remember my choice", + "", "Remember my choice", ButtonType.YES, ButtonType.NO ); + alert.getDialogPane().setContent(new Label("G-Earth detected that you do not have the root certificate authority installed.\n" + + "This is required for Nitro to work, do you want to continue?\n" + + "G-Earth will ask you for Administrator permission if you do so.")); + try { shouldInstall.set(TitleBarController.create(alert).showAlertAndWait() .filter(t -> t == ButtonType.YES).isPresent()); diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java index 7047364..5f6b694 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/authentication/Authenticator.java @@ -6,6 +6,7 @@ import gearth.ui.titlebar.TitleBarController; import javafx.application.Platform; import javafx.scene.control.Alert; import javafx.scene.control.ButtonType; +import javafx.scene.control.Label; import java.io.IOException; import java.util.*; @@ -68,10 +69,13 @@ public class Authenticator { Platform.runLater(() -> { Alert alert = ConfirmationDialog.createAlertWithOptOut(Alert.AlertType.WARNING, connectExtensionKey ,"Confirmation Dialog", null, - "Extension \""+extension.getTitle()+"\" tries to connect but isn't known to G-Earth, accept this connection?", "Remember my choice", + "", "Remember my choice", ButtonType.YES, ButtonType.NO ); + alert.getDialogPane().setContent(new Label("Extension \""+extension.getTitle()+"\" tries to connect but isn't known to G-Earth,\n" + + "accept this connection?")); + try { if (!(TitleBarController.create(alert).showAlertAndWait() .filter(t -> t == ButtonType.YES).isPresent())) { From 6f787f64410a3365d95736e8e1f908fe67ae978b Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 02:33:34 +0100 Subject: [PATCH 15/22] add hostinfo to extension protocol --- G-Earth/src/main/java/gearth/GEarth.java | 30 ++++++----- .../java/gearth/extensions/Extension.java | 8 ++- .../java/gearth/extensions/ExtensionBase.java | 12 +++++ .../extensions/InternalExtensionBuilder.java | 10 +++- .../src/main/java/gearth/misc/HostInfo.java | 53 +++++++++++++++++++ .../listenerpattern/ObservableObject.java | 22 ++++++++ .../extension_handler/ExtensionHandler.java | 23 +++++++- .../extensions/GEarthExtension.java | 4 +- .../network/NetworkExtension.java | 18 +++++-- .../network/NetworkExtensionInfo.java | 2 + .../simple/ExampleExtension.java | 7 ++- .../titlebar/GEarthThemedTitleBarConfig.java | 4 +- 12 files changed, 168 insertions(+), 25 deletions(-) create mode 100644 G-Earth/src/main/java/gearth/misc/HostInfo.java create mode 100644 G-Earth/src/main/java/gearth/misc/listenerpattern/ObservableObject.java diff --git a/G-Earth/src/main/java/gearth/GEarth.java b/G-Earth/src/main/java/gearth/GEarth.java index 367b1f2..281c5fa 100644 --- a/G-Earth/src/main/java/gearth/GEarth.java +++ b/G-Earth/src/main/java/gearth/GEarth.java @@ -4,6 +4,7 @@ import gearth.misc.AdminValidator; import gearth.misc.Cacher; import gearth.misc.UpdateChecker; import gearth.misc.listenerpattern.Observable; +import gearth.misc.listenerpattern.ObservableObject; import gearth.ui.GEarthController; import gearth.ui.subforms.logger.loggerdisplays.PacketLogger; import gearth.ui.themes.Theme; @@ -27,19 +28,17 @@ public class GEarth extends Application { public static GEarth main; public static String version = "1.5.1"; public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest"; - public static Theme theme; - public static Observable> themeObservable = new Observable<>(); + public static ObservableObject observableTheme; private Stage stage; private GEarthController controller; static { - if (Cacher.getCacheContents().has("theme")) { - theme = ThemeFactory.themeForTitle(Cacher.getCacheContents().getString("theme")); - } - else { - theme = ThemeFactory.getDefaultTheme(); - } + observableTheme = new ObservableObject<>( + Cacher.getCacheContents().has("theme") ? + ThemeFactory.themeForTitle(Cacher.getCacheContents().getString("theme")) : + ThemeFactory.getDefaultTheme() + ); } @Override @@ -87,13 +86,13 @@ public class GEarth extends Application { @Override public Theme getCurrentTheme() { - return theme; + return observableTheme.getObject(); } }); primaryStage.setResizable(false); primaryStage.sizeToScene(); - setGearthTheme(theme); + setGearthTheme(observableTheme.getObject()); primaryStage.show(); primaryStage.setOnCloseRequest(event -> closeGEarth()); @@ -111,8 +110,7 @@ public class GEarth extends Application { private void setGearthTheme(Theme theme) { Cacher.put("theme", theme.title()); - themeObservable.fireEvent(t -> t.accept(theme)); - GEarth.theme = theme; + observableTheme.setObject(theme); Theme defaultTheme = ThemeFactory.getDefaultTheme(); // Platform.runLater(() -> { @@ -161,7 +159,11 @@ public class GEarth extends Application { return null; } - public static Observable> getThemeObservable() { - return themeObservable; + public static ObservableObject getThemeObservable() { + return observableTheme; + } + + public static Theme getTheme() { + return observableTheme.getObject(); } } diff --git a/G-Earth/src/main/java/gearth/extensions/Extension.java b/G-Earth/src/main/java/gearth/extensions/Extension.java index c0c848b..9409af0 100644 --- a/G-Earth/src/main/java/gearth/extensions/Extension.java +++ b/G-Earth/src/main/java/gearth/extensions/Extension.java @@ -1,5 +1,6 @@ package gearth.extensions; +import gearth.misc.HostInfo; import gearth.services.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.HPacket; @@ -159,6 +160,8 @@ public abstract class Extension extends ExtensionBase { } else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.INIT) { delayed_init = packet.readBoolean(); + HostInfo hostInfo = HostInfo.fromPacket(packet); + updateHostInfo(hostInfo); if (!delayed_init) { initExtension(); } @@ -177,7 +180,10 @@ public abstract class Extension extends ExtensionBase { response.appendLongString(habboMessage.stringify()); writeToStream(response.toBytes()); - + } + else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.UPDATEHOSTINFO) { + HostInfo hostInfo = HostInfo.fromPacket(packet); + updateHostInfo(hostInfo); } } diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java index 4abe942..4b4881c 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java @@ -1,10 +1,13 @@ package gearth.extensions; +import gearth.misc.HostInfo; import gearth.misc.listenerpattern.Observable; +import gearth.misc.listenerpattern.ObservableObject; import gearth.protocol.HMessage; import gearth.protocol.HPacket; import gearth.services.packet_info.PacketInfo; import gearth.services.packet_info.PacketInfoManager; +import javafx.beans.property.ObjectProperty; import org.reactfx.util.Lists; import java.util.*; @@ -30,6 +33,11 @@ public abstract class ExtensionBase extends IExtension { volatile PacketInfoManager packetInfoManager = PacketInfoManager.EMPTY; + protected ObservableObject observableHostInfo = new ObservableObject<>(null); + + void updateHostInfo(HostInfo hostInfo) { + observableHostInfo.setObject(hostInfo); + } /** * Register a listener on a specific packet Type @@ -187,4 +195,8 @@ public abstract class ExtensionBase extends IExtension { public PacketInfoManager getPacketInfoManager() { return packetInfoManager; } + + public HostInfo getHostInfo() { + return observableHostInfo.getObject(); + } } diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java index e6fa158..57822a5 100644 --- a/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java @@ -1,6 +1,7 @@ package gearth.extensions; +import gearth.misc.HostInfo; import gearth.services.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.HPacket; @@ -118,9 +119,11 @@ public class InternalExtensionBuilder extends GEarthExtension { extension.onEndConnection(); } + @Override - public void init(boolean isConnected) { + public void init(boolean isConnected, HostInfo hostInfo) { extension.initExtension(); + extension.updateHostInfo(hostInfo); } // not implementing isConnected, only relevant for g-python @Override @@ -128,6 +131,11 @@ public class InternalExtensionBuilder extends GEarthExtension { // no need in internal ext } + @Override + public void updateHostInfo(HostInfo hostInfo) { + extension.updateHostInfo(hostInfo); + } + @Override public void packetToStringResponse(String string, String expression) { // no need in java ext diff --git a/G-Earth/src/main/java/gearth/misc/HostInfo.java b/G-Earth/src/main/java/gearth/misc/HostInfo.java new file mode 100644 index 0000000..e027f35 --- /dev/null +++ b/G-Earth/src/main/java/gearth/misc/HostInfo.java @@ -0,0 +1,53 @@ +package gearth.misc; + +import gearth.protocol.HPacket; + +import java.util.HashMap; + +public class HostInfo { + + private final String packetlogger; + private final String version; + private final HashMap attributes; + + public HostInfo(String packetlogger, String version, HashMap attributes) { + this.packetlogger = packetlogger; + this.version = version; + this.attributes = attributes; + } + + public static HostInfo fromPacket(HPacket packet) { + String packetlogger = packet.readString(); + String version = packet.readString(); + int attributeCount = packet.readInteger(); + HashMap attributes = new HashMap<>(); + for (int i = 0; i < attributeCount; i++) { + String key = packet.readString(); + String value = packet.readString(); + attributes.put(key, value); + } + return new HostInfo(packetlogger, version, attributes); + } + + public void appendToPacket(HPacket packet) { + packet.appendString(packetlogger); + packet.appendString(version); + packet.appendInt(attributes.size()); + attributes.keySet().forEach(k -> { + packet.appendString(k); + packet.appendString(attributes.get(k)); + }); + } + + public String getPacketlogger() { + return packetlogger; + } + + public String getVersion() { + return version; + } + + public HashMap getAttributes() { + return attributes; + } +} diff --git a/G-Earth/src/main/java/gearth/misc/listenerpattern/ObservableObject.java b/G-Earth/src/main/java/gearth/misc/listenerpattern/ObservableObject.java new file mode 100644 index 0000000..4fd62de --- /dev/null +++ b/G-Earth/src/main/java/gearth/misc/listenerpattern/ObservableObject.java @@ -0,0 +1,22 @@ +package gearth.misc.listenerpattern; + +import java.util.function.Consumer; + +public class ObservableObject extends Observable> { + + private T object; + + public ObservableObject(T object) { + super(); + this.object = object; + } + + public void setObject(T object) { + this.object = object; + fireEvent(c -> c.accept(object)); + } + + public T getObject() { + return object; + } +} diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/ExtensionHandler.java b/G-Earth/src/main/java/gearth/services/extension_handler/ExtensionHandler.java index 3c8c119..61e01b7 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/ExtensionHandler.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/ExtensionHandler.java @@ -1,6 +1,7 @@ package gearth.services.extension_handler; import gearth.GEarth; +import gearth.misc.HostInfo; import gearth.misc.listenerpattern.Observable; import gearth.protocol.HConnection; import gearth.protocol.HMessage; @@ -11,10 +12,12 @@ import gearth.services.extension_handler.extensions.GEarthExtension; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducer; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerFactory; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerObserver; +import gearth.ui.themes.Theme; import javafx.util.Pair; import java.io.IOException; import java.util.*; +import java.util.function.Consumer; public class ExtensionHandler { @@ -44,6 +47,14 @@ public class ExtensionHandler { } private void initialize() { + GEarth.getThemeObservable().addListener(theme -> { + synchronized (gEarthExtensions) { + for (GEarthExtension extension : gEarthExtensions) { + extension.updateHostInfo(getHostInfo()); + } + } + }); + hConnection.getStateObservable().addListener((oldState, newState) -> { if (newState == HState.CONNECTED) { synchronized (gEarthExtensions) { @@ -241,7 +252,7 @@ public class ExtensionHandler { extension.getClickedObservable().addListener(extension::doubleclick); observable.fireEvent(l -> l.onExtensionConnect(extension)); - extension.init(hConnection.getState() == HState.CONNECTED); + extension.init(hConnection.getState() == HState.CONNECTED, getHostInfo()); if (hConnection.getState() == HState.CONNECTED) { extension.connectionStart( hConnection.getDomain(), @@ -256,6 +267,16 @@ public class ExtensionHandler { }; } + private HostInfo getHostInfo() { + HashMap attributes = new HashMap<>(); + attributes.put("theme", GEarth.getTheme().title()); + return new HostInfo( + "G-Earth", + GEarth.version, + attributes + ); + } + public List getExtensionProducers() { return extensionProducers; } diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/GEarthExtension.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/GEarthExtension.java index 8310475..7a18161 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/GEarthExtension.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/GEarthExtension.java @@ -1,5 +1,6 @@ package gearth.services.extension_handler.extensions; +import gearth.misc.HostInfo; import gearth.misc.listenerpattern.Observable; import gearth.misc.listenerpattern.SynchronizedObservable; import gearth.services.packet_info.PacketInfoManager; @@ -40,8 +41,9 @@ public abstract class GEarthExtension { public abstract void provideFlags(String[] flags); public abstract void connectionStart(String host, int port, String hotelVersion, String clientIdentifier, HClient clientType, PacketInfoManager packetInfoManager); public abstract void connectionEnd(); - public abstract void init(boolean isConnected); + public abstract void init(boolean isConnected, HostInfo hostInfo); public abstract void close(); + public abstract void updateHostInfo(HostInfo hostInfo); public abstract void packetToStringResponse(String string, String expression); public abstract void stringToPacketResponse(HPacket packet); // --------------------------------------------------------------- diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtension.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtension.java index 3100a76..8b55c95 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtension.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtension.java @@ -1,5 +1,6 @@ package gearth.services.extension_handler.extensions.implementations.network; +import gearth.misc.HostInfo; import gearth.services.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.connection.HClient; @@ -213,10 +214,12 @@ public class NetworkExtension extends GEarthExtension { } @Override - public void init(boolean isConnected) { - sendMessage( - new HPacket(NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.INIT, isConnected) - ); + public void init(boolean isConnected, HostInfo hostInfo) { + HPacket initPacket = new HPacket(NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.INIT); + initPacket.appendBoolean(isConnected); + hostInfo.appendToPacket(initPacket); + + sendMessage(initPacket); } @Override @@ -226,6 +229,13 @@ public class NetworkExtension extends GEarthExtension { } catch (IOException ignored) { } } + @Override + public void updateHostInfo(HostInfo hostInfo) { + HPacket packet = new HPacket(NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.UPDATEHOSTINFO); + hostInfo.appendToPacket(packet); + sendMessage(packet); + } + @Override public void packetToStringResponse(String string, String expression) { HPacket packet = new HPacket(NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.PACKETTOSTRING_RESPONSE); diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtensionInfo.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtensionInfo.java index 6ac87cb..50282cf 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtensionInfo.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/network/NetworkExtensionInfo.java @@ -88,6 +88,8 @@ public class NetworkExtensionInfo { public static final int CONNECTIONEND = 6; public static final int INIT = 7; + public static final int UPDATEHOSTINFO = 10; + public static final int PACKETTOSTRING_RESPONSE = 20; public static final int STRINGTOPACKET_RESPONSE = 21; } diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/ExampleExtension.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/ExampleExtension.java index 99f4e24..8b29916 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/ExampleExtension.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/ExampleExtension.java @@ -1,5 +1,6 @@ package gearth.services.extension_handler.extensions.implementations.simple; +import gearth.misc.HostInfo; import gearth.services.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.HPacket; @@ -96,8 +97,9 @@ public class ExampleExtension extends GEarthExtension { // the habbo connection has ended } + @Override - public void init(boolean isConnected) { + public void init(boolean isConnected, HostInfo hostInfo) { System.out.println("Example extension is connected to G-Earth"); // the extension is now connected with G-Earth } @@ -110,7 +112,10 @@ public class ExampleExtension extends GEarthExtension { hasClosed(); } + @Override + public void updateHostInfo(HostInfo hostInfo) { + } // ignore these diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java b/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java index ffa2d8e..83495a0 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/GEarthThemedTitleBarConfig.java @@ -9,8 +9,8 @@ import java.util.function.Consumer; public class GEarthThemedTitleBarConfig extends DefaultTitleBarConfig { public GEarthThemedTitleBarConfig(Stage stage) { - super(stage, GEarth.theme); - GEarth.themeObservable.addListener(this::setTheme); + super(stage, GEarth.getTheme()); + GEarth.getThemeObservable().addListener(this::setTheme); } @Override From 1b6e91deb160780cfdb3790d3da57dd6f0ecb6c2 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 02:48:20 +0100 Subject: [PATCH 16/22] add skip method --- .../src/main/java/gearth/protocol/HPacket.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/G-Earth/src/main/java/gearth/protocol/HPacket.java b/G-Earth/src/main/java/gearth/protocol/HPacket.java index 55a4411..f8fdd62 100644 --- a/G-Earth/src/main/java/gearth/protocol/HPacket.java +++ b/G-Earth/src/main/java/gearth/protocol/HPacket.java @@ -92,6 +92,22 @@ public class HPacket implements StringifyAble { return 2; } + public HPacket skip(String structure) { + for (char c : structure.toCharArray()) { + switch (c) { + case 'i': readInteger(); break; + case 's': readString(); break; + case 'b': readByte(); break; + case 'B': readBoolean(); break; + case 'u': readShort(); break; + case 'l': readLong(); break; + case 'd': readDouble(); break; + } + } + + return this; + } + public void setIdentifier(String identifier) { this.identifier = identifier; } @@ -730,4 +746,5 @@ public class HPacket implements StringifyAble { HPacket packet2 = (HPacket) object; return Arrays.equals(packetInBytes, packet2.packetInBytes) && (isEdited == packet2.isEdited); } + } From 77dfd67b3db068059c6699aeeb7f9d23529f5ec3 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 04:13:07 +0100 Subject: [PATCH 17/22] ThemedExtensionFormCreator --- .../java/gearth/extensions/ExtensionBase.java | 2 +- .../java/gearth/extensions/ExtensionForm.java | 11 +++ .../extensions/ExtensionFormLauncher.java | 1 + .../ThemedExtensionFormCreator.java | 67 +++++++++++++++++++ .../gearth/ui/themes/G-Earth/styling.css | 4 ++ .../gearth/ui/themes/G-Earth_Dark/styling.css | 4 ++ .../gearth/ui/themes/Tanji/styling.css | 4 ++ 7 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 G-Earth/src/main/java/gearth/extensions/ThemedExtensionFormCreator.java diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java index 4b4881c..d801aeb 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java @@ -33,7 +33,7 @@ public abstract class ExtensionBase extends IExtension { volatile PacketInfoManager packetInfoManager = PacketInfoManager.EMPTY; - protected ObservableObject observableHostInfo = new ObservableObject<>(null); + ObservableObject observableHostInfo = new ObservableObject<>(null); void updateHostInfo(HostInfo hostInfo) { observableHostInfo.setObject(hostInfo); diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java index 326eaf0..6922c93 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java @@ -1,12 +1,17 @@ package gearth.extensions; +import gearth.misc.HostInfo; +import gearth.misc.listenerpattern.Observable; import gearth.services.packet_info.PacketInfoManager; import javafx.application.HostServices; import javafx.application.Platform; +import javafx.beans.InvalidationListener; import javafx.stage.Stage; import gearth.protocol.HMessage; import gearth.protocol.HPacket; +import java.util.function.Consumer; + /** * Created by Jonas on 22/09/18. */ @@ -92,4 +97,10 @@ public abstract class ExtensionForm extends ExtensionBase { public HostServices getHostServices() { return hostServices; } + + public HostInfo getHostInfo() { + return extension.observableHostInfo.getObject(); + } + + Observable fieldsInitialized = new Observable<>(Runnable::run); } diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java index 170b398..8f67369 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java @@ -60,6 +60,7 @@ public class ExtensionFormLauncher extends Application { extensionForm.extension = extension; extensionForm.primaryStage = primaryStage; + extensionForm.fieldsInitialized.fireEvent(); Thread t = new Thread(() -> { extension.run(); //when the extension has ended, close this process diff --git a/G-Earth/src/main/java/gearth/extensions/ThemedExtensionFormCreator.java b/G-Earth/src/main/java/gearth/extensions/ThemedExtensionFormCreator.java new file mode 100644 index 0000000..5941757 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/ThemedExtensionFormCreator.java @@ -0,0 +1,67 @@ +package gearth.extensions; + +import gearth.ui.themes.Theme; +import gearth.ui.themes.ThemeFactory; +import gearth.ui.titlebar.DefaultTitleBarConfig; +import gearth.ui.titlebar.TitleBarController; +import javafx.application.Platform; +import javafx.beans.InvalidationListener; +import javafx.beans.Observable; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +import java.net.URL; + +public abstract class ThemedExtensionFormCreator extends ExtensionFormCreator { + + @Override + protected ExtensionForm createForm(Stage primaryStage) throws Exception { + FXMLLoader loader = new FXMLLoader(getFormResource()); + Parent root = loader.load(); + + primaryStage.setTitle(getTitle()); + primaryStage.setScene(new Scene(root)); + initialize(primaryStage); + primaryStage.setResizable(false); + primaryStage.sizeToScene(); + + DefaultTitleBarConfig config = new DefaultTitleBarConfig(primaryStage, ThemeFactory.getDefaultTheme()) { + @Override + public boolean displayThemePicker() { + return false; + } + }; + TitleBarController.create(primaryStage, config); + + ExtensionForm extensionForm = loader.getController(); + extensionForm.fieldsInitialized.addListener(() -> extensionForm.extension.observableHostInfo.addListener(hostInfo -> { + if (hostInfo.getAttributes().containsKey("theme")) { + String themeTitle = hostInfo.getAttributes().get("theme"); + Theme theme = ThemeFactory.themeForTitle(themeTitle); + if (config.getCurrentTheme() != theme) { + String styleClassOld = config.getCurrentTheme().title().replace(" ", "-").toLowerCase(); + String styleClassNew = theme.title().replace(" ", "-").toLowerCase(); + config.setTheme(theme); + Parent currentRoot = primaryStage.getScene().getRoot(); + Platform.runLater(() -> { + currentRoot.getStyleClass().remove(styleClassOld); + currentRoot.getStyleClass().add(styleClassNew); + }); + } + } + })); + + + return extensionForm; + } + + protected abstract String getTitle(); + protected abstract URL getFormResource(); + + // can be overridden for more settings + protected void initialize(Stage primaryStage) { + + } +} diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 431f730..2dbe3c7 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -974,6 +974,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: black; } +.label.softer { + -fx-text-fill: rgba(0, 0, 0, 0.8); +} + .list-view { -fx-border-color: #cccccc; -fx-border-radius: 4; diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index f6209c3..03c6c2e 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -1036,6 +1036,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: #f0f0f0 !important; } +.label.softer { + -fx-text-fill: rgba(240, 240, 240, 0.8); +} + .pckt-info { -fx-fill: #ffffffa0; } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 080056c..7d76f93 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -973,6 +973,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-text-fill: black; } +.label.softer { + -fx-text-fill: rgba(0, 0, 0, 0.8); +} + .list-view { -fx-border-color: #cccccc; -fx-border-radius: 4; From 3d7b1fa7dd06db23ad5135c9b86a6e72d7945a05 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 04:21:26 +0100 Subject: [PATCH 18/22] round border fix --- .../src/main/java/gearth/ui/titlebar/TitleBarController.java | 1 + .../src/main/resources/gearth/ui/themes/G-Earth/styling.css | 4 ++++ .../main/resources/gearth/ui/themes/G-Earth_Dark/styling.css | 4 ++++ G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index 6b7630d..a89b69f 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -79,6 +79,7 @@ public class TitleBarController { controller.config = config; stage.initStyle(StageStyle.TRANSPARENT); stage.getScene().setFill(Color.TRANSPARENT); + stage.getScene().getRoot().getStyleClass().add("root-node"); stage.titleProperty().addListener((i) -> controller.setTitle(stage.getTitle())); controller.setTitle(stage.getTitle()); diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 2dbe3c7..e7a6169 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -954,6 +954,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-background-radius: 0 0 10 10; } +.root-node { + -fx-background-radius: 0 0 10 10; +} + #icon { /*-fx-image: url("logoSmall.png");*/ } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index 03c6c2e..f1f19f7 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -996,6 +996,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-background-radius: 0 0 10 10; } +.root-node { + -fx-background-radius: 0 0 10 10; +} + #icon { /*-fx-image: url("logoSmall.png");*/ } diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 7d76f93..d0aa2a2 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -953,6 +953,10 @@ VBox > .split-menu-button.last > .arrow-button { -fx-background-radius: 0 0 10 10; } +.root-node { + -fx-background-radius: 0 0 10 10; +} + #icon { /*-fx-image: url("logoSmall.png");*/ } From 33afab4353c0d4669046ffc8f0caa932db7da024 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 04:47:54 +0100 Subject: [PATCH 19/22] more --- .../extensions/InternalExtensionFormBuilder.java | 1 + .../extensions/ThemedExtensionFormCreator.java | 13 ++++++++++++- .../src/main/java/gearth/ui/themes/DarkTheme.java | 5 +++++ .../src/main/java/gearth/ui/themes/LightTheme.java | 5 +++++ .../src/main/java/gearth/ui/themes/TanjiTheme.java | 5 +++++ G-Earth/src/main/java/gearth/ui/themes/Theme.java | 1 + 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java index 5db129b..e7b65be 100644 --- a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java @@ -55,6 +55,7 @@ public class InternalExtensionFormBuilder { + primaryStage.getScene().getRoot().getStyleClass().add(defaultTheme.title().replace(" ", "-").toLowerCase()); + primaryStage.getScene().getRoot().getStyleClass().add(defaultTheme.isDark() ? "g-dark" : "g-light"); + }); ExtensionForm extensionForm = loader.getController(); extensionForm.fieldsInitialized.addListener(() -> extensionForm.extension.observableHostInfo.addListener(hostInfo -> { @@ -42,12 +47,18 @@ public abstract class ThemedExtensionFormCreator extends ExtensionFormCreator { Theme theme = ThemeFactory.themeForTitle(themeTitle); if (config.getCurrentTheme() != theme) { String styleClassOld = config.getCurrentTheme().title().replace(" ", "-").toLowerCase(); + String lightClassOld = config.getCurrentTheme().isDark() ? "g-dark" : "g-light"; String styleClassNew = theme.title().replace(" ", "-").toLowerCase(); + String lightClassNew = theme.isDark() ? "g-dark" : "g-light"; config.setTheme(theme); Parent currentRoot = primaryStage.getScene().getRoot(); Platform.runLater(() -> { currentRoot.getStyleClass().remove(styleClassOld); currentRoot.getStyleClass().add(styleClassNew); + if (!lightClassOld.equals(lightClassNew)) { + currentRoot.getStyleClass().remove(lightClassOld); + currentRoot.getStyleClass().add(lightClassNew); + } }); } } diff --git a/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java b/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java index 25f90da..f7139cc 100644 --- a/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java +++ b/G-Earth/src/main/java/gearth/ui/themes/DarkTheme.java @@ -11,6 +11,11 @@ public class DarkTheme implements Theme { return "G-Earth_Dark"; } + @Override + public boolean isDark() { + return true; + } + @Override public boolean overridesLogo() { return false; diff --git a/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java b/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java index 6e131fe..f5738da 100644 --- a/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java +++ b/G-Earth/src/main/java/gearth/ui/themes/LightTheme.java @@ -11,6 +11,11 @@ public class LightTheme implements Theme { return "G-Earth"; } + @Override + public boolean isDark() { + return false; + } + @Override public boolean overridesLogo() { return true; diff --git a/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java b/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java index abf3078..8d25128 100644 --- a/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java +++ b/G-Earth/src/main/java/gearth/ui/themes/TanjiTheme.java @@ -11,6 +11,11 @@ public class TanjiTheme implements Theme { return "Tanji"; } + @Override + public boolean isDark() { + return false; + } + @Override public boolean overridesLogo() { return false; diff --git a/G-Earth/src/main/java/gearth/ui/themes/Theme.java b/G-Earth/src/main/java/gearth/ui/themes/Theme.java index ee50c28..73460d8 100644 --- a/G-Earth/src/main/java/gearth/ui/themes/Theme.java +++ b/G-Earth/src/main/java/gearth/ui/themes/Theme.java @@ -5,6 +5,7 @@ public interface Theme { String title(); String internalName(); + boolean isDark(); boolean overridesLogo(); boolean overridesTitle(); From 64dea6fc0fa924d34e0469d43075bf4b9eeff596 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 04:49:35 +0100 Subject: [PATCH 20/22] renames --- .../InternalExtensionFormBuilder.java | 80 ------------------- .../InternalExtensionFormCreator.java | 10 +++ .../InternalExtensionFormLauncher.java | 76 +++++++++++++++++- .../simple/SimpleExtensionProducer.java | 8 +- ...ncher.java => GExtensionStoreCreator.java} | 4 +- ...ggerLauncher.java => UiLoggerCreator.java} | 7 +- .../loggerdisplays/PacketLoggerFactory.java | 8 +- 7 files changed, 95 insertions(+), 98 deletions(-) delete mode 100644 G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java create mode 100644 G-Earth/src/main/java/gearth/extensions/InternalExtensionFormCreator.java rename G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/{GExtensionStoreLauncher.java => GExtensionStoreCreator.java} (91%) rename G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/{UiLoggerLauncher.java => UiLoggerCreator.java} (84%) diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java deleted file mode 100644 index e7b65be..0000000 --- a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java +++ /dev/null @@ -1,80 +0,0 @@ -package gearth.extensions; - -import gearth.GEarth; -import gearth.services.extension_handler.extensions.GEarthExtension; -import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerObserver; -import javafx.application.Platform; -import javafx.stage.Stage; - -public class InternalExtensionFormBuilder, T extends ExtensionForm> { - - public T launch(L launcher, ExtensionProducerObserver observer) { - try { - Stage stage = new Stage(); - T extensionForm = launcher.createForm(stage); - - ExtensionInfo extInfo = extensionForm.getClass().getAnnotation(ExtensionInfo.class); - - InternalExtension internalExtension = new InternalExtension() { - @Override - protected void initExtension() { - extensionForm.initExtension(); - } - - @Override - protected void onClick() { - extensionForm.onClick(); - } - - @Override - protected void onStartConnection() { - extensionForm.onStartConnection(); - } - - @Override - protected void onEndConnection() { - extensionForm.onEndConnection(); - } - - @Override - protected ExtensionInfo getInfoAnnotations() { - return extInfo; - } - - @Override - protected boolean canLeave() { - return extensionForm.canLeave(); - } - - @Override - protected boolean canDelete() { - return extensionForm.canDelete(); - } - }; - extensionForm.hostServices = GEarth.main.getHostServices(); - extensionForm.extension = internalExtension; - extensionForm.primaryStage = stage; - - extensionForm.fieldsInitialized.fireEvent(); - GEarthExtension gEarthExtension = new InternalExtensionBuilder(internalExtension); - observer.onExtensionProduced(gEarthExtension); - - - Platform.setImplicitExit(false); - - stage.setOnCloseRequest(event -> { - event.consume(); - Platform.runLater(() -> { - stage.hide(); - extensionForm.onHide(); - }); - }); - - return extensionForm; - } catch (Exception e) { - e.printStackTrace(); - } - - return null; - } -} diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormCreator.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormCreator.java new file mode 100644 index 0000000..8637227 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormCreator.java @@ -0,0 +1,10 @@ +package gearth.extensions; + +import javafx.stage.Stage; + +public abstract class InternalExtensionFormCreator { + + // creates an ExtensionForm object and initializes the JavaFX application + public abstract T createForm(Stage primaryStage) throws Exception; + +} diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormLauncher.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormLauncher.java index a6a2d74..ecb8ff2 100644 --- a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormLauncher.java +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormLauncher.java @@ -1,10 +1,80 @@ package gearth.extensions; +import gearth.GEarth; +import gearth.services.extension_handler.extensions.GEarthExtension; +import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerObserver; +import javafx.application.Platform; import javafx.stage.Stage; -public abstract class InternalExtensionFormLauncher { +public class InternalExtensionFormLauncher, T extends ExtensionForm> { - // creates an ExtensionForm object and initializes the JavaFX application - public abstract T createForm(Stage primaryStage) throws Exception; + public T launch(L launcher, ExtensionProducerObserver observer) { + try { + Stage stage = new Stage(); + T extensionForm = launcher.createForm(stage); + ExtensionInfo extInfo = extensionForm.getClass().getAnnotation(ExtensionInfo.class); + + InternalExtension internalExtension = new InternalExtension() { + @Override + protected void initExtension() { + extensionForm.initExtension(); + } + + @Override + protected void onClick() { + extensionForm.onClick(); + } + + @Override + protected void onStartConnection() { + extensionForm.onStartConnection(); + } + + @Override + protected void onEndConnection() { + extensionForm.onEndConnection(); + } + + @Override + protected ExtensionInfo getInfoAnnotations() { + return extInfo; + } + + @Override + protected boolean canLeave() { + return extensionForm.canLeave(); + } + + @Override + protected boolean canDelete() { + return extensionForm.canDelete(); + } + }; + extensionForm.hostServices = GEarth.main.getHostServices(); + extensionForm.extension = internalExtension; + extensionForm.primaryStage = stage; + + extensionForm.fieldsInitialized.fireEvent(); + GEarthExtension gEarthExtension = new InternalExtensionBuilder(internalExtension); + observer.onExtensionProduced(gEarthExtension); + + + Platform.setImplicitExit(false); + + stage.setOnCloseRequest(event -> { + event.consume(); + Platform.runLater(() -> { + stage.hide(); + extensionForm.onHide(); + }); + }); + + return extensionForm; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } } diff --git a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/SimpleExtensionProducer.java b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/SimpleExtensionProducer.java index 07219a5..c9b3cf0 100644 --- a/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/SimpleExtensionProducer.java +++ b/G-Earth/src/main/java/gearth/services/extension_handler/extensions/implementations/simple/SimpleExtensionProducer.java @@ -1,10 +1,10 @@ package gearth.services.extension_handler.extensions.implementations.simple; -import gearth.extensions.InternalExtensionFormBuilder; +import gearth.extensions.InternalExtensionFormLauncher; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducer; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerObserver; import gearth.services.internal_extensions.extensionstore.GExtensionStore; -import gearth.services.internal_extensions.extensionstore.GExtensionStoreLauncher; +import gearth.services.internal_extensions.extensionstore.GExtensionStoreCreator; public class SimpleExtensionProducer implements ExtensionProducer { @@ -14,8 +14,8 @@ public class SimpleExtensionProducer implements ExtensionProducer { // uncomment the next line if you want to see an embedded example extension in G-Earth // observer.onExtensionProduced(new ExampleExtension()); - new InternalExtensionFormBuilder() - .launch(new GExtensionStoreLauncher(), observer); + new InternalExtensionFormLauncher() + .launch(new GExtensionStoreCreator(), observer); } } diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreCreator.java similarity index 91% rename from G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreCreator.java index ed136f8..c5df82e 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreLauncher.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/extensionstore/GExtensionStoreCreator.java @@ -1,7 +1,7 @@ package gearth.services.internal_extensions.extensionstore; import gearth.GEarth; -import gearth.extensions.InternalExtensionFormLauncher; +import gearth.extensions.InternalExtensionFormCreator; import gearth.services.internal_extensions.extensionstore.application.GExtensionStoreController; import gearth.ui.GEarthController; import javafx.fxml.FXMLLoader; @@ -10,7 +10,7 @@ import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.stage.Stage; -public class GExtensionStoreLauncher extends InternalExtensionFormLauncher { +public class GExtensionStoreCreator extends InternalExtensionFormCreator { @Override public GExtensionStore createForm(Stage stage) throws Exception { diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerCreator.java similarity index 84% rename from G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerCreator.java index 0048ce2..43f43ce 100644 --- a/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerLauncher.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerCreator.java @@ -1,9 +1,6 @@ package gearth.services.internal_extensions.uilogger; -import gearth.GEarth; -import gearth.extensions.InternalExtensionFormLauncher; -import gearth.ui.titlebar.DefaultTitleBarConfig; -import gearth.ui.titlebar.TitleBarController; +import gearth.extensions.InternalExtensionFormCreator; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; @@ -11,7 +8,7 @@ import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; -public class UiLoggerLauncher extends InternalExtensionFormLauncher { +public class UiLoggerCreator extends InternalExtensionFormCreator { @Override public UiLogger createForm(Stage stage) throws Exception { UiLogger uiLogger = new UiLogger(); diff --git a/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java index b4c93a9..1a190b8 100644 --- a/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java +++ b/G-Earth/src/main/java/gearth/ui/subforms/logger/loggerdisplays/PacketLoggerFactory.java @@ -1,13 +1,13 @@ package gearth.ui.subforms.logger.loggerdisplays; import gearth.GEarth; -import gearth.extensions.InternalExtensionFormBuilder; +import gearth.extensions.InternalExtensionFormLauncher; import gearth.misc.OSValidator; import gearth.services.extension_handler.ExtensionHandler; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducer; import gearth.services.extension_handler.extensions.extensionproducers.ExtensionProducerObserver; import gearth.services.internal_extensions.uilogger.UiLogger; -import gearth.services.internal_extensions.uilogger.UiLoggerLauncher; +import gearth.services.internal_extensions.uilogger.UiLoggerCreator; /** * Created by Jonas on 04/04/18. @@ -40,8 +40,8 @@ public class PacketLoggerFactory implements ExtensionProducer { @Override public void startProducing(ExtensionProducerObserver observer) { if (usesUIlogger()) { - uiLogger = new InternalExtensionFormBuilder() - .launch(new UiLoggerLauncher(), observer); + uiLogger = new InternalExtensionFormLauncher() + .launch(new UiLoggerCreator(), observer); } } } From f5e99924deaec93c2f5ffb461469782c77bb0128 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Wed, 16 Feb 2022 17:32:54 +0100 Subject: [PATCH 21/22] auto background --- .../main/java/gearth/ui/titlebar/TitleBarController.java | 5 +++-- .../main/resources/gearth/ui/themes/G-Earth/styling.css | 6 +++++- .../resources/gearth/ui/themes/G-Earth_Dark/styling.css | 7 +++++-- .../src/main/resources/gearth/ui/themes/Tanji/styling.css | 8 ++++++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java index a89b69f..aeefe0d 100644 --- a/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java +++ b/G-Earth/src/main/java/gearth/ui/titlebar/TitleBarController.java @@ -78,8 +78,6 @@ public class TitleBarController { controller.stage = stage; controller.config = config; stage.initStyle(StageStyle.TRANSPARENT); - stage.getScene().setFill(Color.TRANSPARENT); - stage.getScene().getRoot().getStyleClass().add("root-node"); stage.titleProperty().addListener((i) -> controller.setTitle(stage.getTitle())); controller.setTitle(stage.getTitle()); @@ -88,6 +86,9 @@ public class TitleBarController { controller.updateIcon(); Platform.runLater(() -> { + stage.getScene().setFill(Color.TRANSPARENT); + stage.getScene().getRoot().getStyleClass().add("root-node"); + controller.themeBtn.setVisible(config.displayThemePicker()); if (!config.displayMinimizeButton()) { ((GridPane) controller.minimizeBtn.getParent()).getChildren().remove(controller.minimizeBtn); diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index e7a6169..9c14574 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -9,7 +9,11 @@ .themed-background { -fx-background-color: white; - -fx-background-radius: 4; +} + +.root-node > * { + -fx-background-color: white; + -fx-background-radius: 0 0 10 10; } .button,.menu-button,.toggle-button,.split-menu-button { diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index f1f19f7..de587a2 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -10,7 +10,11 @@ .themed-background { -fx-background-color: #363636; - -fx-background-radius: 4; +} + +.root-node > * { + -fx-background-color: #363636; + -fx-background-radius: 0 0 10 10; } .button,.menu-button,.toggle-button,.split-menu-button { @@ -1011,7 +1015,6 @@ VBox > .split-menu-button.last > .arrow-button { /* Error window */ .dialog-pane { -fx-background-color: #333333; - -fx-background-radius: 0; } .dialog-pane:header .header-panel { diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index d0aa2a2..5b99078 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -7,9 +7,13 @@ -fx-border-width: 0 1 1 1; } -.themed-background { +.themed-background{ -fx-background-color: white; - -fx-background-radius: 4; +} + +.root-node > * { + -fx-background-color: white; + -fx-background-radius: 0 0 10 10; } .button,.menu-button,.toggle-button,.split-menu-button { From ee923df8a33b98b930e97b6038d9681c5964d1e4 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Thu, 17 Feb 2022 01:03:17 +0100 Subject: [PATCH 22/22] final touches theme --- .../gearth/ui/themes/G-Earth/styling.css | 3 + .../gearth/ui/themes/G-Earth_Dark/styling.css | 55 +++++++++++++++++++ .../gearth/ui/themes/Tanji/styling.css | 5 +- 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css index 9c14574..16ec23b 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth/styling.css @@ -10,6 +10,9 @@ .themed-background { -fx-background-color: white; } +.themed-background2 { + -fx-background-color: #f4f4f4; +} .root-node > * { -fx-background-color: white; diff --git a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css index de587a2..fd0babd 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/G-Earth_Dark/styling.css @@ -11,6 +11,9 @@ .themed-background { -fx-background-color: #363636; } +.themed-background2 { + -fx-background-color: #222222; +} .root-node > * { -fx-background-color: #363636; @@ -1057,4 +1060,56 @@ VBox > .split-menu-button.last > .arrow-button { .not-corrupted-label { -fx-fill: #8cff8c; +} + +.table-view { + -fx-background-color: rgba(20, 20, 20, 0.4); +} + +.table-view .table-cell{ + -fx-text-fill: #f0f0f0; +} + +.table-row-cell{ + -fx-background-color: #313131; +} + + +.table-view .column-header { + -fx-background-color: #212121; +} + +.table-view .table-cell{ + -fx-border-color: #262626; + -fx-border-width: 0.5; +} + +.table-row-cell:selected, .list-cell:selected { + -fx-background-color: #364349; +} + +.table-view:focused .table-row-cell:selected, .list-view:focused .list-cell:selected { + -fx-background-color: #3d5b69; +} + +.spinner .increment-arrow-button, +.spinner .decrement-arrow-button { + -fx-body-color: #262626; +} + +.spinner .increment-arrow-button .increment-arrow, +.spinner .decrement-arrow-button .decrement-arrow { + -fx-background-color: #d7d7d7; +} + +.slider .track { + -fx-background-color: #222222; + -fx-border-radius: 5; + -fx-border-color: rgba(240, 240, 240, 0.8); +} + +.slider .thumb { + -fx-background-color: #222222; + -fx-border-radius: 10; + -fx-border-color: rgba(240, 240, 240, 0.8); } \ No newline at end of file diff --git a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css index 5b99078..b93c57d 100644 --- a/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css +++ b/G-Earth/src/main/resources/gearth/ui/themes/Tanji/styling.css @@ -7,9 +7,12 @@ -fx-border-width: 0 1 1 1; } -.themed-background{ +.themed-background { -fx-background-color: white; } +.themed-background2 { + -fx-background-color: #f4f4f4; +} .root-node > * { -fx-background-color: white;