diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/SceneController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/SceneController.java index e27ce1f0c81f6a6c144137ca9ff0c6c90fcf6d1a..88d7424f52eea7c410c9c3969e3fc5041c1a0be0 100644 --- a/src/main/java/no/ntnu/idatt1002/demo/controller/SceneController.java +++ b/src/main/java/no/ntnu/idatt1002/demo/controller/SceneController.java @@ -1,12 +1,15 @@ package no.ntnu.idatt1002.demo.controller; +import java.awt.event.InputEvent; import java.io.IOException; import javafx.event.ActionEvent; +import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; +import javafx.stage.Modality; import javafx.stage.Stage; public class SceneController /*implements Initializable*/ { @@ -84,7 +87,38 @@ public class SceneController /*implements Initializable*/ { stage.show(); } - public void addExpense(ActionEvent event) throws IOException { + public void switchOverview(ActionEvent event) throws IOException { + FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Overview.fxml")); + Parent root = loader.load(); + stage = (Stage)((Node)event.getSource()).getScene().getWindow(); + scene = new Scene(root); + stage.setScene(scene); + stage.show(); + } + 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 addIncome(ActionEvent event) throws IOException { + FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/addIncome.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 closeButton(ActionEvent actionEvent) { + final Node source = (Node) actionEvent.getSource(); + final Stage stage = (Stage) source.getScene().getWindow(); + stage.close();; } } diff --git a/src/main/resources/view/AddExpense.fxml b/src/main/resources/view/AddExpense.fxml index 6a20d21368ccd384df9972188c5d239a0ecdca03..097992b0c7320fa41a777df6abb7036ab8274662 100644 --- a/src/main/resources/view/AddExpense.fxml +++ b/src/main/resources/view/AddExpense.fxml @@ -1,53 +1,57 @@ <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.Insets?> -<?import javafx.scene.control.ButtonType?> +<?import javafx.scene.control.Button?> <?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.DialogPane?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.ColumnConstraints?> <?import javafx.scene.layout.GridPane?> <?import javafx.scene.layout.RowConstraints?> -<DialogPane prefWidth="480.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.SceneController"> - <content> - <GridPane hgap="10.0" vgap="10.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <padding> - <Insets bottom="10.0" left="10.0" right="150.0" top="20.0" /> - </padding> - <children> - <Label text="Date:" /> - <Label text="Amount:" GridPane.rowIndex="1" /> - <Label text="Description:" GridPane.rowIndex="2" /> - <Label text="Category" GridPane.rowIndex="3"> - <GridPane.margin> - <Insets /> - </GridPane.margin></Label> - <TextField promptText="Date" GridPane.columnIndex="1" GridPane.columnSpan="2" /> - <TextField promptText="Amount" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" /> - <TextField promptText="Description (optional)" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="2" /> - <ComboBox prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3"> - <GridPane.margin> - <Insets /> - </GridPane.margin> - </ComboBox> - </children> - </GridPane> - </content> - <buttonTypes> - <ButtonType fx:constant="OK" /> - <ButtonType fx:constant="CANCEL" /> - </buttonTypes> -</DialogPane> +<GridPane hgap="10.0" vgap="10.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.SceneController"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="95.0" minWidth="10.0" prefWidth="11.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="189.0" minWidth="10.0" prefWidth="189.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + <padding> + <Insets bottom="10.0" left="10.0" top="20.0" /> + </padding> + <children> + <Label text="Date:" /> + <Label text="Amount:" GridPane.rowIndex="1" /> + <Label text="Description:" GridPane.rowIndex="2" /> + <Label text="Category" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets /> + </GridPane.margin> + </Label> + <TextField promptText="Date" GridPane.columnIndex="1" GridPane.columnSpan="2" /> + <TextField promptText="Amount" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" /> + <TextField promptText="Description (optional)" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="2" /> + <ComboBox prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets /> + </GridPane.margin> + </ComboBox> + <Button mnemonicParsing="false" onAction="#closeButton" text="Cancel" GridPane.columnIndex="3" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="75.0" /> + </GridPane.margin> + </Button> + <Button mnemonicParsing="false" onAction="#closeButton" text="Button" GridPane.columnIndex="3" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="130.0" /> + </GridPane.margin> + </Button> + </children> +</GridPane> diff --git a/src/main/resources/view/AddIncome.fxml b/src/main/resources/view/AddIncome.fxml index 6a20d21368ccd384df9972188c5d239a0ecdca03..097992b0c7320fa41a777df6abb7036ab8274662 100644 --- a/src/main/resources/view/AddIncome.fxml +++ b/src/main/resources/view/AddIncome.fxml @@ -1,53 +1,57 @@ <?xml version="1.0" encoding="UTF-8"?> <?import javafx.geometry.Insets?> -<?import javafx.scene.control.ButtonType?> +<?import javafx.scene.control.Button?> <?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.DialogPane?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.ColumnConstraints?> <?import javafx.scene.layout.GridPane?> <?import javafx.scene.layout.RowConstraints?> -<DialogPane prefWidth="480.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.SceneController"> - <content> - <GridPane hgap="10.0" vgap="10.0"> - <columnConstraints> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> - </columnConstraints> - <rowConstraints> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> - </rowConstraints> - <padding> - <Insets bottom="10.0" left="10.0" right="150.0" top="20.0" /> - </padding> - <children> - <Label text="Date:" /> - <Label text="Amount:" GridPane.rowIndex="1" /> - <Label text="Description:" GridPane.rowIndex="2" /> - <Label text="Category" GridPane.rowIndex="3"> - <GridPane.margin> - <Insets /> - </GridPane.margin></Label> - <TextField promptText="Date" GridPane.columnIndex="1" GridPane.columnSpan="2" /> - <TextField promptText="Amount" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" /> - <TextField promptText="Description (optional)" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="2" /> - <ComboBox prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3"> - <GridPane.margin> - <Insets /> - </GridPane.margin> - </ComboBox> - </children> - </GridPane> - </content> - <buttonTypes> - <ButtonType fx:constant="OK" /> - <ButtonType fx:constant="CANCEL" /> - </buttonTypes> -</DialogPane> +<GridPane hgap="10.0" vgap="10.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.SceneController"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="95.0" minWidth="10.0" prefWidth="11.0" /> + <ColumnConstraints hgrow="SOMETIMES" maxWidth="189.0" minWidth="10.0" prefWidth="189.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + <padding> + <Insets bottom="10.0" left="10.0" top="20.0" /> + </padding> + <children> + <Label text="Date:" /> + <Label text="Amount:" GridPane.rowIndex="1" /> + <Label text="Description:" GridPane.rowIndex="2" /> + <Label text="Category" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets /> + </GridPane.margin> + </Label> + <TextField promptText="Date" GridPane.columnIndex="1" GridPane.columnSpan="2" /> + <TextField promptText="Amount" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="1" /> + <TextField promptText="Description (optional)" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="2" /> + <ComboBox prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3"> + <GridPane.margin> + <Insets /> + </GridPane.margin> + </ComboBox> + <Button mnemonicParsing="false" onAction="#closeButton" text="Cancel" GridPane.columnIndex="3" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="75.0" /> + </GridPane.margin> + </Button> + <Button mnemonicParsing="false" onAction="#closeButton" text="Button" GridPane.columnIndex="3" GridPane.rowIndex="4"> + <GridPane.margin> + <Insets left="130.0" /> + </GridPane.margin> + </Button> + </children> +</GridPane> diff --git a/src/main/resources/view/Expenses.fxml b/src/main/resources/view/Expenses.fxml index ec2d793ae34053f1c49e49d3e8476b05b0234272..041a55504552a6d638ef7f7bc0d860e889029ec9 100644 --- a/src/main/resources/view/Expenses.fxml +++ b/src/main/resources/view/Expenses.fxml @@ -73,7 +73,7 @@ <children> <HBox alignment="BOTTOM_LEFT" prefWidth="410.0" spacing="5.0"> <children> - <Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" text="Add" textAlignment="CENTER" /> + <Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#addExpense" text="Add" textAlignment="CENTER" /> <Button fx:id="add1" alignment="TOP_CENTER" mnemonicParsing="false" text="Edit" textAlignment="CENTER" /> <Button fx:id="add11" alignment="TOP_CENTER" mnemonicParsing="false" text="Delete" textAlignment="CENTER" /> </children> @@ -98,14 +98,14 @@ </VBox> <HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="2"> <children> - <Button mnemonicParsing="false" text="Overview"> + <Button mnemonicParsing="false" onAction="#switchOverview" text="Overview"> <HBox.margin> <Insets right="5.0" /> </HBox.margin></Button> - <Button mnemonicParsing="false" text="Income" /> + <Button mnemonicParsing="false" onAction="#switchIncome" text="Income" /> <Button disable="true" mnemonicParsing="false" text="Expenses" /> - <Button mnemonicParsing="false" text="Savings" /> - <Button mnemonicParsing="false" text="Next"> + <Button disable="true" mnemonicParsing="false" text="Savings" /> + <Button mnemonicParsing="false" onAction="#switchOverview" text="Next"> <HBox.margin> <Insets left="170.0" /> </HBox.margin></Button> diff --git a/src/main/resources/view/Income.fxml b/src/main/resources/view/Income.fxml index 0e755e1429fbb261380a5ae3fc1919754a001314..4a4b9e7ba892ccfec2e1644f2ac01699bae7834d 100644 --- a/src/main/resources/view/Income.fxml +++ b/src/main/resources/view/Income.fxml @@ -73,7 +73,7 @@ <children> <HBox alignment="BOTTOM_LEFT" prefWidth="410.0" spacing="5.0"> <children> - <Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" text="Add" textAlignment="CENTER" /> + <Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#addIncome" text="Add" textAlignment="CENTER" /> <Button fx:id="add1" alignment="TOP_CENTER" mnemonicParsing="false" text="Edit" textAlignment="CENTER" /> <Button fx:id="add11" alignment="TOP_CENTER" mnemonicParsing="false" text="Delete" textAlignment="CENTER" /> </children> @@ -98,13 +98,13 @@ </VBox> <HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="2"> <children> - <Button mnemonicParsing="false" text="Overview"> + <Button mnemonicParsing="false" onAction="#switchOverview" text="Overview"> <HBox.margin> <Insets right="5.0" /> </HBox.margin></Button> <Button disable="true" mnemonicParsing="false" onAction="#switchIncome" text="Income" textFill="#4d1616" /> <Button mnemonicParsing="false" onAction="#switchExpenses" text="Expenses" /> - <Button mnemonicParsing="false" text="Savings" /> + <Button disable="true" mnemonicParsing="false" text="Savings" /> <Button mnemonicParsing="false" onAction="#switchExpenses" text="Next"> <HBox.margin> <Insets left="170.0" /> diff --git a/src/main/resources/view/Overview.fxml b/src/main/resources/view/Overview.fxml index 0e755e1429fbb261380a5ae3fc1919754a001314..dc81039bbe9391dd63e3fc1afe7e469cb01cca37 100644 --- a/src/main/resources/view/Overview.fxml +++ b/src/main/resources/view/Overview.fxml @@ -2,10 +2,10 @@ <?import javafx.geometry.Insets?> <?import javafx.scene.Cursor?> +<?import javafx.scene.chart.PieChart?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.ComboBox?> -<?import javafx.scene.control.TableColumn?> -<?import javafx.scene.control.TableView?> +<?import javafx.scene.control.ListView?> <?import javafx.scene.image.Image?> <?import javafx.scene.image.ImageView?> <?import javafx.scene.layout.AnchorPane?> @@ -33,7 +33,7 @@ <top> <HBox BorderPane.alignment="CENTER"> <children> - <Button cancelButton="true" mnemonicParsing="false" onAction="#switchStartMenu" text="Return "> + <Button cancelButton="true" mnemonicParsing="false" onAction="#switchExpenses" text="Return "> <opaqueInsets> <Insets left="100.0" /> </opaqueInsets> @@ -42,7 +42,7 @@ </HBox.margin> </Button> <Region prefHeight="70.0" prefWidth="141.0" /> - <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Income" textAlignment="CENTER" translateX="30.0"> + <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Overview" textAlignment="CENTER" translateX="-5.0"> <HBox.margin> <Insets /> </HBox.margin> @@ -62,50 +62,41 @@ <Insets bottom="40.0" left="40.0" right="40.0" /> </BorderPane.margin> <columnConstraints> - <ColumnConstraints hgrow="ALWAYS" maxWidth="485.3333231608073" minWidth="10.0" prefWidth="427.33335367838544" /> - <ColumnConstraints hgrow="ALWAYS" maxWidth="111.33333333333331" minWidth="10.0" prefWidth="92.66664632161456" /> + <ColumnConstraints hgrow="ALWAYS" maxWidth="485.3333231608073" minWidth="10.0" prefWidth="236.5" /> + <ColumnConstraints hgrow="ALWAYS" maxWidth="253.0" minWidth="10.0" prefWidth="252.0" /> </columnConstraints> <rowConstraints> - <RowConstraints maxHeight="65.33334064483643" minHeight="10.0" prefHeight="65.33334064483643" vgrow="SOMETIMES" /> - <RowConstraints maxHeight="298.66665744781494" minHeight="10.0" prefHeight="214.00004069010413" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="65.33334064483643" minHeight="10.0" prefHeight="26.5" vgrow="SOMETIMES" /> + <RowConstraints maxHeight="298.66665744781494" minHeight="10.0" prefHeight="239.5" vgrow="SOMETIMES" /> <RowConstraints maxHeight="298.66665744781494" minHeight="10.0" prefHeight="29.999959309895814" vgrow="SOMETIMES" /> </rowConstraints> <children> <HBox alignment="BOTTOM_LEFT" prefWidth="410.0" spacing="5.0"> - <children> - <Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" text="Add" textAlignment="CENTER" /> - <Button fx:id="add1" alignment="TOP_CENTER" mnemonicParsing="false" text="Edit" textAlignment="CENTER" /> - <Button fx:id="add11" alignment="TOP_CENTER" mnemonicParsing="false" text="Delete" textAlignment="CENTER" /> - </children> <opaqueInsets> <Insets /> </opaqueInsets> <padding> <Insets bottom="5.0" /> </padding> - </HBox> - <VBox alignment="BOTTOM_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="5.0" GridPane.columnIndex="1"> <children> - <ComboBox fx:id="show" prefWidth="150.0" promptText="Show"> + <ComboBox fx:id="show" prefHeight="26.0" prefWidth="240.0" promptText="Show"> <opaqueInsets> <Insets /> </opaqueInsets> - <VBox.margin> - <Insets bottom="5.0" /> - </VBox.margin> </ComboBox> </children> - </VBox> + </HBox> + <VBox alignment="BOTTOM_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="5.0" GridPane.columnIndex="1" /> <HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="2"> <children> - <Button mnemonicParsing="false" text="Overview"> + <Button disable="true" mnemonicParsing="false" text="Overview"> <HBox.margin> <Insets right="5.0" /> </HBox.margin></Button> - <Button disable="true" mnemonicParsing="false" onAction="#switchIncome" text="Income" textFill="#4d1616" /> + <Button mnemonicParsing="false" onAction="#switchIncome" text="Income" textFill="#4d1616" /> <Button mnemonicParsing="false" onAction="#switchExpenses" text="Expenses" /> - <Button mnemonicParsing="false" text="Savings" /> - <Button mnemonicParsing="false" onAction="#switchExpenses" text="Next"> + <Button disable="true" mnemonicParsing="false" text="Savings" /> + <Button defaultButton="true" mnemonicParsing="false" onAction="#switchExpenses" text="Next"> <HBox.margin> <Insets left="170.0" /> </HBox.margin></Button> @@ -114,17 +105,8 @@ <Insets top="10.0" /> </padding> </HBox> - <TableView fx:id="expenseTableView" prefHeight="260.0" prefWidth="485.0" GridPane.columnSpan="2" GridPane.rowIndex="1"> - <columns> - <TableColumn fx:id="date" prefWidth="75.0" text="Date" /> - <TableColumn fx:id="amount" prefWidth="75.0" text="Amount" /> - <TableColumn fx:id="category" prefWidth="75.0" text="Category" /> - <TableColumn fx:id="description" prefWidth="75.0" text="Description" /> - </columns> - <columnResizePolicy> - <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> - </columnResizePolicy> - </TableView> + <PieChart GridPane.columnIndex="1" GridPane.rowIndex="1" /> + <ListView prefHeight="200.0" prefWidth="270.0" GridPane.rowIndex="1" /> </children> </GridPane> </center>