From 8dd0c2944e5f3177edd17978fa5b81b74d274062 Mon Sep 17 00:00:00 2001 From: Farnam Jahangard Date: Mon, 18 May 2026 20:59:33 +0330 Subject: [PATCH] + finished the Controller, Main and Launcher class + modified pricing.fxml --- pom.xml | 2 +- src/main/java/workshop/Controller.java | 33 ++++++++++++++++++------ src/main/java/workshop/Launcher.java | 2 +- src/main/java/workshop/Main.java | 12 ++++++--- src/main/resources/workshop/pricing.fxml | 6 ++--- 5 files changed, 39 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 8fb278a..5f182b8 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ 21 21 UTF-8 - 21 + 21.0.3 diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index 070b56f..ad8fbdc 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,41 +1,58 @@ package workshop; import javafx.fxml.FXML; +import javafx.scene.control.Alert; import javafx.scene.control.Label; import javafx.scene.control.Button; public class Controller { + @FXML public Label basicPrice; + @FXML public Label proPrice; @FXML private Label titleLabel; @FXML private Button themeToggle; private boolean isDark = true; - // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. + @FXML + public void initialize(){ + basicPrice.setText("$119.99 per month"); + proPrice.setText("$299.99 per month"); + } // TODO: (Optional:For Practice) Make the plan price go 1 dollar up each time user clicks on the shop button. @FXML private void buyBasic() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Bought the basic plan.", Alert.AlertType.INFORMATION); } @FXML private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Bought the pro plan.", Alert.AlertType.INFORMATION); } @FXML private void buyEnterprise() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Bought the enterprise plan.", Alert.AlertType.INFORMATION); } @FXML private void toggleTheme() { - // 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" + 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"); + } } - private void showAlert(String message) { - // TODO: Create a new Alert of type INFORMATION with the given message and display it + private void showAlert(String message, Alert.AlertType alertType) { + Alert alert = new Alert(alertType); + 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..4087de9 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -1,13 +1,19 @@ 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("style.css").toExternalForm()); + + stage.setTitle("Pricing Plans"); + stage.setScene(scene); + stage.show(); } } diff --git a/src/main/resources/workshop/pricing.fxml b/src/main/resources/workshop/pricing.fxml index a9b03f8..26d492f 100644 --- a/src/main/resources/workshop/pricing.fxml +++ b/src/main/resources/workshop/pricing.fxml @@ -16,15 +16,15 @@ -