diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index 070b56f..2440bc4 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,41 +1,85 @@ package workshop; import javafx.fxml.FXML; -import javafx.scene.control.Label; +import javafx.scene.control.Alert; +import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.Scene; -public class Controller { - @FXML private Label titleLabel; +public class Controller +{ + + @FXML private Label priceBasic; + @FXML private Label pricePro; + @FXML private Label priceEnterprise; @FXML private Button themeToggle; + private double basicAmount = 9.99; + private double proAmount = 19.99; private boolean isDark = true; - // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. - - - // 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 + public void initialize() + { + updatePricesUI(); + } + + private void updatePricesUI() + { + if (priceBasic != null) priceBasic.setText(String.format("$%.2f / month", basicAmount)); + if (pricePro != null) pricePro.setText(String.format("$%.2f / month", proAmount)); } @FXML - private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + private void toggleTheme() + { + Scene scene = themeToggle.getScene(); + if (scene == null) return; + + scene.getStylesheets().clear(); + isDark = !isDark; + + if (isDark) + { + scene.getStylesheets().add(getClass().getResource("/workshop/style.css").toExternalForm()); + themeToggle.setText("Switch to Light Mode"); + } + else + { + scene.getStylesheets().add(getClass().getResource("/workshop/light.css").toExternalForm()); + themeToggle.setText("Switch to Dark Mode"); + } } @FXML - private void buyEnterprise() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + private void buyBasic() + { + showPaymentAlert("Basic Plan"); + basicAmount += 1.0; + updatePricesUI(); } @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" + private void buyPro() + { + showPaymentAlert("Pro Plan"); + proAmount += 1.0; + updatePricesUI(); } - private void showAlert(String message) { - // TODO: Create a new Alert of type INFORMATION with the given message and display it + @FXML + private void buyEnterprise() + { + showPaymentAlert("Enterprise Plan"); + } + + private void showPaymentAlert(String planName) + { + Alert alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Payment Process"); + alert.setHeaderText(null); + alert.setContentText("You have selected the " + planName + ". Proceeding to payment..."); + alert.showAndWait(); } } diff --git a/src/main/java/workshop/Launcher.java b/src/main/java/workshop/Launcher.java index 0f82aeb..7215f6d 100644 --- a/src/main/java/workshop/Launcher.java +++ b/src/main/java/workshop/Launcher.java @@ -2,8 +2,10 @@ package workshop; import javafx.application.Application; -public class Launcher { - public static void main(String[] args) { - // TODO: Launch the JavaFX application by calling Application.launch(Main.class) +public class Launcher +{ + public static void main(String[] args) + { + Application.launch(Main.class, args); } -} +} \ No newline at end of file diff --git a/src/main/java/workshop/Main.java b/src/main/java/workshop/Main.java index d6cd3fd..cee33e7 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -1,13 +1,36 @@ package workshop; import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.stage.Stage; -public class Main extends Application { +import java.net.URL; + +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() + public void start(Stage stage) throws Exception + { + URL fxmlUrl = getClass().getResource("/workshop/pricing.fxml"); + if (fxmlUrl == null) + { + throw new RuntimeException("pricing.fxml not found in resources/workshop"); + } + + Parent root = FXMLLoader.load(fxmlUrl); + + Scene scene = new Scene(root, 750, 450); + + URL cssUrl = getClass().getResource("/workshop/style.css"); + if (cssUrl != null) + { + scene.getStylesheets().add(cssUrl.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..33d2aba 100644 --- a/src/main/resources/workshop/pricing.fxml +++ b/src/main/resources/workshop/pricing.fxml @@ -17,21 +17,21 @@