display an icon if a file is available locally in tree views GitHub issue #72

auto-update
Zlatin Balevsky 2021-10-10 20:47:59 +01:00
parent 491da9ff3a
commit d39f184a44
No known key found for this signature in database
GPG Key ID: A72832072D525E41
6 changed files with 19 additions and 6 deletions

View File

@ -14,8 +14,6 @@ import com.muwire.core.search.BrowseStatus
import javax.annotation.Nonnull import javax.annotation.Nonnull
import javax.swing.SwingWorker import javax.swing.SwingWorker
import javax.swing.tree.DefaultMutableTreeNode import javax.swing.tree.DefaultMutableTreeNode
import javax.swing.tree.DefaultTreeModel
import javax.swing.tree.TreeModel
@ArtifactProviderFor(GriffonModel) @ArtifactProviderFor(GriffonModel)
class BrowseModel { class BrowseModel {

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

View File

@ -122,6 +122,7 @@ class BrowseView {
} }
// results tree // results tree
resultsTree.setSharedPredicate(controller.core.fileManager::isShared)
resultsTree.addTreeExpansionListener(treeExpansions) resultsTree.addTreeExpansionListener(treeExpansions)
resultsTree.addMouseListener(mouseListener) resultsTree.addMouseListener(mouseListener)
resultsTree.addTreeSelectionListener({ resultsTree.addTreeSelectionListener({

View File

@ -345,6 +345,7 @@ class SearchTabView {
} }
// results tree // results tree
resultTree.setSharedPredicate(model.core.fileManager::isShared)
resultTree.addMouseListener(resultsMouseListener) resultTree.addMouseListener(resultsMouseListener)
resultTree.addTreeSelectionListener { resultTree.addTreeSelectionListener {
model.downloadActionEnabled = false model.downloadActionEnabled = false

View File

@ -1,21 +1,26 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.InfoHash
import com.muwire.core.search.UIResultEvent import com.muwire.core.search.UIResultEvent
import javax.swing.JTree import javax.swing.JTree
import javax.swing.tree.TreeModel import javax.swing.tree.TreeModel
import javax.swing.tree.TreePath import javax.swing.tree.TreePath
import java.util.function.Predicate
class ResultTree extends JTree{ class ResultTree extends JTree{
ResultTree(TreeModel model) { ResultTree(TreeModel model) {
super(model) super(model)
setCellRenderer(new ResultTreeRenderer())
setRootVisible(false) setRootVisible(false)
setLargeModel(true) setLargeModel(true)
setExpandsSelectedPaths(true) setExpandsSelectedPaths(true)
} }
void setSharedPredicate(Predicate<InfoHash> predicate) {
setCellRenderer(new ResultTreeRenderer(predicate))
}
List<ResultAndTargets> decorateResults(List<UIResultEvent> results) { List<ResultAndTargets> decorateResults(List<UIResultEvent> results) {
List<ResultAndTargets> rv = new ArrayList<>() List<ResultAndTargets> rv = new ArrayList<>()
TreePath[] paths = getSelectionPaths() TreePath[] paths = getSelectionPaths()

View File

@ -1,8 +1,11 @@
package com.muwire.gui package com.muwire.gui
import com.muwire.core.InfoHash
import com.muwire.core.search.UIResultEvent import com.muwire.core.search.UIResultEvent
import com.muwire.core.util.DataUtil import com.muwire.core.util.DataUtil
import java.util.function.Predicate
import static com.muwire.gui.Translator.trans import static com.muwire.gui.Translator.trans
import javax.swing.ImageIcon import javax.swing.ImageIcon
@ -11,13 +14,16 @@ import javax.swing.tree.DefaultTreeCellRenderer
import java.awt.Component import java.awt.Component
class ResultTreeRenderer extends DefaultTreeCellRenderer { class ResultTreeRenderer extends DefaultTreeCellRenderer {
private final ImageIcon commentIcon private final ImageIcon commentIcon, sharedIcon
private final String bShort private final String bShort
private final StringBuffer sb = new StringBuffer() private final StringBuffer sb = new StringBuffer()
private final Predicate<InfoHash> sharedPredicate
ResultTreeRenderer() { ResultTreeRenderer(Predicate<InfoHash> sharedPredicate) {
commentIcon = new ImageIcon((URL) PathTreeRenderer.class.getResource("/comment.png")) commentIcon = new ImageIcon((URL) PathTreeRenderer.class.getResource("/comment.png"))
sharedIcon = new ImageIcon((URL) PathTreeRenderer.class.getResource("/yes.png"))
bShort = trans("BYTES_SHORT") bShort = trans("BYTES_SHORT")
this.sharedPredicate = sharedPredicate
} }
Component getTreeCellRendererComponent(JTree tree, Object value, Component getTreeCellRendererComponent(JTree tree, Object value,
@ -38,7 +44,9 @@ class ResultTreeRenderer extends DefaultTreeCellRenderer {
setText(HTMLSanitizer.sanitize("$result.name (${sb.toString()})")) setText(HTMLSanitizer.sanitize("$result.name (${sb.toString()})"))
setEnabled(true) setEnabled(true)
if (result.comment) if (sharedPredicate.test(result.infohash))
setIcon(sharedIcon)
else if (result.comment)
setIcon(commentIcon) setIcon(commentIcon)
this this