Added: #2374 Quick filter by folder type (Ctrl+F on Resources view tag tree)

This commit is contained in:
Jindra Petřík
2024-12-01 13:36:16 +01:00
parent 867980eddd
commit 4621b181e4
9 changed files with 402 additions and 42 deletions

View File

@@ -405,7 +405,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
private final JTabbedPane detailPanel;
private QuickTreeFindPanel quickTreeFindPanel;
private QuickTreeFilterPanel quickTreeFindPanel;
private QuickTreeFindPanel quickTagListFindPanel;
@@ -1827,7 +1827,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
mainMenu.updateComponents(null);
previewPanel.clear();
dumpPreviewPanel.clear();
dumpPreviewPanel.clear();
doFilter();
return true;
}
@@ -1883,30 +1884,37 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
return filter.trim().length() < 3;
}
private void doFilter(AbstractTagTree tree, QuickTreeFindPanel findPanel, List<List<String>> unfilteredExpandedNodes) {
private void doFilter(AbstractTagTree tree, QuickTreeFilterInterface findPanel, List<List<String>> unfilteredExpandedNodes) {
TreeModel model = tree.getModel();
String oldFilter = "";
List<String> oldFoldersFilter = new ArrayList<>();
if (model instanceof FilteredTreeModel) {
oldFilter = ((FilteredTreeModel) model).getFilter();
oldFoldersFilter = ((FilteredTreeModel) model).getFoldersFilter();
}
String newFilter = findPanel.getFilter();
List<String> newFoldersFilter = findPanel.getFolders();
if (isFilterEmpty(oldFilter)) {
unfilteredExpandedNodes.clear();
;
if (isFilterEmpty(oldFilter) && oldFoldersFilter.isEmpty()) {
unfilteredExpandedNodes.clear();
unfilteredExpandedNodes.addAll(View.getExpandedNodes(tree));
}
if (oldFilter.trim().equals(newFilter.trim())) {
if (
oldFilter.trim().equals(newFilter.trim())
&& oldFoldersFilter.equals(newFoldersFilter)
) {
return;
}
TreePath[] selectionPaths = tree.getSelectionPaths();
tree.setModel(new FilteredTreeModel(newFilter, tree.getFullModel(), tree));
tree.setModel(new FilteredTreeModel(newFilter, newFoldersFilter, tree.getFullModel(), tree));
if (!isFilterEmpty(newFilter)) {
for (int i = 0; i < tree.getRowCount(); i++) {
tree.expandRow(i);
}
} else if (!newFoldersFilter.isEmpty()) {
View.expandTreeNodes(tree, unfilteredExpandedNodes);
} else {
tree.setModel(tree.getFullModel());
View.expandTreeNodes(tree, unfilteredExpandedNodes);
@@ -1916,6 +1924,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
public void doFilter() {
View.checkAccess();
quickTreeFindPanel.updateFolders();
doFilter(tagTree, quickTreeFindPanel, unfilteredTreeExpandedNodes);
doFilter(tagListTree, quickTagListFindPanel, unfilteredTagListExpandedNodes);
}
@@ -5647,7 +5656,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
JPanel r = new JPanel(new BorderLayout());
r.add(resourcesClipboardPanel, BorderLayout.NORTH);
r.add(tagTreeScrollPanel = new FasterScrollPane(tagTree), BorderLayout.CENTER);
quickTreeFindPanel = new QuickTreeFindPanel();
quickTreeFindPanel = new QuickTreeFilterPanel(tagTree);
quickTreeFindPanel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {