hook up search results to table
This commit is contained in:
@@ -9,6 +9,8 @@ import javax.annotation.Nonnull
|
||||
import javax.inject.Inject
|
||||
|
||||
import com.muwire.core.Core
|
||||
import com.muwire.core.search.QueryEvent
|
||||
import com.muwire.core.search.SearchEvent
|
||||
|
||||
@ArtifactProviderFor(GriffonController)
|
||||
class MainFrameController {
|
||||
@@ -21,15 +23,15 @@ class MainFrameController {
|
||||
|
||||
private volatile Core core
|
||||
|
||||
private initCore() {
|
||||
if (core == null)
|
||||
core = application.getContext().get("core")
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
void search() {
|
||||
initCore()
|
||||
def search = builder.getVariable("search-field").text
|
||||
println "searching $search"
|
||||
def searchEvent = new SearchEvent(searchTerms : [search], uuid : UUID.randomUUID())
|
||||
core.eventBus.publish(new QueryEvent(searchEvent : searchEvent, firstHop : true,
|
||||
replyTo: core.me.destination, receivedOn: core.me.destination))
|
||||
}
|
||||
|
||||
void mvcGroupInit(Map<String, String> args) {
|
||||
application.addPropertyChangeListener("core", {e-> core = e.getNewValue()})
|
||||
}
|
||||
}
|
@@ -2,25 +2,43 @@ package com.muwire.gui
|
||||
|
||||
import javax.annotation.Nonnull
|
||||
import javax.inject.Inject
|
||||
import javax.swing.JTable
|
||||
|
||||
import com.muwire.core.Core
|
||||
import com.muwire.core.search.UIResultEvent
|
||||
|
||||
import griffon.core.GriffonApplication
|
||||
import griffon.core.artifact.GriffonModel
|
||||
import griffon.inject.MVCMember
|
||||
import griffon.transform.FXObservable
|
||||
import griffon.transform.Observable
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
||||
@ArtifactProviderFor(GriffonModel)
|
||||
class MainFrameModel {
|
||||
@MVCMember @Nonnull
|
||||
FactoryBuilderSupport builder
|
||||
@Inject @Nonnull GriffonApplication application
|
||||
@Observable boolean coreInitialized = false
|
||||
|
||||
@Observable def results = []
|
||||
@Observable def downloads = []
|
||||
|
||||
String currentSearch
|
||||
|
||||
private volatile Core core
|
||||
|
||||
void mvcGroupInit(Map<String, Object> args) {
|
||||
application.addPropertyChangeListener("core", {e ->
|
||||
coreInitialized = (e.getNewValue() != null)
|
||||
core = e.getNewValue()
|
||||
core.eventBus.register(UIResultEvent.class, this)
|
||||
})
|
||||
}
|
||||
|
||||
void onUIResultEvent(UIResultEvent e) {
|
||||
runInsideUIAsync {
|
||||
results << e
|
||||
JTable table = builder.getVariable("results-table")
|
||||
table.model.fireTableDataChanged()
|
||||
}
|
||||
}
|
||||
}
|
@@ -64,7 +64,7 @@ class MainFrameView {
|
||||
panel (constraints : JSplitPane.TOP) {
|
||||
borderLayout()
|
||||
scrollPane (constraints : BorderLayout.CENTER){
|
||||
table() {
|
||||
table(id : "results-table") {
|
||||
tableModel(list: model.results) {
|
||||
closureColumn(header: "Name", type: String, read : {row -> row.name})
|
||||
closureColumn(header: "Size", preferredWidth: 150, type: Long, read : {row -> row.size})
|
||||
|
Reference in New Issue
Block a user