mirror of https://github.com/zlatinb/muwire
expand the tree by default like in the plugin. Use large tree model
parent
7120875fd6
commit
7b98276e21
|
@ -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))
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue