From 27aad9d75d6cf13484e6c2a7308cc8bb6008beec Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sat, 2 Nov 2019 17:41:04 +0000 Subject: [PATCH] do not collapse tree on updates pt2 --- .../views/com/muwire/gui/MainFrameView.groovy | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index e9de14be..eabb8b1d 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -24,6 +24,8 @@ import javax.swing.SwingConstants import javax.swing.SwingUtilities import javax.swing.TransferHandler import javax.swing.border.Border +import javax.swing.event.TreeExpansionEvent +import javax.swing.event.TreeExpansionListener import javax.swing.table.DefaultTableCellRenderer import javax.swing.tree.TreeNode import javax.swing.tree.TreePath @@ -67,6 +69,7 @@ class MainFrameView { def lastDownloadSortEvent def lastSharedSortEvent def trustTablesSortEvents = [:] + def expansionListener = new TreeExpansions() UISettings settings @@ -598,6 +601,8 @@ class MainFrameView { model.addCommentButtonEnabled = selectedNode != null }) + + sharedFilesTree.addTreeExpansionListener(expansionListener) // searches table def searchesTable = builder.getVariable("searches-table") @@ -938,8 +943,13 @@ class MainFrameView { public void refreshSharedFiles() { def tree = builder.getVariable("shared-files-tree") TreePath[] selectedPaths = tree.getSelectionPaths() + Set expanded = new HashSet<>(expansionListener.expandedPaths) + model.sharedTree.nodeStructureChanged(model.treeRoot) + + expanded.each { tree.expandPath(it) } tree.setSelectionPaths(selectedPaths) + builder.getVariable("shared-files-table").model.fireTableDataChanged() } @@ -956,4 +966,19 @@ class MainFrameView { t.start() } } + + private static class TreeExpansions implements TreeExpansionListener { + private final Set expandedPaths = new HashSet<>() + + + @Override + public void treeExpanded(TreeExpansionEvent event) { + expandedPaths.add(event.getPath()) + } + + @Override + public void treeCollapsed(TreeExpansionEvent event) { + expandedPaths.remove(event.getPath()) + } + } } \ No newline at end of file