mirror of https://github.com/zlatinb/muwire
display an icon if a file is available locally in tree views GitHub issue #72
parent
491da9ff3a
commit
d39f184a44
|
@ -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 |
|
@ -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({
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue