From 367cbacc2cda30598115e50de958c0149eb6fbfe Mon Sep 17 00:00:00 2001 From: Harry Linrui XU <xulr0820@hotmail.com> Date: Wed, 15 Mar 2023 15:18:38 +0100 Subject: [PATCH] Tried to create new controllers --- .../demo/controller/ExpenseController.java | 83 +++++++++++++++++++ .../demo/controller/MenuController.java | 62 ++++++++++++++ .../view/monthly_budget_overview.fxml | 15 ++-- 3 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java create mode 100644 src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java new file mode 100644 index 00000000..06c46ca7 --- /dev/null +++ b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java @@ -0,0 +1,83 @@ +package no.ntnu.idatt1002.demo.controller; + +import java.io.IOException; +import java.io.Serializable; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.stage.Modality; +import javafx.stage.Stage; +import no.ntnu.idatt1002.demo.data.Economics.Expense; +import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory; + +public class ExpenseController implements Initializable { + + @FXML + private Button add; + + @FXML + private ComboBox<?> show; + + @FXML + private TableColumn<Expense, Double> amount; + + @FXML + private TableColumn<Expense, ExpenseCategory> category; + + @FXML + private TableColumn<Expense, String> date; + + @FXML + private TableColumn<Expense, String> description; + + @FXML + private TableView<Expense> expenseTableView; + + ObservableList<Expense> expenses = FXCollections.observableArrayList( + new Expense("", 1000.00, true, ExpenseCategory.FOOD, "1/1/23") + ); + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + amount.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount")); + category.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category")); + date.setCellValueFactory(new PropertyValueFactory<Expense, String>("date")); + description.setCellValueFactory(new PropertyValueFactory<Expense, String>("description")); + + expenseTableView.setItems(expenses); + } + + public void addExpense(ActionEvent event) throws IOException { + FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/addExpense.fxml")); + Scene newScene = new Scene(loader.load()); + Stage newStage = new Stage(); + newStage.setScene(newScene); + newStage.setResizable(false); + newStage.initModality(Modality.APPLICATION_MODAL); + + newStage.show(); + } + + public void editExpense(ActionEvent event) throws IOException { + + } + + public void deleteExpense(ActionEvent event) throws IOException { + + } + + public void switchIncome(ActionEvent event) { + } +} diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java new file mode 100644 index 00000000..87469182 --- /dev/null +++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java @@ -0,0 +1,62 @@ +package no.ntnu.idatt1002.demo.controller; + +import java.awt.Menu; +import java.awt.event.ActionEvent; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.fxml.FXML; +import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.DatePicker; +import javafx.scene.control.ProgressBar; +import javafx.stage.Stage; + +public class MenuController implements Initializable { + + @FXML + private Button addExpense; + + @FXML + private DatePicker date; + + @FXML + private Button food; + + @FXML + private Button overview; + + @FXML + private ProgressBar progressbar; + + + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + + } + + @FXML + public void switchStartMenu(ActionEvent event) throws IOException { + FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/FirstMenu.fxml")); + Parent root = loader.load(); + Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow(); + Scene scene = new Scene(root); + stage.setScene(scene); + stage.show(); + } + + + public void switchExpenses(ActionEvent event) throws IOException { + FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Expenses.fxml")); + Parent root = loader.load(); + Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow(); + Scene scene = new Scene(root); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/main/resources/view/monthly_budget_overview.fxml b/src/main/resources/view/monthly_budget_overview.fxml index 042c1f19..e3c5d422 100644 --- a/src/main/resources/view/monthly_budget_overview.fxml +++ b/src/main/resources/view/monthly_budget_overview.fxml @@ -19,8 +19,7 @@ <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?> - -<AnchorPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1"> +<AnchorPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.MenuController"> <children> <ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true"> <cursor> @@ -45,7 +44,7 @@ <children> <VBox alignment="BOTTOM_RIGHT" GridPane.columnSpan="2"> <children> - <DatePicker /> + <DatePicker fx:id="date" /> <HBox alignment="BOTTOM_CENTER" prefHeight="28.0" prefWidth="574.0"> <children> <Label text="5000kr left" /> @@ -55,12 +54,12 @@ </VBox> <AnchorPane GridPane.columnSpan="2" GridPane.rowIndex="1"> <children> - <ProgressBar layoutX="10.0" layoutY="14.0" prefHeight="40.0" prefWidth="554.0" progress="0.72" /> + <ProgressBar fx:id="progressbar" layoutX="10.0" layoutY="14.0" prefHeight="40.0" prefWidth="554.0" progress="0.72" /> </children> </AnchorPane> <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="50.0" GridPane.columnSpan="2" GridPane.rowIndex="2"> <children> - <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Food"> + <Button fx:id="food" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Food"> <graphic> <ImageView fitHeight="63.0" fitWidth="87.0" pickOnBounds="true"> <cursor> @@ -72,7 +71,7 @@ </ImageView> </graphic> </Button> - <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Add expense"> + <Button fx:id="addExpense" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Add expense"> <graphic> <ImageView fitHeight="79.0" fitWidth="87.0" pickOnBounds="true"> <cursor> @@ -84,7 +83,7 @@ </ImageView> </graphic> </Button> - <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Overview"> + <Button fx:id="overview" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Overview"> <graphic> <ImageView fitHeight="63.0" fitWidth="87.0" pickOnBounds="true"> <cursor> @@ -119,7 +118,7 @@ <top> <HBox prefHeight="51.0" prefWidth="600.0" BorderPane.alignment="CENTER"> <children> - <Button mnemonicParsing="false" onAction="#switchIncome" text="Return "> + <Button mnemonicParsing="false" text="Return "> <opaqueInsets> <Insets left="100.0" /> </opaqueInsets> -- GitLab