From 512393bcba92d93c10eaa13cb1c67ee3339e1607 Mon Sep 17 00:00:00 2001 From: Amir mohammad Date: Sun, 14 Jun 2026 16:52:44 +0330 Subject: [PATCH] Complete JavaFX pricing plans workshop --- src/.idea/.gitignore | 10 ++++++++++ src/.idea/misc.xml | 6 ++++++ src/.idea/modules.xml | 8 ++++++++ src/.idea/vcs.xml | 6 ++++++ src/main/java/workshop/Controller.java | 23 ++++++++++++++++++++--- src/main/java/workshop/Launcher.java | 2 +- src/main/java/workshop/Main.java | 11 ++++++++--- src/main/resources/workshop/pricing.fxml | 4 ++-- 8 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 src/.idea/.gitignore create mode 100644 src/.idea/misc.xml create mode 100644 src/.idea/modules.xml create mode 100644 src/.idea/vcs.xml diff --git a/src/.idea/.gitignore b/src/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/src/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml new file mode 100644 index 0000000..a20905f --- /dev/null +++ b/src/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/.idea/modules.xml b/src/.idea/modules.xml new file mode 100644 index 0000000..d3c5109 --- /dev/null +++ b/src/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/.idea/vcs.xml b/src/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/src/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index 070b56f..76c6790 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,6 +1,7 @@ package workshop; import javafx.fxml.FXML; +import javafx.scene.control.Alert; import javafx.scene.control.Label; import javafx.scene.control.Button; @@ -8,7 +9,7 @@ public class Controller { @FXML private Label titleLabel; @FXML private Button themeToggle; - private boolean isDark = true; + private boolean isDark = false; // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. @@ -17,25 +18,41 @@ public class Controller { @FXML private void buyBasic() { // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Basic plan Selected"); } @FXML private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Pro plan Selected"); } @FXML private void buyEnterprise() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Enterprise plan Selected"); } @FXML private void toggleTheme() { + isDark = !isDark; + + themeToggle.getScene().getStylesheets().clear(); + + if(isDark) { + themeToggle.getScene().getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + themeToggle.setText("Switch to Light Mode"); + } + else { + themeToggle.getScene().getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + themeToggle.setText("Switch to Dark Mode"); + } // TODO: Toggle the isDark flag. If dark, switch to style.css and set button text to "Switch to Light Mode" // TODO: If light, switch to light.css and set button text to "Switch to Dark Mode" } private void showAlert(String message) { // TODO: Create a new Alert of type INFORMATION with the given message and display it + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setHeaderText(message); + alert.show(); } } diff --git a/src/main/java/workshop/Launcher.java b/src/main/java/workshop/Launcher.java index 0f82aeb..9f5e06f 100644 --- a/src/main/java/workshop/Launcher.java +++ b/src/main/java/workshop/Launcher.java @@ -4,6 +4,6 @@ import javafx.application.Application; public class Launcher { public static void main(String[] args) { - // TODO: Launch the JavaFX application by calling Application.launch(Main.class) + Application.launch(Main.class); } } diff --git a/src/main/java/workshop/Main.java b/src/main/java/workshop/Main.java index d6cd3fd..3fff6cd 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -1,13 +1,18 @@ package workshop; import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) throws Exception { - // TODO: Load the FXML file using FXMLLoader.load() and get the Parent root - // TODO: Create a Scene with the root (width=750, height=450) and add the stylesheet "style.css" - // TODO: Set the stage title to "Pricing Plans", set the scene, and call stage.show() + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("pricing.fxml")); + Scene scene = new Scene(fxmlLoader.load(), 750 , 450); + scene.getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + stage.setScene(scene); + stage.setTitle("Pricing Plans"); + stage.show(); } } diff --git a/src/main/resources/workshop/pricing.fxml b/src/main/resources/workshop/pricing.fxml index a9b03f8..da3f80a 100644 --- a/src/main/resources/workshop/pricing.fxml +++ b/src/main/resources/workshop/pricing.fxml @@ -6,12 +6,12 @@ - +