From f3c15405e8ca3f383ec624c073667ec4d408399c Mon Sep 17 00:00:00 2001 From: Florian Kargl Date: Wed, 31 Aug 2022 15:28:59 +0200 Subject: [PATCH] Allow delete + move up/down actions in filter dialog to act on all selected filters --- .../josm/gui/dialogs/FilterDialog.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java index e6e2c73ba37..c3df9e44a8b 100644 --- a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java +++ b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java @@ -9,6 +9,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -175,10 +176,11 @@ private class DeleteAction extends FilterAction { @Override public void actionPerformed(ActionEvent e) { - int index = filterModel.getSelectionModel().getMinSelectionIndex(); - if (index >= 0) { - filterModel.removeFilter(index); - } + // Remove in reverse order to preserve index validity + int[] selected = filterModel.getSelectedIndices(); + Arrays.stream(selected).boxed() + .sorted(Collections.reverseOrder()) + .forEachOrdered(filterModel::removeFilter); } } @@ -189,10 +191,7 @@ private class MoveUpAction extends FilterAction { @Override public void actionPerformed(ActionEvent e) { - int index = userTable.convertRowIndexToModel(userTable.getSelectionModel().getMinSelectionIndex()); - if (index >= 0 && filterModel.moveUp(index)) { - filterModel.getSelectionModel().setSelectionInterval(index-1, index-1); - } + filterModel.moveUp(); } @Override @@ -208,10 +207,7 @@ private class MoveDownAction extends FilterAction { @Override public void actionPerformed(ActionEvent e) { - int index = userTable.convertRowIndexToModel(userTable.getSelectionModel().getMinSelectionIndex()); - if (index >= 0 && filterModel.moveDown(index)) { - filterModel.getSelectionModel().setSelectionInterval(index+1, index+1); - } + filterModel.moveDown(); } @Override