fix tree renderer for collection trees

pull/53/head
Zlatin Balevsky 2020-11-01 15:26:12 +00:00
parent 531def2a14
commit c27a09473f
No known key found for this signature in database
GPG Key ID: A72832072D525E41
4 changed files with 41 additions and 1 deletions

View File

@ -7,6 +7,7 @@ class PathTree {
final PathNode root
PathTree(String root) {
this.root = new PathNode(root, null)
this.root.setUserObject(root)
keyToNode.put(this.root.key(), this.root)
}

View File

@ -98,6 +98,7 @@ class CollectionTabView {
borderLayout()
scrollPane(constraints : BorderLayout.CENTER, border : etchedBorder()) {
itemsTree = new JTree(model.fileTreeModel)
itemsTree.setCellRenderer(new PathTreeRenderer())
tree(rowHeight : rowHeight, rootVisible : true, expandsSelectedPaths : true, itemsTree)
}
}

View File

@ -83,7 +83,7 @@ class CollectionWizardView {
label(text : trans("COLLECTION_REVIEW_TITLE"), constraints : BorderLayout.NORTH)
scrollPane(constraints : BorderLayout.CENTER) {
jTree = new JTree(model.tree)
// jtree.setCellRenderer(new SharedTreeRenderer()) // TODO: create new renderer
jTree.setCellRenderer(new PathTreeRenderer())
tree(id : "preview-tree", rowHeight : rowHeight, rootVisible : true, expandsSelectedPaths : true, jTree)
}
panel(constraints : BorderLayout.SOUTH) {

View File

@ -0,0 +1,38 @@
package com.muwire.gui
import java.awt.Component
import javax.swing.ImageIcon
import javax.swing.JTree
import javax.swing.tree.DefaultTreeCellRenderer
import com.muwire.core.collections.FileCollectionItem
class PathTreeRenderer extends DefaultTreeCellRenderer {
private final ImageIcon commentIcon
public PathTreeRenderer() {
commentIcon = new ImageIcon((URL) PathTreeRenderer.class.getResource("/comment.png"))
}
public 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) {
return defaultRenderer
}
FileCollectionItem item = (FileCollectionItem) userObject
String fileName = item.pathElements.get(item.pathElements.size() - 1)
setText(fileName)
setEnabled(true)
if (item.comment != "" && item.comment != null) {
setIcon(commentIcon)
}
this
}
}