From c99629461aa0c469fa2e21b2f21200fb0d6167bc Mon Sep 17 00:00:00 2001 From: Saptarshi Sarkar Date: Tue, 25 Jun 2024 23:30:03 +0530 Subject: [PATCH] fix: implemented all the reviews --- .../java/gui/utils/UIComponentBuilder.java | 11 --- GUI/src/main/java/ui/Settings.java | 74 +++++++++++----- .../META-INF/native-image/jni-config.json | 20 ++++- .../META-INF/native-image/reflect-config.json | 15 +++- .../native-image/resource-config.json | 84 +++++++++++++++---- 5 files changed, 150 insertions(+), 54 deletions(-) diff --git a/GUI/src/main/java/gui/utils/UIComponentBuilder.java b/GUI/src/main/java/gui/utils/UIComponentBuilder.java index 4e62304f2..66be5f215 100644 --- a/GUI/src/main/java/gui/utils/UIComponentBuilder.java +++ b/GUI/src/main/java/gui/utils/UIComponentBuilder.java @@ -36,21 +36,10 @@ public Label buildLabel() { } public Label buildLabel(String text, Font font, Paint textFill) { - Label label = new Label(text); - label.setFont(font); - label.setTextFill(textFill); - return label; - } - - public Label buildLabel(String text, Font font, Paint textFill, double translateX, double translateY) { Label label = new Label(text); label.setAlignment(Pos.TOP_CENTER); label.setFont(font); label.setTextFill(textFill); - label.setTranslateY(translateY); - if (translateX != 0) { - label.setTranslateX(translateX); - } return label; } diff --git a/GUI/src/main/java/ui/Settings.java b/GUI/src/main/java/ui/Settings.java index 17e3291a4..7b5867aa0 100644 --- a/GUI/src/main/java/ui/Settings.java +++ b/GUI/src/main/java/ui/Settings.java @@ -2,11 +2,14 @@ import gui.preferences.AppSettings; import gui.support.Constants; +import javafx.geometry.HPos; import javafx.geometry.Insets; -import javafx.geometry.Pos; +import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.*; -import javafx.scene.layout.VBox; +import javafx.scene.layout.ColumnConstraints; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Priority; import javafx.scene.paint.Color; import javafx.scene.paint.LinearGradient; import javafx.scene.paint.Paint; @@ -31,6 +34,7 @@ public class Settings { private Label lblAutoPaste; private ChoiceBox themeChoiceBox; private Stage stage; + private GridPane root; private void initializeComponents() { initializeUIComponents(); @@ -49,15 +53,29 @@ private void configureScene() { stage = Constants.getStage("Settings", false); stage.setMinHeight(Constants.SCREEN_HEIGHT * .55); stage.setMinWidth(Constants.SCREEN_WIDTH * .5); - VBox root = new VBox(10); - root.setPadding(new Insets(10)); - root.setAlignment(Pos.TOP_CENTER); - root.getChildren().addAll(themeChoiceBox, autoPasteCheckbox, lblTheme, lblAutoPaste, lblSettingsHeading, selectDirectoryButton, lblDefaultDownloadDir, tfCurrentDirectory); + stage.setMaxHeight(Constants.SCREEN_HEIGHT * .6); + stage.setMaxWidth(Constants.SCREEN_WIDTH * .6); + configureLayout(); settingsScene = Constants.getScene(root); Constants.addCSS(settingsScene, Constants.LIGHT_THEME_CSS); setInitialTheme(AppSettings.GET.mainTheme()); } + private void configureLayout() { + root = new GridPane(); + ColumnConstraints column1 = new ColumnConstraints(); // For the first column, it will take 50% the width of the window + column1.setPercentWidth(50); + ColumnConstraints column2 = new ColumnConstraints(); // For the second column, it will take 50% the width of the window + column2.setPercentWidth(50); + root.getColumnConstraints().addAll(column1, column2); + root.setHgap(20); + root.setVgap(10); + root.setPadding(new Insets(10, 20, 20, 20)); + addComponents(); + setHAlignments(); + setHGrowsAlways(lblSettingsHeading, lblAutoPaste, autoPasteCheckbox, lblTheme, themeChoiceBox, lblDefaultDownloadDir, tfCurrentDirectory, selectDirectoryButton); + } + public void show() { if (stage != null && stage.isShowing()) { stage.toFront(); @@ -68,6 +86,31 @@ public void show() { } } + private void setHAlignments() { + GridPane.setHalignment(lblSettingsHeading, HPos.CENTER); + GridPane.setHalignment(lblAutoPaste, HPos.RIGHT); + GridPane.setHalignment(lblTheme, HPos.RIGHT); + GridPane.setHalignment(lblDefaultDownloadDir, HPos.RIGHT); + GridPane.setHalignment(selectDirectoryButton, HPos.CENTER); + } + + private void setHGrowsAlways(Node... nodes) { + for (Node node : nodes) { + GridPane.setHgrow(node, Priority.ALWAYS); + } + } + + private void addComponents() { + root.add(lblSettingsHeading, 0, 0, 2, 1); + root.add(lblAutoPaste, 0, 1); + root.add(autoPasteCheckbox, 1, 1); + root.add(lblTheme, 0, 2); + root.add(themeChoiceBox, 1, 2); + root.add(lblDefaultDownloadDir, 0, 3); + root.add(tfCurrentDirectory, 1, 3); + root.add(selectDirectoryButton, 1, 4, 2, 1); + } + private void setInitialTheme(String theme) { boolean isDark = theme.equals("Dark"); Constants.addCSS(settingsScene, isDark ? Constants.DARK_THEME_CSS : Constants.LIGHT_THEME_CSS); @@ -86,8 +129,6 @@ private void applyStyleToLabels(boolean isDark, Label... labels) { private void setupThemeChoice() { themeChoiceBox = new ChoiceBox<>(); themeChoiceBox.getItems().addAll("Dark Theme", "Light Theme"); - themeChoiceBox.setTranslateY(210); - themeChoiceBox.setTranslateX(130); themeChoiceBox.setValue(AppSettings.GET.mainTheme().equals("Dark") ? "Dark Theme" : "Light Theme"); themeChoiceBox.setOnAction(e -> Theme.applyTheme(themeChoiceBox.getValue().equals("Dark Theme") ? "Dark" : "Light", settingsScene, Drifty_GUI.getScene(), About.getScene(), ConfirmationDialog.getScene())); } @@ -95,31 +136,26 @@ private void setupThemeChoice() { private void createAutoPasteCheck() { autoPasteCheckbox = new CheckBox(); autoPasteCheckbox.setSelected(AppSettings.GET.mainAutoPaste()); - autoPasteCheckbox.setTranslateX(160); - autoPasteCheckbox.setTranslateY(115); autoPasteCheckbox.setMaxWidth(5.0); autoPasteCheckbox.selectedProperty().addListener(((observable, oldValue, newValue) -> AppSettings.SET.mainAutoPaste(newValue))); } private void createLabels() { Paint textFill = LinearGradient.valueOf("linear-gradient(to right, #0f0c29, #302b63, #24243e)"); - lblSettingsHeading = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Settings", Font.font("monospace", FontWeight.EXTRA_BOLD, 100), textFill, 0, -150); - lblAutoPaste = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Auto-Paste", Font.font("Arial", FontWeight.EXTRA_BOLD, 20), textFill, 0, 45); - lblTheme = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Theme", Font.font("Arial", FontWeight.EXTRA_BOLD, 20), textFill, -20, 130); - lblDefaultDownloadDir = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Default Download Directory", Font.font("Arial", FontWeight.BOLD, 20), textFill, -160, -50); - lblDefaultDownloadDir.setTranslateX(-160); + lblSettingsHeading = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Settings", Font.font("monospace", FontWeight.EXTRA_BOLD, 100), textFill); + lblAutoPaste = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Auto-Paste", Font.font("Arial", FontWeight.EXTRA_BOLD, 20), textFill); + lblTheme = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Theme", Font.font("Arial", FontWeight.EXTRA_BOLD, 20), textFill); + lblDefaultDownloadDir = UI_COMPONENT_BUILDER_INSTANCE.buildLabel("Default Download Directory", Font.font("Arial", FontWeight.BOLD, 20), textFill); } private void createTfDirectory() { tfCurrentDirectory = new TextField(UIController.form.tfDir.getText()); - tfCurrentDirectory.setMaxWidth(200); - tfCurrentDirectory.setTranslateY(-85); - tfCurrentDirectory.setTranslateX(150); + tfCurrentDirectory.setMaxWidth(Double.MAX_VALUE); + tfCurrentDirectory.setEditable(false); } private void createDirectoryButton() { selectDirectoryButton = new Button("Select Directory"); - selectDirectoryButton.setTranslateY(50); if (AppSettings.GET.mainTheme().equals("Dark")) { selectDirectoryButton.setStyle(Constants.BUTTON_RELEASED); selectDirectoryButton.setOnMousePressed(e -> selectDirectoryButton.setStyle(Constants.BUTTON_PRESSED)); diff --git a/GUI/src/main/resources/META-INF/native-image/jni-config.json b/GUI/src/main/resources/META-INF/native-image/jni-config.json index 354fa6135..ebcad8ace 100644 --- a/GUI/src/main/resources/META-INF/native-image/jni-config.json +++ b/GUI/src/main/resources/META-INF/native-image/jni-config.json @@ -64,10 +64,18 @@ "name":"com.sun.javafx.geom.Path2D", "methods":[{"name":"","parameterTypes":["int","byte[]","int","float[]","int"] }] }, +{ + "name":"java.lang.Boolean", + "fields":[{"name":"FALSE"}, {"name":"TRUE"}] +}, { "name":"java.lang.Iterable", "methods":[{"name":"iterator","parameterTypes":[] }] }, +{ + "name":"java.lang.Object", + "methods":[{"name":"equals","parameterTypes":["java.lang.Object"] }] +}, { "name":"java.lang.Runnable", "methods":[{"name":"run","parameterTypes":[] }] @@ -84,9 +92,13 @@ "name":"java.util.ArrayList", "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["int"] }, {"name":"add","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["int"] }] }, +{ + "name":"java.util.Collections", + "methods":[{"name":"unmodifiableMap","parameterTypes":["java.util.Map"] }] +}, { "name":"java.util.HashMap", - "methods":[{"name":"containsKey","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["java.lang.Object"] }, {"name":"put","parameterTypes":["java.lang.Object","java.lang.Object"] }] + "methods":[{"name":"","parameterTypes":[] }, {"name":"containsKey","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["java.lang.Object"] }, {"name":"put","parameterTypes":["java.lang.Object","java.lang.Object"] }] }, { "name":"java.util.HashSet", @@ -98,10 +110,14 @@ }, { "name":"java.util.Map", - "methods":[{"name":"containsKey","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["java.lang.Object"] }, {"name":"keySet","parameterTypes":[] }] + "methods":[{"name":"containsKey","parameterTypes":["java.lang.Object"] }, {"name":"get","parameterTypes":["java.lang.Object"] }, {"name":"keySet","parameterTypes":[] }, {"name":"put","parameterTypes":["java.lang.Object","java.lang.Object"] }] }, { "name":"java.util.Set", "methods":[{"name":"add","parameterTypes":["java.lang.Object"] }, {"name":"size","parameterTypes":[] }, {"name":"toArray","parameterTypes":["java.lang.Object[]"] }] +}, +{ + "name":"javafx.scene.paint.Color", + "methods":[{"name":"rgb","parameterTypes":["int","int","int","double"] }] } ] diff --git a/GUI/src/main/resources/META-INF/native-image/reflect-config.json b/GUI/src/main/resources/META-INF/native-image/reflect-config.json index 603c2a609..c5bae7363 100644 --- a/GUI/src/main/resources/META-INF/native-image/reflect-config.json +++ b/GUI/src/main/resources/META-INF/native-image/reflect-config.json @@ -107,6 +107,10 @@ "name":"com.sun.prism.shader.Mask_TextureSuper_Loader", "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] }, +{ + "name":"com.sun.prism.shader.Solid_Color_Loader", + "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] +}, { "name":"com.sun.prism.shader.Solid_TextureFirstPassLCD_Loader", "methods":[{"name":"loadShader","parameterTypes":["com.sun.prism.ps.ShaderFactory","java.io.InputStream"] }] @@ -131,6 +135,10 @@ "name":"com.sun.scenario.effect.impl.prism.PrRenderer", "methods":[{"name":"createRenderer","parameterTypes":["com.sun.scenario.effect.FilterContext"] }] }, +{ + "name":"com.sun.scenario.effect.impl.prism.ps.PPSBlend_SRC_INPeer", + "methods":[{"name":"","parameterTypes":["com.sun.scenario.effect.FilterContext","com.sun.scenario.effect.impl.Renderer","java.lang.String"] }] +}, { "name":"com.sun.scenario.effect.impl.prism.ps.PPSLinearConvolveShadowPeer", "methods":[{"name":"","parameterTypes":["com.sun.scenario.effect.FilterContext","com.sun.scenario.effect.impl.Renderer","java.lang.String"] }] @@ -264,6 +272,9 @@ { "name":"javafx.scene.control.Control" }, +{ + "name":"javafx.scene.control.Labeled" +}, { "name":"javafx.scene.effect.Effect" }, @@ -418,10 +429,6 @@ "name":"sun.security.rsa.RSASignature$SHA256withRSA", "methods":[{"name":"","parameterTypes":[] }] }, -{ - "name":"sun.security.rsa.RSASignature$SHA384withRSA", - "methods":[{"name":"","parameterTypes":[] }] -}, { "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", "methods":[{"name":"","parameterTypes":[] }] diff --git a/GUI/src/main/resources/META-INF/native-image/resource-config.json b/GUI/src/main/resources/META-INF/native-image/resource-config.json index a4f938af8..0f645362a 100644 --- a/GUI/src/main/resources/META-INF/native-image/resource-config.json +++ b/GUI/src/main/resources/META-INF/native-image/resource-config.json @@ -1,31 +1,43 @@ { "resources":{ "includes":[{ - "pattern":"GUI:\\QBackgrounds/DriftyMain.png\\E" + "pattern":"GUI:\\QBackgrounds/DriftyMainDark.png\\E" }, { - "pattern":"GUI:\\QButtons/Save/SaveDown.png\\E" + "pattern":"GUI:\\QBackgrounds/DriftyMainLight.png\\E" }, { - "pattern":"GUI:\\QButtons/Save/SaveUp.png\\E" + "pattern":"GUI:\\QButtons/Save/SaveDownDark.png\\E" }, { - "pattern":"GUI:\\QButtons/Start/StartDown.png\\E" + "pattern":"GUI:\\QButtons/Save/SaveDownLight.png\\E" }, { - "pattern":"GUI:\\QButtons/Start/StartUp.png\\E" + "pattern":"GUI:\\QButtons/Save/SaveUpDark.png\\E" + }, { + "pattern":"GUI:\\QButtons/Save/SaveUpLight.png\\E" + }, { + "pattern":"GUI:\\QButtons/Start/StartDownDark.png\\E" + }, { + "pattern":"GUI:\\QButtons/Start/StartDownLight.png\\E" + }, { + "pattern":"GUI:\\QButtons/Start/StartUpDark.png\\E" + }, { + "pattern":"GUI:\\QButtons/Start/StartUpLight.png\\E" }, { "pattern":"GUI:\\QCSS/Button.css\\E" }, { "pattern":"GUI:\\QCSS/CheckBox.css\\E" }, { "pattern":"GUI:\\QCSS/ContextMenu.css\\E" + }, { + "pattern":"GUI:\\QCSS/DarkTheme.css\\E" }, { "pattern":"GUI:\\QCSS/Label.css\\E" + }, { + "pattern":"GUI:\\QCSS/LightTheme.css\\E" }, { "pattern":"GUI:\\QCSS/ListView.css\\E" }, { "pattern":"GUI:\\QCSS/Menu.css\\E" }, { "pattern":"GUI:\\QCSS/ProgressBar.css\\E" - }, { - "pattern":"GUI:\\QCSS/Scene.css\\E" }, { "pattern":"GUI:\\QCSS/ScrollPane.css\\E" }, { @@ -45,7 +57,9 @@ }, { "pattern":"GUI:\\QLabels/Link.png\\E" }, { - "pattern":"GUI:\\QSplash.png\\E" + "pattern":"GUI:\\QSplashDark.png\\E" + }, { + "pattern":"GUI:\\QSplashLight.png\\E" }, { "pattern":"\\QMETA-INF/fonts.mf\\E" }, { @@ -58,8 +72,6 @@ "pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E" }, { "pattern":"\\QMETA-INF/services/java.nio.charset.spi.CharsetProvider\\E" - }, { - "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E" }, { "pattern":"\\QMETA-INF/services/java.util.prefs.PreferencesFactory\\E" }, { @@ -67,21 +79,47 @@ }, { "pattern":"\\QMETA-INF/services/javax.xml.transform.TransformerFactory\\E" }, { - "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfkc.nrm\\E" + "pattern":"\\Qcom/sun/javafx/scene/control/skin/resources/controls_en.properties\\E" }, { - "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/ubidi.icu\\E" + "pattern":"\\Qcom/sun/javafx/scene/control/skin/resources/controls_en_US.properties\\E" }, { - "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E" + "pattern":"\\Qcom/sun/javafx/tk/quantum/QuantumMessagesBundle_en.properties\\E" }, { - "pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E" + "pattern":"\\Qcom/sun/javafx/tk/quantum/QuantumMessagesBundle_en_US.properties\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt74b/nfkc.nrm\\E" }, { - "pattern":"java.base:\\Qsun/text/resources/WordBreakIteratorData\\E" + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt74b/ubidi.icu\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt74b/uprops.icu\\E" + }, { + "pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E" }, { "pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/Encodings.properties\\E" + }, { + "pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/XMLEntities.properties\\E" + }, { + "pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/XMLEntities_en.properties\\E" + }, { + "pattern":"java.xml:\\Qcom/sun/org/apache/xml/internal/serializer/XMLEntities_en_US.properties\\E" + }, { + "pattern":"java.xml:\\Qjdk/xml/internal/jdkcatalog/JDKCatalog.xml\\E" }, { "pattern":"javafx.controls:\\Qcom/sun/javafx/scene/control/skin/modena/modena.bss\\E" + }, { + "pattern":"javafx.controls:\\Qcom/sun/javafx/scene/control/skin/resources/controls.properties\\E" + }, { + "pattern":"javafx.controls:\\Qcom/sun/javafx/scene/control/skin/resources/controls_en.properties\\E" + }, { + "pattern":"javafx.controls:\\Qcom/sun/javafx/scene/control/skin/resources/controls_en_US.properties\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/glass/utils/NativeLibLoader.class\\E" + }, { + "pattern":"javafx.graphics:\\Qcom/sun/javafx/tk/quantum/QuantumMessagesBundle.properties\\E" + }, { + "pattern":"javafx.graphics:\\Qcom/sun/javafx/tk/quantum/QuantumMessagesBundle_en.properties\\E" + }, { + "pattern":"javafx.graphics:\\Qcom/sun/javafx/tk/quantum/QuantumMessagesBundle_en_US.properties\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/DrawPgram_Color.frag\\E" }, { @@ -92,6 +130,8 @@ "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/FillRoundRect_Color.frag\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/Mask_TextureSuper.frag\\E" + }, { + "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/Solid_Color.frag\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/Solid_TextureFirstPassLCD.frag\\E" }, { @@ -102,6 +142,8 @@ "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/Texture_Color.frag\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/prism/es2/glsl/Texture_LinearGradient_PAD.frag\\E" + }, { + "pattern":"javafx.graphics:\\Qcom/sun/scenario/effect/impl/es2/glsl/Blend_SRC_IN.frag\\E" }, { "pattern":"javafx.graphics:\\Qcom/sun/scenario/effect/impl/es2/glsl/LinearConvolveShadow_20.frag\\E" }, { @@ -123,12 +165,18 @@ }]}, "bundles":[{ "name":"com.sun.javafx.tk.quantum.QuantumMessagesBundle", - "locales":[""] + "locales":["en-US"] }, { "name":"com.sun.org.apache.xml.internal.serializer.XMLEntities", - "locales":[""] + "locales":["en-US"] }, { "name":"com/sun/javafx/scene/control/skin/resources/controls", - "locales":[""] + "locales":["en-US"] + }, { + "name":"sun.text.resources.cldr.FormatData", + "locales":["en", "en-US", "und"] + }, { + "name":"sun.util.resources.cldr.CalendarData", + "locales":["und"] }] }