diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/Controller.java index 48cc6b9e0c008e2c68ba0fe8d7cf8b4b2ddcc323..e0a3a139f8e0af6e50177713bbd12ab5317d66d3 100644 --- a/src/de/deadlocker8/budgetmaster/ui/Controller.java +++ b/src/de/deadlocker8/budgetmaster/ui/Controller.java @@ -49,6 +49,7 @@ public class Controller @FXML private Tab tabPayments; @FXML private Tab tabCategories; @FXML private Tab tabCharts; + @FXML private Tab tabReports; @FXML private Tab tabSettings; @FXML private Label labelNotification; @@ -56,6 +57,7 @@ public class Controller private PaymentController paymentController; private CategoryController categoryController; private ChartController chartController; + private ReportController reportController; private SettingsController settingsController; private Stage stage; @@ -118,6 +120,12 @@ public class Controller chartController.refresh(); } }); + + fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/ReportTab.fxml")); + Parent nodeTabReport = (Parent)fxmlLoader.load(); + reportController = fxmlLoader.getController(); + reportController.init(this); + tabReports.setContent(nodeTabReport); fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/SettingsTab.fxml")); Parent nodeTabSettings = (Parent)fxmlLoader.load(); diff --git a/src/de/deadlocker8/budgetmaster/ui/GUI.fxml b/src/de/deadlocker8/budgetmaster/ui/GUI.fxml index 122b897e50a412a24f72688ec0a6db4237fbdfa6..f03bed8b617016d960640f19face3c7be5f76669 100644 --- a/src/de/deadlocker8/budgetmaster/ui/GUI.fxml +++ b/src/de/deadlocker8/budgetmaster/ui/GUI.fxml @@ -39,6 +39,7 @@ <Tab fx:id="tabPayments" closable="false" text="Buchungen" /> <Tab fx:id="tabCategories" closable="false" text="Kategorien" /> <Tab fx:id="tabCharts" closable="false" text="Diagramme" /> + <Tab fx:id="tabReports" closable="false" text="Berichte" /> <Tab fx:id="tabSettings" closable="false" text="Einstellungen" /> </tabs> </TabPane> diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/ReportController.java new file mode 100644 index 0000000000000000000000000000000000000000..b87e820ba59bbbcd130e9f52da94a5147e3b1ac4 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/ui/ReportController.java @@ -0,0 +1,117 @@ +package de.deadlocker8.budgetmaster.ui; + +import java.io.IOException; +import java.util.ArrayList; + +import de.deadlocker8.budgetmaster.logic.Budget; +import de.deadlocker8.budgetmaster.logic.ExceptionHandler; +import de.deadlocker8.budgetmaster.logic.FilterSettings; +import de.deadlocker8.budgetmaster.logic.Helpers; +import de.deadlocker8.budgetmaster.logic.NormalPayment; +import de.deadlocker8.budgetmaster.logic.Payment; +import de.deadlocker8.budgetmaster.logic.RepeatingPayment; +import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry; +import de.deadlocker8.budgetmaster.logic.ServerConnection; +import de.deadlocker8.budgetmaster.ui.cells.PaymentCell; +import fontAwesome.FontIcon; +import fontAwesome.FontIconType; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.event.EventHandler; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.CheckBox; +import javafx.scene.control.Label; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Modality; +import javafx.stage.Stage; +import javafx.util.Callback; +import logger.Logger; + +public class ReportController implements Refreshable +{ + @FXML private AnchorPane anchorPaneMain; + @FXML private Label labelPayments; + @FXML private Label labelFilterActive; + @FXML private CheckBox checkBoxSplitTable; + @FXML private CheckBox checkBoxIncludeCharts; + @FXML private Button buttonFilter; + @FXML private Button buttonGenerate; + + private Controller controller; + + public void init(Controller controller) + { + this.controller = controller; + + FontIcon iconFilter = new FontIcon(FontIconType.FILTER); + iconFilter.setSize(18); + iconFilter.setStyle("-fx-text-fill: white"); + buttonFilter.setGraphic(iconFilter); + FontIcon iconPayment = new FontIcon(FontIconType.COGS); + iconPayment.setSize(18); + iconPayment.setStyle("-fx-text-fill: white"); + buttonGenerate.setGraphic(iconPayment); + + // apply theme + anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;"); + labelFilterActive.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text")); + buttonFilter.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); + buttonGenerate.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); + + refresh(); + } + + public void filter() + { +// try +// { +// FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml")); +// Parent root = (Parent)fxmlLoader.load(); +// Stage newStage = new Stage(); +// newStage.initOwner(controller.getStage()); +// newStage.initModality(Modality.APPLICATION_MODAL); +// newStage.setTitle("Filter"); +// newStage.setScene(new Scene(root)); +// newStage.getIcons().add(controller.getIcon()); +// newStage.setResizable(false); +// FilterController newController = fxmlLoader.getController(); +// newController.init(newStage, controller, this, controller.getFilterSettings()); +// newStage.show(); +// } +// catch(IOException e) +// { +// Logger.error(e); +// } + } + + public void generate() + { + + } + + public Controller getController() + { + return controller; + } + + @Override + public void refresh() + { +// if(controller.getFilterSettings().equals(new FilterSettings())) +// { +// labelFilterActive.setVisible(false); +// } +// else +// { +// labelFilterActive.setVisible(true); +// } + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml b/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml new file mode 100644 index 0000000000000000000000000000000000000000..de540f17b628a9e151642a9f791ecbd224ffbd49 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.CheckBox?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.control.TableView?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> +<?import javafx.scene.text.Font?> + +<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ReportController"> + <children> + <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0"> + <children> + <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> + <children> + <VBox alignment="CENTER" spacing="10.0"> + <children> + <Button fx:id="buttonFilter" mnemonicParsing="false" onAction="#filter" text="Filter"> + <font> + <Font name="System Bold" size="14.0" /> + </font> + </Button> + <Label fx:id="labelFilterActive" text="Filter aktiv"> + <font> + <Font name="System Bold" size="13.0" /> + </font> + </Label> + </children> + </VBox> + </children> + <VBox.margin> + <Insets /> + </VBox.margin> + </HBox> + <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> + <children> + <VBox spacing="10.0"> + <children> + <CheckBox fx:id="checkBoxSplitTable" mnemonicParsing="false" text="Einnahmen und Ausgaben als getrennte Tabellen" /> + <CheckBox fx:id="checkBoxIncludeChart" mnemonicParsing="false" text="Diagramm hinzufügen" /> + </children> + </VBox> + </children> + </HBox> + <TableView fx:id="tableView" prefHeight="270.0" prefWidth="772.0" VBox.vgrow="ALWAYS" /> + <HBox alignment="CENTER" prefHeight="11.0" prefWidth="772.0"> + <children> + <VBox alignment="CENTER" spacing="10.0"> + <children> + <Button fx:id="buttonGenerate" mnemonicParsing="false" onAction="#generate" text="Bericht erzeugen"> + <font> + <Font name="System Bold" size="14.0" /> + </font> + </Button> + </children> + </VBox> + </children> + </HBox> + </children> + </VBox> + </children> +</AnchorPane>