From 37e5e4235eefc66dcf62efbaa207785ff36428a9 Mon Sep 17 00:00:00 2001 From: Andreas Buchen Date: Sun, 9 Feb 2025 13:03:17 +0100 Subject: [PATCH] Fix: refresh and select only if a new filter was created --- .../portfolio/ui/util/ClientFilterMenu.java | 12 ++++++++++-- .../ui/views/GroupedAccountListView.java | 15 ++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ClientFilterMenu.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ClientFilterMenu.java index f9d2b77985..6f76202647 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ClientFilterMenu.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/util/ClientFilterMenu.java @@ -208,7 +208,11 @@ public void editCustomFilter() } } - public void createCustomFilter() + /** + * Opens a dialog to create a new custom filter. Optionally returns the + * newly created filter. + */ + public Optional createCustomFilter() { LabelProvider labelProvider = new LabelProvider() { @@ -241,14 +245,18 @@ public Image getImage(Object element) newItem.label = label; selectedItem = newItem; - customItems.addFirst(newItem); + customItems.add(newItem); filterConfig.add(new Configuration(newItem.getId(), newItem.getLabel(), newItem.getUUIDs())); client.touch(); listeners.forEach(l -> l.accept(newItem.filter)); + + return Optional.of(newItem); } } + + return Optional.empty(); } public static Optional buildItem(String id, String name, String uuids, Client client) diff --git a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/GroupedAccountListView.java b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/GroupedAccountListView.java index 037dc1e6c3..12e45df36c 100644 --- a/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/GroupedAccountListView.java +++ b/name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/views/GroupedAccountListView.java @@ -208,12 +208,13 @@ private void addNewButton(ToolBarManager toolBar) { toolBar.add(new DropDown(Messages.MenuCreateAndManageClientFilter, Images.PLUS, SWT.NONE, manager -> { manager.add(new LabelOnly(Messages.MenuCreateAndManageClientFilter)); - manager.add(new SimpleAction(Messages.LabelClientFilterNew, a -> { - clientFilterMenu.createCustomFilter(); - groupedAccounts.refresh(); - // select the newly created account - groupedAccounts.setSelection(new StructuredSelection(items.getFirst())); - })); + manager.add(new SimpleAction(Messages.LabelClientFilterNew, + a -> clientFilterMenu.createCustomFilter().ifPresent(newItem -> { + groupedAccounts.refresh(); + // select the newly created account + groupedAccounts.setSelection(new StructuredSelection(newItem)); + + }))); manager.add(new SimpleAction(Messages.LabelClientFilterManage, a -> { clientFilterMenu.editCustomFilter(); groupedAccounts.refresh(); @@ -337,7 +338,7 @@ else if (o instanceof Account account) groupedAccounts.addSelectionChangedListener(event -> { Object treeItem = event.getStructuredSelection().getFirstElement(); - setInformationPaneInput(treeItem); + setInformationPaneInput(treeItem); }); setupDnD();