diff --git a/src/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java b/src/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java new file mode 100644 index 0000000000000000000000000000000000000000..7ae06eda2bf3ff56ca0d847ac9abec97e2a520a9 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/logic/comparators/DateComparator.java @@ -0,0 +1,18 @@ +package de.deadlocker8.budgetmaster.logic.comparators; + +import java.util.Comparator; + +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; + +public class DateComparator implements Comparator<String> +{ + @Override + public int compare(String o1, String o2) + { + DateTime a = DateTime.parse(o1, DateTimeFormat.forPattern("dd.MM.YYYY")); + DateTime b = DateTime.parse(o2, DateTimeFormat.forPattern("dd.MM.YYYY")); + + return a.compareTo(b); + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java b/src/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java new file mode 100644 index 0000000000000000000000000000000000000000..76b69cc5a9623089571a3e2f892d4ca16b19ebb4 --- /dev/null +++ b/src/de/deadlocker8/budgetmaster/logic/comparators/RatingComparator.java @@ -0,0 +1,15 @@ +package de.deadlocker8.budgetmaster.logic.comparators; + +import java.util.Comparator; + +public class RatingComparator implements Comparator<Integer> +{ + @Override + public int compare(Integer o1, Integer o2) + { + Integer a = o1 > 0 ? 1 : 0; + Integer b = o2 > 0 ? 1 : 0; + + return a.compareTo(b); + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/ReportController.java index 0ed7c910a7ecbb887ad903ad77e746ff314b4712..5654bcca5010da092e1aedfd095ffc25a0de7074 100644 --- a/src/de/deadlocker8/budgetmaster/ui/ReportController.java +++ b/src/de/deadlocker8/budgetmaster/ui/ReportController.java @@ -7,6 +7,7 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.Optional; @@ -14,6 +15,8 @@ import de.deadlocker8.budgetmaster.logic.FilterSettings; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.Payment; import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry; +import de.deadlocker8.budgetmaster.logic.comparators.DateComparator; +import de.deadlocker8.budgetmaster.logic.comparators.RatingComparator; import de.deadlocker8.budgetmaster.logic.report.ColumnFilter; import de.deadlocker8.budgetmaster.logic.report.ColumnOrder; import de.deadlocker8.budgetmaster.logic.report.ColumnType; @@ -60,7 +63,6 @@ public class ReportController implements Refreshable @FXML private Label labelFilterActive; @FXML private CheckBox checkBoxSplitTable; @FXML private CheckBox checkBoxIncludeCategoryBudgets; - @FXML private CheckBox checkBoxDescending; @FXML private Button buttonFilter; @FXML private Button buttonGenerate; @FXML private TableView<ReportItem> tableView; @@ -86,11 +88,6 @@ public class ReportController implements Refreshable iconWarning.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text")); labelFilterActive.setGraphic(iconWarning); - checkBoxDescending.setSelected(true); - checkBoxDescending.selectedProperty().addListener((a, b, c)->{ - refreshTableView(c); - }); - initTable(); // apply theme @@ -100,10 +97,252 @@ public class ReportController implements Refreshable buttonGenerate.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;"); checkBoxSplitTable.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;"); checkBoxIncludeCategoryBudgets.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;"); - checkBoxDescending.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text") + "; -fx-font-size: 14;"); refresh(); } + + private void initColumnPosition() + { + TableColumn<ReportItem, Integer> columnPosition = new TableColumn<>("Nr."); + columnPosition.setUserData(ColumnType.POSITION); + columnPosition.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("position")); + columnPosition.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxPositions = new CheckBox(); + checkBoxPositions.setSelected(true); + checkBoxPositions.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnPosition.setStyle(style); + columnFilter.toggleColumn(ColumnType.POSITION, c); + }); + columnPosition.setGraphic(checkBoxPositions); + tableView.getColumns().add(columnPosition); + } + + private void initColumnDate() + { + TableColumn<ReportItem, String> columnDate = new TableColumn<>("Datum"); + columnDate.setUserData(ColumnType.DATE); + columnDate.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() + { + @Override + public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) + { + String dateString = param.getValue().getDate(); + try + { + DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date date = format.parse(dateString); + DateFormat finalFormat = new SimpleDateFormat("dd.MM.yy"); + dateString = finalFormat.format(date); + return new SimpleStringProperty(dateString); + } + catch(Exception e) + { + Logger.error(e); + return null; + } + } + }); + columnDate.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxDate = new CheckBox(); + checkBoxDate.setSelected(true); + checkBoxDate.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnDate.setStyle(style); + columnFilter.toggleColumn(ColumnType.DATE, c); + }); + columnDate.setGraphic(checkBoxDate); + columnDate.setComparator(new DateComparator()); + tableView.getColumns().add(columnDate); + } + + private void initColumnIsRepeating() + { + TableColumn<ReportItem, Boolean> columnIsRepeating = new TableColumn<>("Wiederholend"); + columnIsRepeating.setUserData(ColumnType.REPEATING); + columnIsRepeating.setCellValueFactory(new PropertyValueFactory<ReportItem, Boolean>("repeating")); + columnIsRepeating.setCellFactory(new Callback<TableColumn<ReportItem, Boolean>, TableCell<ReportItem, Boolean>>() + { + @Override + public TableCell<ReportItem, Boolean> call(TableColumn<ReportItem, Boolean> param) + { + TableCell<ReportItem, Boolean> cell = new TableCell<ReportItem, Boolean>() + { + @Override + public void updateItem(Boolean item, boolean empty) + { + if(!empty) + { + FontIcon iconRepeating = new FontIcon(FontIconType.CALENDAR); + iconRepeating.setSize(16); + Color color = item ? Color.web("#212121") : Color.TRANSPARENT; + iconRepeating.setColor(color); + + Label labelRepeating = new Label(); + labelRepeating.setGraphic(iconRepeating); + labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); + labelRepeating.setAlignment(Pos.CENTER); + setGraphic(labelRepeating); + } + else + { + setGraphic(null); + } + } + }; + return cell; + } + }); + columnIsRepeating.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxRepeating = new CheckBox(); + checkBoxRepeating.setSelected(true); + checkBoxRepeating.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnIsRepeating.setStyle(style); + columnFilter.toggleColumn(ColumnType.REPEATING, c); + }); + columnIsRepeating.setGraphic(checkBoxRepeating); + tableView.getColumns().add(columnIsRepeating); + } + + private void initColumnCategory() + { + TableColumn<ReportItem, String> columnCategory = new TableColumn<>("Kategorie"); + columnCategory.setUserData(ColumnType.CATEGORY); + columnCategory.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() + { + @Override + public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) + { + String categoryName = param.getValue().getCategory().getName(); + if(categoryName.equals("NONE")) + { + categoryName = ""; + } + return new SimpleStringProperty(categoryName); + } + }); + columnCategory.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxCategory = new CheckBox(); + checkBoxCategory.setSelected(true); + checkBoxCategory.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnCategory.setStyle(style); + columnFilter.toggleColumn(ColumnType.CATEGORY, c); + }); + columnCategory.setGraphic(checkBoxCategory); + tableView.getColumns().add(columnCategory); + } + + private void initColumnName() + { + TableColumn<ReportItem, Integer> columnName = new TableColumn<>("Name"); + columnName.setUserData(ColumnType.NAME); + columnName.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("name")); + columnName.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxName = new CheckBox(); + checkBoxName.setSelected(true); + checkBoxName.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnName.setStyle(style); + columnFilter.toggleColumn(ColumnType.NAME, c); + }); + columnName.setGraphic(checkBoxName); + tableView.getColumns().add(columnName); + } + + private void initColumnDescription() + { + TableColumn<ReportItem, String> columnDescription = new TableColumn<>("Notiz"); + columnDescription.setUserData(ColumnType.DESCRIPTION); + columnDescription.setCellValueFactory(new PropertyValueFactory<ReportItem, String>("description")); + columnDescription.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxDescription = new CheckBox(); + checkBoxDescription.setSelected(true); + checkBoxDescription.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnDescription.setStyle(style); + columnFilter.toggleColumn(ColumnType.DESCRIPTION, c); + }); + columnDescription.setGraphic(checkBoxDescription); + tableView.getColumns().add(columnDescription); + } + + private void initColumnRating() + { + TableColumn<ReportItem, Integer> columnRating = new TableColumn<>("Bewertung"); + columnRating.setUserData(ColumnType.RATING); + columnRating.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("amount")); + columnRating.setCellFactory(new Callback<TableColumn<ReportItem, Integer>, TableCell<ReportItem, Integer>>() + { + @Override + public TableCell<ReportItem, Integer> call(TableColumn<ReportItem, Integer> param) + { + TableCell<ReportItem, Integer> cell = new TableCell<ReportItem, Integer>() + { + @Override + public void updateItem(Integer item, boolean empty) + { + if(!empty) + { + FontIcon iconRepeating = item > 0 ? new FontIcon(FontIconType.PLUS) : new FontIcon(FontIconType.MINUS); + iconRepeating.setSize(14); + iconRepeating.setColor(Color.web("#212121")); + + Label labelRepeating = new Label(); + labelRepeating.setGraphic(iconRepeating); + labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); + labelRepeating.setAlignment(Pos.CENTER); + setGraphic(labelRepeating); + } + else + { + setGraphic(null); + } + } + }; + return cell; + } + }); + columnRating.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxRating = new CheckBox(); + checkBoxRating.setSelected(true); + checkBoxRating.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnRating.setStyle(style); + columnFilter.toggleColumn(ColumnType.RATING, c); + }); + columnRating.setGraphic(checkBoxRating); + columnRating.setComparator(new RatingComparator()); + tableView.getColumns().add(columnRating); + } + + private void initColumnAmount() + { + TableColumn<ReportItem, String> columnAmount = new TableColumn<>("Betrag"); + columnAmount.setUserData(ColumnType.AMOUNT); + columnAmount.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() + { + @Override + public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) + { + StringProperty value = new SimpleStringProperty(); + double amount = param.getValue().getAmount() / 100.0; + value.set(Helpers.getCurrencyString(amount, controller.getSettings().getCurrency())); + return value; + } + }); + columnAmount.setStyle("-fx-alignment: CENTER;"); + CheckBox checkBoxAmount = new CheckBox(); + checkBoxAmount.setSelected(true); + checkBoxAmount.selectedProperty().addListener((a, b, c)->{ + String style = c ? "-fx-alignment: CENTER;" : "-fx-background-color: salmon; -fx-alignment: CENTER;"; + columnAmount.setStyle(style); + columnFilter.toggleColumn(ColumnType.AMOUNT, c); + }); + columnAmount.setGraphic(checkBoxAmount); + tableView.getColumns().add(columnAmount); + } private void initTable() { @@ -115,234 +354,18 @@ public class ReportController implements Refreshable Label labelPlaceholder = new Label("Keine Daten verfügbar"); labelPlaceholder.setStyle("-fx-font-size: 16"); - tableView.setPlaceholder(labelPlaceholder); - - TableColumn<ReportItem, Integer> columnPosition = new TableColumn<>("Nr."); - columnPosition.setUserData(ColumnType.POSITION); - columnPosition.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("position")); - columnPosition.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxPositions = new CheckBox(); - checkBoxPositions.setSelected(true); - checkBoxPositions.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnPosition.setStyle(style); - columnFilter.toggleColumn(ColumnType.POSITION, c); - }); - columnPosition.setGraphic(checkBoxPositions); - columnPosition.setSortable(false); - tableView.getColumns().add(columnPosition); - - TableColumn<ReportItem, String> columnDate = new TableColumn<>("Datum"); - columnDate.setUserData(ColumnType.DATE); - columnDate.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() - { - @Override - public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) - { - String dateString = param.getValue().getDate(); - try - { - DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - Date date = format.parse(dateString); - DateFormat finalFormat = new SimpleDateFormat("dd.MM.yy"); - dateString = finalFormat.format(date); - return new SimpleStringProperty(dateString); - } - catch(Exception e) - { - Logger.error(e); - return null; - } - } - }); - columnDate.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxDate = new CheckBox(); - checkBoxDate.setSelected(true); - checkBoxDate.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnDate.setStyle(style); - columnFilter.toggleColumn(ColumnType.DATE, c); - }); - columnDate.setGraphic(checkBoxDate); - columnDate.setSortable(false); - tableView.getColumns().add(columnDate); - - TableColumn<ReportItem, Boolean> columnIsRepeating = new TableColumn<>("Wiederholend"); - columnIsRepeating.setUserData(ColumnType.REPEATING); - columnIsRepeating.setCellValueFactory(new PropertyValueFactory<ReportItem, Boolean>("repeating")); - columnIsRepeating.setCellFactory(new Callback<TableColumn<ReportItem, Boolean>, TableCell<ReportItem, Boolean>>() - { - @Override - public TableCell<ReportItem, Boolean> call(TableColumn<ReportItem, Boolean> param) - { - TableCell<ReportItem, Boolean> cell = new TableCell<ReportItem, Boolean>() - { - @Override - public void updateItem(Boolean item, boolean empty) - { - if(!empty) - { - FontIcon iconRepeating = new FontIcon(FontIconType.CALENDAR); - iconRepeating.setSize(16); - Color color = item ? Color.web("#212121") : Color.TRANSPARENT; - iconRepeating.setColor(color); - - Label labelRepeating = new Label(); - labelRepeating.setGraphic(iconRepeating); - labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - setGraphic(labelRepeating); - } - else - { - setGraphic(null); - } - } - }; - return cell; - } - }); - columnIsRepeating.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxRepeating = new CheckBox(); - checkBoxRepeating.setSelected(true); - checkBoxRepeating.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnIsRepeating.setStyle(style); - columnFilter.toggleColumn(ColumnType.REPEATING, c); - }); - columnIsRepeating.setGraphic(checkBoxRepeating); - columnIsRepeating.setSortable(false); - tableView.getColumns().add(columnIsRepeating); - - TableColumn<ReportItem, String> columnCategory = new TableColumn<>("Kategorie"); - columnCategory.setUserData(ColumnType.CATEGORY); - columnCategory.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() - { - @Override - public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) - { - String categoryName = param.getValue().getCategory().getName(); - if(categoryName.equals("NONE")) - { - categoryName = ""; - } - return new SimpleStringProperty(categoryName); - } - }); - columnCategory.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxCategory = new CheckBox(); - checkBoxCategory.setSelected(true); - checkBoxCategory.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnCategory.setStyle(style); - columnFilter.toggleColumn(ColumnType.CATEGORY, c); - }); - columnCategory.setGraphic(checkBoxCategory); - columnCategory.setSortable(false); - tableView.getColumns().add(columnCategory); - - TableColumn<ReportItem, Integer> columnName = new TableColumn<>("Name"); - columnName.setUserData(ColumnType.NAME); - columnName.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("name")); - columnName.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxName = new CheckBox(); - checkBoxName.setSelected(true); - checkBoxName.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnName.setStyle(style); - columnFilter.toggleColumn(ColumnType.NAME, c); - }); - columnName.setGraphic(checkBoxName); - columnName.setSortable(false); - tableView.getColumns().add(columnName); - - TableColumn<ReportItem, Integer> columnDescription = new TableColumn<>("Notiz"); - columnDescription.setUserData(ColumnType.DESCRIPTION); - columnDescription.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("description")); - columnDescription.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxDescription = new CheckBox(); - checkBoxDescription.setSelected(true); - checkBoxDescription.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnDescription.setStyle(style); - columnFilter.toggleColumn(ColumnType.DESCRIPTION, c); - }); - columnDescription.setGraphic(checkBoxDescription); - columnDescription.setSortable(false); - tableView.getColumns().add(columnDescription); - - TableColumn<ReportItem, Integer> columnRating = new TableColumn<>("Bewertung"); - columnRating.setUserData(ColumnType.RATING); - columnRating.setCellValueFactory(new PropertyValueFactory<ReportItem, Integer>("amount")); - columnRating.setCellFactory(new Callback<TableColumn<ReportItem, Integer>, TableCell<ReportItem, Integer>>() - { - @Override - public TableCell<ReportItem, Integer> call(TableColumn<ReportItem, Integer> param) - { - TableCell<ReportItem, Integer> cell = new TableCell<ReportItem, Integer>() - { - @Override - public void updateItem(Integer item, boolean empty) - { - if(!empty) - { - FontIcon iconRepeating = item > 0 ? new FontIcon(FontIconType.PLUS) : new FontIcon(FontIconType.MINUS); - iconRepeating.setSize(14); - iconRepeating.setColor(Color.web("#212121")); - - Label labelRepeating = new Label(); - labelRepeating.setGraphic(iconRepeating); - labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121"); - labelRepeating.setAlignment(Pos.CENTER); - setGraphic(labelRepeating); - } - else - { - setGraphic(null); - } - } - }; - return cell; - } - }); - columnRating.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxRating = new CheckBox(); - checkBoxRating.setSelected(true); - checkBoxRating.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnRating.setStyle(style); - columnFilter.toggleColumn(ColumnType.RATING, c); - }); - columnRating.setGraphic(checkBoxRating); - columnRating.setSortable(false); - tableView.getColumns().add(columnRating); - - TableColumn<ReportItem, String> columnAmount = new TableColumn<>("Betrag"); - columnAmount.setUserData(ColumnType.AMOUNT); - columnAmount.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ReportItem, String>, ObservableValue<String>>() - { - @Override - public ObservableValue<String> call(CellDataFeatures<ReportItem, String> param) - { - StringProperty value = new SimpleStringProperty(); - double amount = param.getValue().getAmount() / 100.0; - value.set(Helpers.getCurrencyString(amount, controller.getSettings().getCurrency())); - return value; - } - }); - columnAmount.setStyle("-fx-alignment: CENTER;"); - CheckBox checkBoxAmount = new CheckBox(); - checkBoxAmount.setSelected(true); - checkBoxAmount.selectedProperty().addListener((a, b, c)->{ - String style = c ? "" : "-fx-background-color: salmon"; - columnAmount.setStyle(style); - columnFilter.toggleColumn(ColumnType.AMOUNT, c); - }); - columnAmount.setGraphic(checkBoxAmount); - columnAmount.setSortable(false); - tableView.getColumns().add(columnAmount); + tableView.setPlaceholder(labelPlaceholder); tableView.setFixedCellSize(26); + + initColumnPosition(); + initColumnDate(); + initColumnIsRepeating(); + initColumnCategory(); + initColumnName(); + initColumnDescription(); + initColumnRating(); + initColumnAmount(); } public void filter() @@ -368,7 +391,7 @@ public class ReportController implements Refreshable } } - private ArrayList<ReportItem> createReportItems(ArrayList<Payment> payments, boolean descending) + private ArrayList<ReportItem> createReportItems(ArrayList<Payment> payments) { ArrayList<ReportItem> reportItems = new ArrayList<>(); for(int i = 0; i < payments.size(); i++) @@ -386,21 +409,17 @@ public class ReportController implements Refreshable reportItems.add(reportItem); } - if(!descending) - { - Collections.reverse(reportItems); - } return reportItems; } - private void refreshTableView(boolean descending) + private void refreshTableView() { tableView.getItems().clear(); ArrayList<Payment> payments = controller.getPaymentHandler().getPayments(); if(payments != null) { - ArrayList<ReportItem> reportItems = createReportItems(payments, descending); + ArrayList<ReportItem> reportItems = createReportItems(payments); ObservableList<ReportItem> objectsForTable = FXCollections.observableArrayList(reportItems); tableView.setItems(objectsForTable); } @@ -530,7 +549,7 @@ public class ReportController implements Refreshable { labelFilterActive.setVisible(true); } - - refreshTableView(checkBoxDescending.isSelected()); + + refreshTableView(); } } \ No newline at end of file diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml b/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml index f0d20b88c933e60553324b03e59243058d015939..9910f4d01b44fa3259192e73005b6d2f2c7ece8c 100644 --- a/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml +++ b/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml @@ -40,8 +40,7 @@ <VBox spacing="10.0"> <children> <CheckBox fx:id="checkBoxSplitTable" mnemonicParsing="false" text="Einnahmen und Ausgaben als getrennte Tabellen" /> - <CheckBox fx:id="checkBoxIncludeCategoryBudgets" mnemonicParsing="false" text="Verbrauch nach Kategorien hizufügen" /> - <CheckBox fx:id="checkBoxDescending" mnemonicParsing="false" text="Neuestes Datum zuerst" /> + <CheckBox fx:id="checkBoxIncludeCategoryBudgets" mnemonicParsing="false" text="Verbrauch nach Kategorien hinzufügen" /> </children> </VBox> </children>