From a0baa6ebf13b6a518b90e7b1614f5184fb87d416 Mon Sep 17 00:00:00 2001 From: mohammadreza Date: Thu, 21 May 2026 04:16:15 -0700 Subject: [PATCH] implement Controller.java --- src/main/java/workshop/Controller.java | 63 ++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index 070b56f..b9d44a7 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,41 +1,88 @@ package workshop; import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; import javafx.scene.control.Label; import javafx.scene.control.Button; public class Controller { + + @FXML private Label BasicPriceLabel; + @FXML private Label ProPriceLabel; @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 + private void initialize() { + BasicPriceLabel.setText("$12.99 / month"); + ProPriceLabel.setText("$21.99 / month"); + } + @FXML + private void updatePrice(Label label) { + + String text = label.getText(); + + String[] parts = text.replace("$", "").split("/"); + + double price = Double.parseDouble(parts[0].trim()); + + price = price + 1; + + label.setText("$" + price + " / 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("Basic plan selected"); + updatePrice(BasicPriceLabel); } @FXML private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Pro plan selected"); + updatePrice(ProPriceLabel); } @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() { - // 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; + + var scene = themeToggle.getScene(); + scene.getStylesheets().clear(); + + if (isDark) { + + var css = getClass().getResource("style.css"); + if (css != null) { + scene.getStylesheets().add(css.toExternalForm()); + } + + themeToggle.setText("Switch to Light Mode"); + + } else { + + var css = getClass().getResource("light.css"); + if (css != null) { + scene.getStylesheets().add(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 + + Alert alert = new Alert(Alert.AlertType.INFORMATION, message, new ButtonType("ok")); + alert.show(); } }