move gui result processing on gui thread

This commit is contained in:
Zlatin Balevsky
2019-10-25 13:14:38 +01:00
parent 9c5fa0a2ce
commit 8c44d196a7
3 changed files with 26 additions and 12 deletions

View File

@@ -0,0 +1,11 @@
package com.muwire.clilanterna
import com.googlecode.lanterna.gui2.TextGUIThread
import com.muwire.core.Core
import com.muwire.core.Persona
class BrowseModel {
private final Persona persona
private final Core core
private final TextGUIThread guiThread
}

View File

@@ -107,7 +107,7 @@ class MainWindowView extends BasicWindow {
private void search() {
String query = searchTextBox.getText()
SearchModel model = new SearchModel(query, core)
SearchModel model = new SearchModel(query, core, textGUI.getGUIThread())
textGUI.addWindowAndWait(new SearchView(model,core, textGUI, sizeForTables()))
}

View File

@@ -7,19 +7,20 @@ import com.muwire.core.search.QueryEvent
import com.muwire.core.search.SearchEvent
import com.muwire.core.search.UIResultBatchEvent
import com.muwire.core.search.UIResultEvent
import com.googlecode.lanterna.gui2.TextGUIThread
import com.googlecode.lanterna.gui2.table.TableModel
class SearchModel {
private final TextGUIThread guiThread
private final String query
private final Core core
final TableModel model
private final Map<Persona, UIResultBatchEvent> resultsPerSender = new HashMap<>()
SearchModel(String query, Core core) {
SearchModel(String query, Core core, TextGUIThread guiThread) {
this.query = query
this.core = core
this.guiThread = guiThread
this.model = new TableModel("Sender","Results","Browse","Trust")
core.eventBus.register(UIResultBatchEvent.class, this)
@@ -41,13 +42,15 @@ class SearchModel {
}
void onUIResultBatchEvent(UIResultBatchEvent e) {
Persona sender = e.results[0].sender
resultsPerSender.put(sender, e)
String browse = String.valueOf(e.results[0].browse)
String results = String.valueOf(e.results.length)
String trust = core.trustService.getLevel(sender.destination).toString()
model.addRow([new PersonaWrapper(sender), results, browse, trust])
guiThread.invokeLater {
Persona sender = e.results[0].sender
resultsPerSender.put(sender, e)
String browse = String.valueOf(e.results[0].browse)
String results = String.valueOf(e.results.length)
String trust = core.trustService.getLevel(sender.destination).toString()
model.addRow([new PersonaWrapper(sender), results, browse, trust])
}
}
}