mirror of https://github.com/zlatinb/muwire
result tree renderer and selection code
parent
1007fe9f47
commit
d69143a107
|
@ -140,7 +140,7 @@ class BrowseModel {
|
|||
}
|
||||
|
||||
def fileNode = new DefaultMutableTreeNode()
|
||||
fileNode.setUserObject(event.name)
|
||||
fileNode.setUserObject(event)
|
||||
node.add(fileNode)
|
||||
}
|
||||
}
|
|
@ -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,19 +293,28 @@ class BrowseView {
|
|||
}
|
||||
|
||||
def selectedResults() {
|
||||
int [] rows = resultsTable.getSelectedRows()
|
||||
if (rows.length == 0)
|
||||
return null
|
||||
if (lastSortEvent != null) {
|
||||
for (int i = 0; i < rows.length; i ++) {
|
||||
rows[i] = resultsTable.rowSorter.convertRowIndexToModel(rows[i])
|
||||
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
|
||||
if (lastSortEvent != null) {
|
||||
for (int i = 0; i < rows.length; i++) {
|
||||
rows[i] = resultsTable.rowSorter.convertRowIndexToModel(rows[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<UIResultEvent> rv = new ArrayList<>()
|
||||
for (Integer i : rows)
|
||||
rv << model.results[i]
|
||||
rv
|
||||
List<UIResultEvent> rv = new ArrayList<>()
|
||||
for (Integer i : rows)
|
||||
rv << model.results[i]
|
||||
rv
|
||||
}
|
||||
}
|
||||
|
||||
def showTree = {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue