result tree renderer and selection code

auto-update
Zlatin Balevsky 2021-10-05 01:38:15 +01:00
parent 1007fe9f47
commit d69143a107
No known key found for this signature in database
GPG Key ID: A72832072D525E41
3 changed files with 68 additions and 12 deletions

View File

@ -140,7 +140,7 @@ class BrowseModel {
}
def fileNode = new DefaultMutableTreeNode()
fileNode.setUserObject(event.name)
fileNode.setUserObject(event)
node.add(fileNode)
}
}

View File

@ -114,6 +114,7 @@ class BrowseView {
// results tree
JTree resultsTree = builder.getVariable("results-tree")
resultsTree.addTreeExpansionListener(treeExpansions)
resultsTree.setCellRenderer(new ResultTreeRenderer())
// results table
def centerRenderer = new DefaultTableCellRenderer()
@ -292,6 +293,14 @@ class BrowseView {
}
def selectedResults() {
if (model.treeVisible) {
JTree tree = builder.getVariable("results-tree")
List<UIResultEvent> rv = new ArrayList<>()
for (TreePath path : tree.getSelectionPaths()) {
TreeUtil.getLeafs(path.getLastPathComponent(), rv)
return rv
}
} else {
int[] rows = resultsTable.getSelectedRows()
if (rows.length == 0)
return null
@ -306,6 +315,7 @@ class BrowseView {
rv << model.results[i]
rv
}
}
def showTree = {
model.treeVisible = true

View File

@ -0,0 +1,46 @@
package com.muwire.gui
import com.muwire.core.search.UIResultEvent
import com.muwire.core.util.DataUtil
import static com.muwire.gui.Translator.trans
import javax.swing.ImageIcon
import javax.swing.JTree
import javax.swing.tree.DefaultTreeCellRenderer
import java.awt.Component
class ResultTreeRenderer extends DefaultTreeCellRenderer {
private final ImageIcon commentIcon
private final String bShort
private final StringBuffer sb = new StringBuffer()
ResultTreeRenderer() {
commentIcon = new ImageIcon((URL) PathTreeRenderer.class.getResource("/comment.png"))
bShort = trans("BYTES_SHORT")
}
Component getTreeCellRendererComponent(JTree tree, Object value,
boolean sel, boolean expanded,
boolean leaf, int row, boolean hasFocus) {
def userObject = value.getUserObject()
def defaultRenderer = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus)
if (userObject == null || userObject instanceof String) {
userObject = HTMLSanitizer.sanitize(userObject)
defaultRenderer.setText(userObject)
return defaultRenderer
}
UIResultEvent result = (UIResultEvent) userObject
SizeFormatter.format(result.size, sb)
sb.append(bShort)
setText(HTMLSanitizer.sanitize("$result.name (${sb.toString()})"))
setEnabled(true)
if (result.comment)
setIcon(commentIcon)
this
}
}