From 7e31f9a9699ae5a38903b481ecd6a1829e672271 Mon Sep 17 00:00:00 2001 From: Mobina Date: Mon, 18 May 2026 23:28:32 +0330 Subject: [PATCH 1/2] deveop --- .idea/vcs.xml | 3 ++- src/main/java/workshop/Controller.java | 31 +++++++++++++++++++++++++- src/main/java/workshop/Launcher.java | 1 + src/main/java/workshop/Main.java | 13 +++++++++++ 4 files changed, 46 insertions(+), 2 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index dcb6b8c..8e9463f 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,5 +2,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..b8827d2 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,41 +1,70 @@ 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 private Label titleLabel; @FXML private Button themeToggle; + @FXML public Label Pro; + @FXML public Label Basic; + @FXML public Label Enterprise; + private boolean isDark = true; // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. + @FXML + public void initialize() + { + Pro.setText("$12.00/ month"); + Basic.setText("$10.99/ month"); + Enterprise.setText("$21.99/ 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", Alert.AlertType.INFORMATION); } @FXML private void buyPro() { // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Pro plan selected", Alert.AlertType.WARNING); } @FXML private void buyEnterprise() { // TODO: Call showAlert() with a message indicating the user entered the payment gateway + showAlert("Enterprise plan selected", Alert.AlertType.CONFIRMATION); } @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.setText("switch to light mode"); + themeToggle.getScene().getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + } + else + { + themeToggle.setText("switch to dark mode"); + themeToggle.getScene().getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + } } - private void showAlert(String message) { + private void showAlert(String message, Alert.AlertType alertType) { // TODO: Create a new Alert of type INFORMATION with the given message and display it + Alert alert=new Alert(Alert.AlertType.INFORMATION,"Info Alert"); } } diff --git a/src/main/java/workshop/Launcher.java b/src/main/java/workshop/Launcher.java index 0f82aeb..5ca0dfa 100644 --- a/src/main/java/workshop/Launcher.java +++ b/src/main/java/workshop/Launcher.java @@ -5,5 +5,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..a9aad12 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -1,11 +1,24 @@ package workshop; import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; import javafx.stage.Stage; +import java.util.Scanner; + public class Main extends Application { @Override public void start(Stage stage) throws Exception { + FXMLLoader fxmlLoader= new FXMLLoader(getClass().getResource("pricing fxml")); + + Scene scene= new Scene(fxmlLoader.load(),700,450); + scene.getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + + stage.setScene(scene); + stage.setTitle("Pricing Plans"); + stage.show(); + stage.setResizable(false); // 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() -- 2.54.0 From 849293430eb9d8772d35d7747fcf30d8b700a34d Mon Sep 17 00:00:00 2001 From: Mobina Date: Wed, 24 Jun 2026 08:31:49 +0330 Subject: [PATCH 2/2] Debug the controller part --- .idea/vcs.xml | 1 - src/main/java/workshop/Controller.java | 83 +++++++++++++++----------- src/main/java/workshop/Main.java | 3 +- 3 files changed, 51 insertions(+), 36 deletions(-) diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 8e9463f..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ - \ No newline at end of file diff --git a/src/main/java/workshop/Controller.java b/src/main/java/workshop/Controller.java index b8827d2..b72a51a 100644 --- a/src/main/java/workshop/Controller.java +++ b/src/main/java/workshop/Controller.java @@ -1,70 +1,85 @@ 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; +import javafx.scene.control.Label; + +import java.net.URL; public class Controller { - @FXML private Label titleLabel; - @FXML private Button themeToggle; - @FXML public Label Pro; - @FXML public Label Basic; - @FXML public Label Enterprise; + @FXML + private Label titleLabel; + + @FXML + private Button themeToggle; + + @FXML + private Label basicPrice; + + @FXML + private Label proPrice; + + @FXML + private Label enterprisePrice; private boolean isDark = true; - // TODO: (Optional:For Practice) Create initialize function and use it to set prices during runtime. @FXML - public void initialize() - { - Pro.setText("$12.00/ month"); - Basic.setText("$10.99/ month"); - Enterprise.setText("$21.99/ month"); + public void initialize() { + basicPrice.setText("$10.99 / month"); + proPrice.setText("$12.00 / month"); + enterprisePrice.setText("$21.99 / 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", Alert.AlertType.INFORMATION); } @FXML private void buyPro() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway - showAlert("Pro plan selected", Alert.AlertType.WARNING); + showAlert("Pro plan selected", Alert.AlertType.INFORMATION); } @FXML private void buyEnterprise() { - // TODO: Call showAlert() with a message indicating the user entered the payment gateway - showAlert("Enterprise plan selected", Alert.AlertType.CONFIRMATION); + showAlert("Enterprise plan selected", 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(); + isDark = !isDark; - if(isDark) - { - themeToggle.setText("switch to light mode"); - themeToggle.getScene().getStylesheets().add(getClass().getResource("style.css").toExternalForm()); + Scene scene = themeToggle.getScene(); + scene.getStylesheets().clear(); + + String cssFile; + + if (isDark) { + themeToggle.setText("Switch to Light Mode"); + cssFile = "style.css"; + } else { + themeToggle.setText("Switch to Dark Mode"); + cssFile = "light.css"; } - else - { - themeToggle.setText("switch to dark mode"); - themeToggle.getScene().getStylesheets().add(getClass().getResource("light.css").toExternalForm()); + + URL cssResource = getClass().getResource(cssFile); + + if (cssResource != null) { + scene.getStylesheets().add(cssResource.toExternalForm()); + } else { + System.out.println("CSS file not found: " + cssFile); } } private void showAlert(String message, Alert.AlertType alertType) { - // TODO: Create a new Alert of type INFORMATION with the given message and display it - Alert alert=new Alert(Alert.AlertType.INFORMATION,"Info Alert"); + Alert alert = new Alert(alertType); + alert.setTitle("Plan Selection"); + alert.setHeaderText(null); + alert.setContentText(message); + alert.showAndWait(); } -} +} \ No newline at end of file diff --git a/src/main/java/workshop/Main.java b/src/main/java/workshop/Main.java index a9aad12..961b9b7 100644 --- a/src/main/java/workshop/Main.java +++ b/src/main/java/workshop/Main.java @@ -10,7 +10,8 @@ import java.util.Scanner; public class Main extends Application { @Override public void start(Stage stage) throws Exception { - FXMLLoader fxmlLoader= new FXMLLoader(getClass().getResource("pricing fxml")); + FXMLLoader fxmlLoader = + new FXMLLoader(getClass().getResource("/workshop/pricing.fxml")); Scene scene= new Scene(fxmlLoader.load(),700,450); scene.getStylesheets().add(getClass().getResource("light.css").toExternalForm()); -- 2.54.0