diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index 3092fab..2457a08 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,39 +1,95 @@ package workshop; import javafx.fxml.FXML; +import javafx.scene.Scene; +import javafx.scene.control.Alert; import javafx.scene.control.Label; import javafx.scene.control.Button; public class Controller { @FXML private Label titleLabel; @FXML private Button themeToggle; - + @FXML private Label basicPriceLabel; + @FXML private Label proPriceLabel; + @FXML private Label enterprisePriceLabel; private boolean isDark = true; - // TODO: (Optional) Create initialize function and use it to set prices during runtime. + //prices + private int basicPrice = 10; + private int proPrice = 20; + private int enterprisePrice = 30; + private int clickCount = 0; + + // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. + @FXML + public void initialize() { + //set prices during runtime + basicPriceLabel.setText("$" + basicPrice); + proPriceLabel.setText("$" + proPrice); + enterprisePriceLabel.setText("$" + enterprisePrice); + } + + // 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("You have entered the payment gateway for Basic Plan ($" + basicPrice + ")"); + increasePrices(); + } + + private void increasePrices() { + clickCount++; + + //After every 3 clicks, prices increase by $1. + if (clickCount % 3 == 0) { + basicPrice++; + proPrice++; + enterprisePrice++; + + //updating labels + basicPriceLabel.setText("$" + basicPrice); + proPriceLabel.setText("$" + proPrice); + enterprisePriceLabel.setText("$" + enterprisePrice); + } } @FXML private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("You have entered the payment gateway for Pro Plan ($" + proPrice + ")"); + increasePrices(); } @FXML private void buyEnterprise() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("You have entered the payment gateway for Enterprise Plan ($" + enterprisePrice + ")"); + increasePrices(); } @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" + //Get Scene from any Node (themeToggle) + Scene scene = themeToggle.getScene(); + + if (isDark) { + //Light Mode + scene.getStylesheets().clear(); + scene.getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + themeToggle.setText("Switch to Dark Mode"); + isDark = false; + } else { + //Dark Mode + scene.getStylesheets().clear(); + scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + themeToggle.setText("Switch to Light Mode"); + isDark = true; + } } 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.setTitle("Payment Gateway"); + alert.setHeaderText("Purchase Confirmation"); + alert.setContentText(message); + alert.showAndWait(); } -} +} \ No newline at end of file diff --git a/src/main/java/workshop/Launcher.java b/src/main/java/workshop/Launcher.java index 0f82aeb..8383669 100644 --- a/src/main/java/workshop/Launcher.java +++ b/src/main/java/workshop/Launcher.java @@ -6,4 +6,4 @@ public class Launcher { public static void main(String[] args) { // TODO: Launch the JavaFX application by calling Application.launch(Main.class) } -} +} \ No newline at end of file diff --git a/src/main/java/workshop/Main.java b/src/main/java/workshop/Main.java index d6cd3fd..83a75e6 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -1,13 +1,28 @@ 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 { @Override public void start(Stage stage) throws Exception { // TODO: Load the FXML file using FXMLLoader.load() and get the Parent root + Parent root = FXMLLoader.load(getClass().getResource("sample.fxml")); + // TODO: Create a Scene with the root (width=750, height=450) and add the stylesheet "style.css" + Scene scene = new Scene(root, 750, 450); + scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + // TODO: Set the stage title to "Pricing Plans", set the scene, and call stage.show() + stage.setTitle("Pricing Plans"); + stage.setScene(scene); + stage.show(); } -} + + public static void main(String[] args) { + launch(args); + } +} \ No newline at end of file