Merge pull request #6525 from yonson2023/fix_ui_filter

Fix UI filter box.
This commit is contained in:
Alejandro García 2023-01-21 14:16:36 +00:00 committed by GitHub
commit df39805c87
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 32 additions and 19 deletions

View file

@ -53,20 +53,33 @@ public class FilterBox extends HBox {
TableView<? extends FilterableListItem> tableView) {
this.filteredList = filteredList;
listener = (observable, oldValue, newValue) -> {
tableView.getSelectionModel().clearSelection();
applyFilteredListPredicate(textField.getText());
applyFilter(tableView, null);
};
}
public void initializeWithCallback(FilteredList<? extends FilterableListItem> filteredList,
TableView<? extends FilterableListItem> tableView, Runnable callback) {
this.filteredList = filteredList;
listener = (observable, oldValue, newValue) -> applyFilter(tableView, callback);
applyFilter(tableView, callback); // first time init
}
public void activate() {
textField.textProperty().addListener(listener);
applyFilteredListPredicate(textField.getText());
}
public void deactivate() {
textField.textProperty().removeListener(listener);
}
private void applyFilter(TableView<? extends FilterableListItem> tableView, Runnable callback) {
tableView.getSelectionModel().clearSelection();
applyFilteredListPredicate(textField.getText());
if (callback != null) {
callback.run();
}
}
private void applyFilteredListPredicate(String filterString) {
filteredList.setPredicate(item -> item.match(filterString));
}

View file

@ -132,7 +132,6 @@ public class LockedView extends ActivatableView<VBox, Void> {
@Override
public void initialize() {
filterBox.initialize(filteredList, tableView);
dateColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.dateTime")));
tradeIdColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.tradeId")));
detailsColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.details")));
@ -168,6 +167,8 @@ public class LockedView extends ActivatableView<VBox, Void> {
HBox.setHgrow(spacer, Priority.ALWAYS);
numItems.setId("num-offers");
numItems.setPadding(new Insets(-5, 0, 0, 10));
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())));
exportButton.updateText(Res.get("shared.exportCSV"));
}
@ -182,7 +183,6 @@ public class LockedView extends ActivatableView<VBox, Void> {
btcWalletService.addBalanceListener(balanceListener);
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
ObservableList<TableColumn<LockedListItem, ?>> tableColumns = tableView.getColumns();
int reportColumns = tableColumns.size();

View file

@ -132,7 +132,6 @@ public class ReservedView extends ActivatableView<VBox, Void> {
@Override
public void initialize() {
filterBox.initialize(filteredList, tableView);
dateColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.dateTime")));
offerIdColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.offerId")));
detailsColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.details")));
@ -173,16 +172,17 @@ public class ReservedView extends ActivatableView<VBox, Void> {
@Override
protected void activate() {
filterBox.activate();
openOfferManager.getObservableList().addListener(openOfferListChangeListener);
tradeManager.getObservableList().addListener(tradeListChangeListener);
sortedList.comparatorProperty().bind(tableView.comparatorProperty());
tableView.setItems(sortedList);
updateList();
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())));
filterBox.activate();
btcWalletService.addBalanceListener(balanceListener);
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
ObservableList<TableColumn<ReservedListItem, ?>> tableColumns = tableView.getColumns();
int reportColumns = tableColumns.size();

View file

@ -176,7 +176,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
@Override
public void initialize() {
filterBox.initialize(filteredList, tableView);
dateColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.dateTime")));
tradeIdColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.tradeId")));
detailsColumn.setGraphic(new AutoTooltipLabel(Res.get("shared.details")));
@ -231,15 +230,18 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
HBox.setHgrow(spacer, Priority.ALWAYS);
numItems.setId("num-offers");
numItems.setPadding(new Insets(-5, 0, 0, 10));
exportButton.updateText(Res.get("shared.exportCSV"));
}
@Override
protected void activate() {
filterBox.activate();
sortedList.comparatorProperty().bind(tableView.comparatorProperty());
tableView.setItems(sortedList);
updateList();
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())));
filterBox.activate();
btcWalletService.addChangeEventListener(walletChangeEventListener);
@ -247,7 +249,6 @@ public class TransactionsView extends ActivatableView<VBox, Void> {
if (scene != null)
scene.addEventHandler(KeyEvent.KEY_RELEASED, keyEventEventHandler);
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
final ObservableList<TableColumn<TransactionsListItem, ?>> tableColumns = tableView.getColumns();
final int reportColumns = tableColumns.size() - 1; // CSV report excludes the last column (an icon)

View file

@ -219,10 +219,10 @@ public class UnconfirmedBsqSwapsView extends ActivatableViewAndModel<VBox, Uncon
tableView.setItems(sortedList);
filterBox.initialize(filteredList, tableView); // here because filteredList is instantiated here
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())));
filterBox.activate();
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
CSVEntryConverter<UnconfirmedBsqSwapsListItem> headerConverter = item -> {
String[] columns = new String[ColumnNames.values().length];

View file

@ -291,10 +291,10 @@ public class ClosedTradesView extends ActivatableViewAndModel<VBox, ClosedTrades
tableView.setItems(sortedList);
filterBox.initialize(filteredList, tableView); // here because filteredList is instantiated here
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", filteredList.size())));
filterBox.activate();
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
CSVEntryConverter<ClosedTradesListItem> headerConverter = item -> {
String[] columns = new String[ColumnNames.values().length];

View file

@ -181,10 +181,10 @@ public class FailedTradesView extends ActivatableViewAndModel<VBox, FailedTrades
sortedList.comparatorProperty().bind(tableView.comparatorProperty());
tableView.setItems(sortedList);
filterBox.initialize(filteredList, tableView); // here because filteredList is instantiated here
filterBox.initializeWithCallback(filteredList, tableView, () ->
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size())));
filterBox.activate();
numItems.setText(Res.get("shared.numItemsLabel", sortedList.size()));
exportButton.setOnAction(event -> {
ObservableList<TableColumn<FailedTradesListItem, ?>> tableColumns = tableView.getColumns();
int reportColumns = tableColumns.size() - 1; // CSV report excludes the last column (an icon)

View file

@ -245,7 +245,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
sortedList.addListener(sortedListeChangedListener);
tableView.setItems(sortedList);
filterBox.initialize(filteredList, tableView); // here because filteredList is instantiated here
filterBox.initializeWithCallback(filteredList, tableView, this::updateNumberOfOffers);
filterBox.activate();
updateSelectToggleButtonState();
@ -261,7 +261,6 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
tableView.refresh();
});
updateNumberOfOffers();
exportButton.setOnAction(event -> {
CSVEntryConverter<OpenOfferListItem> headerConverter = item -> {
String[] columns = new String[ColumnNames.values().length];