expand the tree by default like in the plugin. Use large tree model

pull/53/head
Zlatin Balevsky 2020-10-20 14:02:36 +01:00
parent 7120875fd6
commit 7b98276e21
No known key found for this signature in database
GPG Key ID: A72832072D525E41
2 changed files with 27 additions and 4 deletions

View File

@ -13,6 +13,7 @@ import javax.swing.JOptionPane
import javax.swing.JTable
import javax.swing.tree.DefaultMutableTreeNode
import javax.swing.tree.DefaultTreeModel
import javax.swing.tree.TreeModel
import javax.swing.tree.TreeNode
import com.muwire.core.Core
@ -90,7 +91,7 @@ class MainFrameModel {
def uploads = []
boolean treeVisible = true
def shared
def sharedTree
TreeModel sharedTree
def treeRoot
final Map<SharedFile, TreeNode> fileToNode = new HashMap<>()
def connectionList = []
@ -310,6 +311,7 @@ class MainFrameModel {
void onAllFilesLoadedEvent(AllFilesLoadedEvent e) {
runInsideUIAsync {
view.magicTreeExpansion()
core.muOptions.trustSubscriptions.each {
core.eventBus.publish(new TrustSubscriptionEvent(persona : it, subscribe : true))
}

View File

@ -339,7 +339,7 @@ class MainFrameView {
scrollPane(constraints : BorderLayout.CENTER) {
def jtree = new JTree(model.sharedTree)
jtree.setCellRenderer(new SharedTreeRenderer())
tree(id : "shared-files-tree", rowHeight : rowHeight, rootVisible : false, expandsSelectedPaths: true, jtree)
tree(id : "shared-files-tree", rowHeight : rowHeight, rootVisible : false, expandsSelectedPaths: true, largeModel : true, jtree)
}
}
}
@ -794,7 +794,7 @@ class MainFrameView {
model.publishButtonText = unpublish ? "UNPUBLISH" : "PUBLISH"
})
def sharedFilesTree = builder.getVariable("shared-files-tree")
JTree sharedFilesTree = builder.getVariable("shared-files-tree")
sharedFilesTree.addMouseListener(sharedFilesMouseListener)
sharedFilesTree.addTreeSelectionListener({
@ -813,7 +813,7 @@ class MainFrameView {
})
sharedFilesTree.addTreeExpansionListener(expansionListener)
// uploadsTable
def uploadsTable = builder.getVariable("uploads-table")
@ -1545,17 +1545,38 @@ class MainFrameView {
}
private static class TreeExpansions implements TreeExpansionListener {
private boolean manualExpansion
private final Set<TreePath> expandedPaths = new HashSet<>()
@Override
public void treeExpanded(TreeExpansionEvent event) {
manualExpansion = true
expandedPaths.add(event.getPath())
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
manualExpansion = true
expandedPaths.remove(event.getPath())
}
}
/**
* Expands the tree until there is a path with more than one node
* unless there has been manual expansion already.
*/
void magicTreeExpansion() {
if (expansionListener.manualExpansion)
return
// magic tree expansion like in the plugin
JTree sharedFilesTree = builder.getVariable("shared-files-tree")
TreeNode currentNode = model.treeRoot
int currentRow = 0
while(currentNode.childCount == 1) {
sharedFilesTree.expandRow(currentRow++)
currentNode = currentNode.getChildAt(0)
}
}
}