mirror of https://github.com/zlatinb/muwire
show down arrow on results that are currently downloading
parent
7cc7027364
commit
7d7d062152
|
@ -2,6 +2,7 @@ package com.muwire.gui
|
|||
|
||||
import com.muwire.core.Persona
|
||||
import com.muwire.core.SplitPattern
|
||||
import com.muwire.core.download.DownloadStartedEvent
|
||||
import griffon.core.artifact.GriffonController
|
||||
import griffon.core.controller.ControllerAction
|
||||
import griffon.inject.MVCMember
|
||||
|
@ -36,6 +37,7 @@ class BrowseController {
|
|||
void register() {
|
||||
core.eventBus.register(BrowseStatusEvent.class, this)
|
||||
core.eventBus.register(UIResultBatchEvent.class, this)
|
||||
core.eventBus.register(DownloadStartedEvent.class, this)
|
||||
model.uuid = UUID.randomUUID()
|
||||
timer.start()
|
||||
core.eventBus.publish(new UIBrowseEvent(host : model.host, uuid: model.uuid))
|
||||
|
@ -45,6 +47,13 @@ class BrowseController {
|
|||
timer.stop()
|
||||
core.eventBus.unregister(BrowseStatusEvent.class, this)
|
||||
core.eventBus.unregister(UIResultBatchEvent.class, this)
|
||||
core.eventBus.unregister(DownloadStartedEvent.class, this)
|
||||
}
|
||||
|
||||
void onDownloadStartedEvent(DownloadStartedEvent event) {
|
||||
runInsideUIAsync {
|
||||
view.updateUIs()
|
||||
}
|
||||
}
|
||||
|
||||
void onBrowseStatusEvent(BrowseStatusEvent e) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.muwire.gui
|
|||
|
||||
import com.muwire.core.InfoHash
|
||||
import com.muwire.core.SplitPattern
|
||||
import com.muwire.core.download.DownloadStartedEvent
|
||||
import griffon.core.GriffonApplication
|
||||
import griffon.core.artifact.GriffonController
|
||||
import griffon.core.controller.ControllerAction
|
||||
|
@ -39,6 +40,20 @@ class SearchTabController {
|
|||
|
||||
Core core
|
||||
|
||||
void mvcGroupInit(Map<String,String> args) {
|
||||
core.eventBus.register(DownloadStartedEvent.class, this)
|
||||
}
|
||||
|
||||
void mvcGroupDestroy() {
|
||||
core.eventBus.unregister(DownloadStartedEvent.class, this)
|
||||
}
|
||||
|
||||
void onDownloadStartedEvent(DownloadStartedEvent event) {
|
||||
runInsideUIAsync {
|
||||
view.updateUIs()
|
||||
}
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
void download() {
|
||||
def results = view.selectedResults()
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.muwire.gui
|
|||
import griffon.core.artifact.GriffonView
|
||||
|
||||
import javax.swing.JPanel
|
||||
import javax.swing.JTable
|
||||
import javax.swing.JTextField
|
||||
import javax.swing.JTree
|
||||
import javax.swing.tree.TreePath
|
||||
|
@ -42,8 +43,8 @@ class BrowseView {
|
|||
|
||||
ResultTree resultsTree
|
||||
def treeExpansions = new TreeExpansions()
|
||||
|
||||
def resultsTable
|
||||
|
||||
JTable resultsTable
|
||||
def lastSortEvent
|
||||
|
||||
def sequentialDownloadCheckbox
|
||||
|
@ -136,7 +137,7 @@ class BrowseView {
|
|||
}
|
||||
|
||||
// results tree
|
||||
resultsTree.setSharedPredicate(controller.core.fileManager::isShared)
|
||||
resultsTree.setSharedPredicate(controller.core.fileManager::isShared, controller.core.downloadManager::isDownloading)
|
||||
resultsTree.addTreeExpansionListener(treeExpansions)
|
||||
resultsTree.addMouseListener(mouseListener)
|
||||
resultsTree.addTreeSelectionListener({
|
||||
|
@ -162,7 +163,9 @@ class BrowseView {
|
|||
resultsTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
|
||||
|
||||
resultsTable.setDefaultRenderer(UIResultEvent.class,
|
||||
new ResultNameTableCellRenderer(controller.core.fileManager::isShared, true))
|
||||
new ResultNameTableCellRenderer(controller.core.fileManager::isShared,
|
||||
controller.core.downloadManager::isDownloading,
|
||||
true))
|
||||
|
||||
resultsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt})
|
||||
resultsTable.rowSorter.setSortsOnUpdates(true)
|
||||
|
@ -312,6 +315,11 @@ class BrowseView {
|
|||
tree.setSelectionPaths(selectedPaths)
|
||||
}
|
||||
|
||||
void updateUIs() {
|
||||
resultsTable.updateUI()
|
||||
resultsTree.updateUI()
|
||||
}
|
||||
|
||||
void expandUnconditionally() {
|
||||
JTree tree = builder.getVariable("results-tree")
|
||||
TreeUtil.expand(tree)
|
||||
|
|
|
@ -296,7 +296,7 @@ class SearchTabView {
|
|||
}
|
||||
|
||||
// results tree
|
||||
resultTree.setSharedPredicate(model.core.fileManager::isShared)
|
||||
resultTree.setSharedPredicate(model.core.fileManager::isShared, model.core.downloadManager::isDownloading)
|
||||
resultTree.addMouseListener(resultsMouseListener)
|
||||
resultTree.addTreeSelectionListener {
|
||||
model.downloadActionEnabled = false
|
||||
|
@ -317,7 +317,9 @@ class SearchTabView {
|
|||
centerRenderer.setHorizontalAlignment(JLabel.CENTER)
|
||||
resultsTable.setDefaultRenderer(Integer.class,centerRenderer)
|
||||
resultsTable.setDefaultRenderer(UIResultEvent.class,
|
||||
new ResultNameTableCellRenderer(model.core.fileManager::isShared, false))
|
||||
new ResultNameTableCellRenderer(model.core.fileManager::isShared,
|
||||
model.core.downloadManager::isDownloading,
|
||||
false))
|
||||
|
||||
resultsTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
|
||||
|
||||
|
@ -395,7 +397,9 @@ class SearchTabView {
|
|||
// results table 2
|
||||
resultsTable2.setDefaultRenderer(Integer.class,centerRenderer)
|
||||
resultsTable2.setDefaultRenderer(UIResultEvent.class,
|
||||
new ResultNameTableCellRenderer(model.core.fileManager::isShared, false))
|
||||
new ResultNameTableCellRenderer(model.core.fileManager::isShared,
|
||||
model.core.downloadManager::isDownloading,
|
||||
false))
|
||||
resultsTable2.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
|
||||
resultsTable2.rowSorter.addRowSorterListener({evt -> lastResults2SortEvent = evt})
|
||||
resultsTable2.rowSorter.setSortsOnUpdates(true)
|
||||
|
@ -687,6 +691,12 @@ class SearchTabView {
|
|||
table.selectionModel.addSelectionInterval(row, row)
|
||||
}
|
||||
}
|
||||
|
||||
void updateUIs() {
|
||||
JTable table = builder.getVariable("results-table")
|
||||
table.updateUI()
|
||||
resultTree.updateUI()
|
||||
}
|
||||
|
||||
private class FocusListener {
|
||||
void onFocus(boolean focus) {
|
||||
|
|
Loading…
Reference in New Issue