diff --git a/desktop/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java b/desktop/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java index f9234b65be5..80dc38afe6e 100644 --- a/desktop/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java +++ b/desktop/src/main/java/bisq/desktop/main/portfolio/openoffer/OpenOffersView.java @@ -73,6 +73,7 @@ import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.value.ChangeListener; +import javafx.collections.ListChangeListener; import javafx.collections.transformation.FilteredList; import javafx.collections.transformation.SortedList; @@ -88,6 +89,7 @@ @FxmlView public class OpenOffersView extends ActivatableViewAndModel { + private enum ColumnNames { OFFER_ID(Res.get("shared.offerId")), DATE(Res.get("shared.dateTime")), @@ -136,6 +138,7 @@ public String toString() { private SortedList sortedList; private PortfolioView.OpenOfferActionHandler openOfferActionHandler; private ChangeListener widthListener; + private ListChangeListener sortedListeChangedListener; @Inject public OpenOffersView(OpenOffersViewModel model, @@ -224,6 +227,13 @@ public void initialize() { HBox.setHgrow(footerSpacer, Priority.ALWAYS); HBox.setMargin(exportButton, new Insets(0, 10, 0, 0)); exportButton.updateText(Res.get("shared.exportCSV")); + + sortedListeChangedListener = c -> { + c.next(); + if (c.wasAdded() || c.wasRemoved()) { + updateNumberOfOffers(); + } + }; } @Override @@ -231,6 +241,7 @@ protected void activate() { FilteredList filteredList = new FilteredList<>(model.dataModel.getList()); sortedList = new SortedList<>(filteredList); sortedList.comparatorProperty().bind(tableView.comparatorProperty()); + sortedList.addListener(sortedListeChangedListener); tableView.setItems(sortedList); filterBox.initialize(filteredList, tableView); // here because filteredList is instantiated here @@ -249,7 +260,7 @@ protected void activate() { tableView.refresh(); }); - numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())); + updateNumberOfOffers(); exportButton.setOnAction(event -> { CSVEntryConverter headerConverter = item -> { String[] columns = new String[ColumnNames.values().length]; @@ -286,9 +297,14 @@ protected void activate() { onWidthChange(root.getWidth()); } + private void updateNumberOfOffers() { + numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())); + } + @Override protected void deactivate() { sortedList.comparatorProperty().unbind(); + sortedList.removeListener(sortedListeChangedListener); exportButton.setOnAction(null); filterBox.deactivate();