From ff0f721731f4ad5a26088c3231b3b9a7c767bd60 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 6 Feb 2022 13:54:42 +0000 Subject: [PATCH] Color invisible parts of Library Tree view gray. GitHub issue #65 --- TODO.md | 1 - .../views/com/muwire/gui/MainFrameView.groovy | 3 ++- .../com/muwire/gui/SharedTreeRenderer.groovy | 19 ++++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/TODO.md b/TODO.md index 99a47815..6e50eb26 100644 --- a/TODO.md +++ b/TODO.md @@ -61,4 +61,3 @@ |Rewrite H2HostCache to not use H2| N/A | Core | Optional| |I18n - convert all pluralizable strings to a pattern | N/A | GUI | Medium | |Regex queries| N/A | Core, Network, GUI, Plugin | High | -|Color invisible part of Library path gray | 65 | GUI | Medium | diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index 0846720c..2959236f 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -16,6 +16,7 @@ import javax.swing.event.ChangeEvent import javax.swing.event.ChangeListener import javax.swing.tree.DefaultMutableTreeNode import java.awt.GridBagConstraints +import java.util.function.Predicate import static com.muwire.gui.Translator.trans import griffon.core.artifact.GriffonView @@ -355,7 +356,7 @@ class MainFrameView { scrollPane(constraints : BorderLayout.CENTER) { def jtree = new JTree(model.sharedTree) jtree.setRowHeight(rowHeight) - jtree.setCellRenderer(new SharedTreeRenderer()) + jtree.setCellRenderer(new SharedTreeRenderer({model.core.getWatchedDirectoryManager().isWatched(it)} as Predicate)) jtree.setDragEnabled(true) jtree.setTransferHandler(transferHandler) tree(id : "shared-files-tree", rowHeight : rowHeight, rootVisible : false, expandsSelectedPaths: true, largeModel : true, jtree) diff --git a/gui/src/main/groovy/com/muwire/gui/SharedTreeRenderer.groovy b/gui/src/main/groovy/com/muwire/gui/SharedTreeRenderer.groovy index 4e0c6c0e..0bf2db60 100644 --- a/gui/src/main/groovy/com/muwire/gui/SharedTreeRenderer.groovy +++ b/gui/src/main/groovy/com/muwire/gui/SharedTreeRenderer.groovy @@ -1,6 +1,8 @@ package com.muwire.gui +import java.awt.Color import java.awt.Component +import java.util.function.Predicate import static com.muwire.gui.Translator.trans @@ -10,25 +12,32 @@ import javax.swing.tree.DefaultTreeCellRenderer import com.muwire.core.SharedFile -import net.i2p.data.DataHelper - class SharedTreeRenderer extends DefaultTreeCellRenderer { private final String bShort; private final ImageIcon commentIcon private final StringBuffer sb = new StringBuffer(32) + private final Predicate isDirSharedPredicate - SharedTreeRenderer() { + SharedTreeRenderer(Predicate isDirSharedPredicate) { commentIcon = new ImageIcon((URL) SharedTreeRenderer.class.getResource("/comment.png")) bShort = trans("BYTES_SHORT") + this.isDirSharedPredicate = isDirSharedPredicate } 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 instanceof InterimTreeNode || userObject == null) + Component defaultRenderer = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus) + if (userObject == null) return defaultRenderer + if (userObject instanceof InterimTreeNode) { + InterimTreeNode node = (InterimTreeNode) userObject + boolean shared = isDirSharedPredicate.test(node.getFile()) + if (!shared) + defaultRenderer.setForeground(Color.GRAY) + return defaultRenderer + } SharedFile sf = (SharedFile) userObject