hook up search results to table
This commit is contained in:
@@ -9,6 +9,8 @@ import javax.annotation.Nonnull
|
|||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
import com.muwire.core.Core
|
import com.muwire.core.Core
|
||||||
|
import com.muwire.core.search.QueryEvent
|
||||||
|
import com.muwire.core.search.SearchEvent
|
||||||
|
|
||||||
@ArtifactProviderFor(GriffonController)
|
@ArtifactProviderFor(GriffonController)
|
||||||
class MainFrameController {
|
class MainFrameController {
|
||||||
@@ -21,15 +23,15 @@ class MainFrameController {
|
|||||||
|
|
||||||
private volatile Core core
|
private volatile Core core
|
||||||
|
|
||||||
private initCore() {
|
|
||||||
if (core == null)
|
|
||||||
core = application.getContext().get("core")
|
|
||||||
}
|
|
||||||
|
|
||||||
@ControllerAction
|
@ControllerAction
|
||||||
void search() {
|
void search() {
|
||||||
initCore()
|
|
||||||
def search = builder.getVariable("search-field").text
|
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.annotation.Nonnull
|
||||||
import javax.inject.Inject
|
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.GriffonApplication
|
||||||
import griffon.core.artifact.GriffonModel
|
import griffon.core.artifact.GriffonModel
|
||||||
|
import griffon.inject.MVCMember
|
||||||
|
import griffon.transform.FXObservable
|
||||||
import griffon.transform.Observable
|
import griffon.transform.Observable
|
||||||
import griffon.metadata.ArtifactProviderFor
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
|
||||||
@ArtifactProviderFor(GriffonModel)
|
@ArtifactProviderFor(GriffonModel)
|
||||||
class MainFrameModel {
|
class MainFrameModel {
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
FactoryBuilderSupport builder
|
||||||
@Inject @Nonnull GriffonApplication application
|
@Inject @Nonnull GriffonApplication application
|
||||||
@Observable boolean coreInitialized = false
|
@Observable boolean coreInitialized = false
|
||||||
|
|
||||||
@Observable def results = []
|
@Observable def results = []
|
||||||
@Observable def downloads = []
|
@Observable def downloads = []
|
||||||
|
|
||||||
String currentSearch
|
private volatile Core core
|
||||||
|
|
||||||
void mvcGroupInit(Map<String, Object> args) {
|
void mvcGroupInit(Map<String, Object> args) {
|
||||||
application.addPropertyChangeListener("core", {e ->
|
application.addPropertyChangeListener("core", {e ->
|
||||||
coreInitialized = (e.getNewValue() != null)
|
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) {
|
panel (constraints : JSplitPane.TOP) {
|
||||||
borderLayout()
|
borderLayout()
|
||||||
scrollPane (constraints : BorderLayout.CENTER){
|
scrollPane (constraints : BorderLayout.CENTER){
|
||||||
table() {
|
table(id : "results-table") {
|
||||||
tableModel(list: model.results) {
|
tableModel(list: model.results) {
|
||||||
closureColumn(header: "Name", type: String, read : {row -> row.name})
|
closureColumn(header: "Name", type: String, read : {row -> row.name})
|
||||||
closureColumn(header: "Size", preferredWidth: 150, type: Long, read : {row -> row.size})
|
closureColumn(header: "Size", preferredWidth: 150, type: Long, read : {row -> row.size})
|
||||||
|
|||||||
Reference in New Issue
Block a user