From 9c5fa0a2ce1af2fd39e14ad979e4a93d8cafe042 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 25 Oct 2019 10:36:26 +0100 Subject: [PATCH] hook up trust to results --- .../com/muwire/clilanterna/SearchModel.groovy | 8 +-- .../com/muwire/clilanterna/SearchView.groovy | 68 +++++++++++++------ 2 files changed, 52 insertions(+), 24 deletions(-) diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchModel.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchModel.groovy index 731260af..9c7bf6b0 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchModel.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchModel.groovy @@ -14,9 +14,9 @@ class SearchModel { private final String query private final Core core final TableModel model - - final Map resultsPerSender = new HashMap<>() + private final Map resultsPerSender = new HashMap<>() + SearchModel(String query, Core core) { this.query = query this.core = core @@ -43,11 +43,11 @@ class SearchModel { void onUIResultBatchEvent(UIResultBatchEvent e) { Persona sender = e.results[0].sender - resultsPerSender.put(sender.getHumanReadableName(), e) + 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([sender.getHumanReadableName(), results, browse, trust]) + model.addRow([new PersonaWrapper(sender), results, browse, trust]) } } diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy index 5d9ba7e9..7b87a873 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/SearchView.groovy @@ -5,12 +5,18 @@ import com.googlecode.lanterna.gui2.BasicWindow import com.googlecode.lanterna.gui2.Button import com.googlecode.lanterna.gui2.GridLayout import com.googlecode.lanterna.gui2.GridLayout.Alignment +import com.googlecode.lanterna.gui2.LayoutData import com.googlecode.lanterna.gui2.Panel import com.googlecode.lanterna.gui2.TextGUI import com.googlecode.lanterna.gui2.Window +import com.googlecode.lanterna.gui2.dialogs.MessageDialog +import com.googlecode.lanterna.gui2.dialogs.MessageDialogButton import com.googlecode.lanterna.gui2.table.Table import com.muwire.core.Core +import com.muwire.core.Persona +import com.muwire.core.trust.TrustEvent +import com.muwire.core.trust.TrustLevel class SearchView extends BasicWindow { private final Core core @@ -24,6 +30,7 @@ class SearchView extends BasicWindow { this.core = core this.model = model this.textGUI = textGUI + this.terminalSize = terminalSize setHints([Window.Hint.EXPANDED]) @@ -50,30 +57,51 @@ class SearchView extends BasicWindow { private void rowSelected() { int selectedRow = table.getSelectedRow() def rows = model.model.getRow(selectedRow) + Persona persona = rows[0].persona boolean browse = Boolean.parseBoolean(rows[2]) - if (browse) { - Window prompt = new BasicWindow("Show Or Browse "+rows[0]+"?") - prompt.setHints([Window.Hint.CENTERED]) - Panel contentPanel = new Panel() - contentPanel.setLayoutManager(new GridLayout(3)) - Button showResults = new Button("Show Results", { - showResults(rows[0]) - }) - Button browseHost = new Button("Browse Host", {}) - Button closePrompt = new Button("Close", {prompt.close()}) - contentPanel.addComponent(showResults, , GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) - contentPanel.addComponent(browseHost, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) - contentPanel.addComponent(closePrompt, GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)) - prompt.setComponent(contentPanel) - showResults.takeFocus() - textGUI.addWindowAndWait(prompt) - } else { - showResults(rows[0]) + Window prompt = new BasicWindow("Show Or Browse "+rows[0]+"?") + prompt.setHints([Window.Hint.CENTERED]) + Panel contentPanel = new Panel() + contentPanel.setLayoutManager(new GridLayout(6)) + LayoutData layoutData = GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER) + Button showResults = new Button("Show Results", { + showResults(persona) + }) + Button browseHost = new Button("Browse Host", {}) // TODO + Button trustHost = new Button("Trust",{ + core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.TRUSTED)) + MessageDialog.showMessageDialog(textGUI, "Marked Trusted", persona.getHumanReadableName() + " has been marked trusted", + MessageDialogButton.OK) + }) + Button neutralHost = new Button("Neutral",{ + core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.NEUTRAL)) + MessageDialog.showMessageDialog(textGUI, "Marked Neutral", persona.getHumanReadableName() + " has been marked neutral", + MessageDialogButton.OK) + }) + Button distrustHost = new Button("Distrust", { + core.eventBus.publish(new TrustEvent(persona : persona, level : TrustLevel.DISTRUSTED)) + MessageDialog.showMessageDialog(textGUI, "Marked Distrusted", persona.getHumanReadableName() + " has been marked distrusted", + MessageDialogButton.OK) + }) + Button closePrompt = new Button("Close", {prompt.close()}) + + contentPanel.with { + addComponent(showResults, layoutData) + if (browse) + addComponent(browseHost, layoutData) + addComponent(trustHost, layoutData) + addComponent(neutralHost, layoutData) + addComponent(distrustHost, layoutData) + addComponent(closePrompt, layoutData) } + + prompt.setComponent(contentPanel) + showResults.takeFocus() + textGUI.addWindowAndWait(prompt) } - private void showResults(String personaName) { - def results = model.resultsPerSender.get(personaName) + private void showResults(Persona persona) { + def results = model.resultsPerSender.get(persona) ResultsModel resultsModel = new ResultsModel(results) ResultsView resultsView = new ResultsView(resultsModel, core, textGUI, terminalSize) textGUI.addWindowAndWait(resultsView)