From c7b0ae34af0733b0fe224993367ea7ba5d174231 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Thu, 7 Nov 2019 17:43:37 +0000 Subject: [PATCH] associate persona with a search event, add skeleton for shared file panel --- .../muwire/core/connection/Connection.groovy | 3 +- .../com/muwire/core/search/SearchEvent.groovy | 2 ++ .../muwire/core/update/UpdateClient.groovy | 2 +- gui/griffon-app/conf/Config.groovy | 5 +++ .../com/muwire/gui/MainFrameController.groovy | 6 ++-- .../muwire/gui/SharedFileController.groovy | 18 +++++++++++ .../com/muwire/gui/SharedFileModel.groovy | 10 ++++++ .../com/muwire/gui/SharedFileView.groovy | 31 +++++++++++++++++++ 8 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 gui/griffon-app/controllers/com/muwire/gui/SharedFileController.groovy create mode 100644 gui/griffon-app/models/com/muwire/gui/SharedFileModel.groovy create mode 100644 gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy diff --git a/core/src/main/groovy/com/muwire/core/connection/Connection.groovy b/core/src/main/groovy/com/muwire/core/connection/Connection.groovy index 2e4c76b4..7ae5ccc3 100644 --- a/core/src/main/groovy/com/muwire/core/connection/Connection.groovy +++ b/core/src/main/groovy/com/muwire/core/connection/Connection.groovy @@ -255,7 +255,8 @@ abstract class Connection implements Closeable { uuid : uuid, oobInfohash : oob, searchComments : searchComments, - compressedResults : compressedResults) + compressedResults : compressedResults, + persona : originator) QueryEvent event = new QueryEvent ( searchEvent : searchEvent, replyTo : replyTo, originator : originator, diff --git a/core/src/main/groovy/com/muwire/core/search/SearchEvent.groovy b/core/src/main/groovy/com/muwire/core/search/SearchEvent.groovy index 541df9b9..e8f42aed 100644 --- a/core/src/main/groovy/com/muwire/core/search/SearchEvent.groovy +++ b/core/src/main/groovy/com/muwire/core/search/SearchEvent.groovy @@ -2,6 +2,7 @@ package com.muwire.core.search import com.muwire.core.Event import com.muwire.core.InfoHash +import com.muwire.core.Persona class SearchEvent extends Event { @@ -11,6 +12,7 @@ class SearchEvent extends Event { boolean oobInfohash boolean searchComments boolean compressedResults + Persona persona String toString() { def infoHash = null diff --git a/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy b/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy index 327f0e75..251561ba 100644 --- a/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy +++ b/core/src/main/groovy/com/muwire/core/update/UpdateClient.groovy @@ -176,7 +176,7 @@ class UpdateClient { signer = payload.signer log.info("starting search for new version hash $payload.infoHash") Signature sig = DSAEngine.getInstance().sign(updateInfoHash.getRoot(), spk) - def searchEvent = new SearchEvent(searchHash : updateInfoHash.getRoot(), uuid : UUID.randomUUID(), oobInfohash : true) + def searchEvent = new SearchEvent(searchHash : updateInfoHash.getRoot(), uuid : UUID.randomUUID(), oobInfohash : true, persona : me) def queryEvent = new QueryEvent(searchEvent : searchEvent, firstHop : true, replyTo : me.destination, receivedOn : me.destination, originator : me, sig : sig.data) eventBus.publish(queryEvent) diff --git a/gui/griffon-app/conf/Config.groovy b/gui/griffon-app/conf/Config.groovy index e65fa576..f019ca33 100644 --- a/gui/griffon-app/conf/Config.groovy +++ b/gui/griffon-app/conf/Config.groovy @@ -101,4 +101,9 @@ mvcGroups { view = 'com.muwire.gui.CertificateControlView' controller = 'com.muwire.gui.CertificateControlController' } + 'shared-file' { + model = 'com.muwire.gui.SharedFileModel' + view = 'com.muwire.gui.SharedFileView' + controller = 'com.muwire.gui.SharedFileController' + } } diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 07fa8278..03b43e4a 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -107,13 +107,13 @@ class MainFrameController { def searchEvent byte [] payload if (hashSearch) { - searchEvent = new SearchEvent(searchHash : root, uuid : uuid, oobInfohash: true, compressedResults : true) + searchEvent = new SearchEvent(searchHash : root, uuid : uuid, oobInfohash: true, compressedResults : true, persona : core.me) payload = root } else { def nonEmpty = SplitPattern.termify(search) payload = String.join(" ",nonEmpty).getBytes(StandardCharsets.UTF_8) searchEvent = new SearchEvent(searchTerms : nonEmpty, uuid : uuid, oobInfohash: true, - searchComments : core.muOptions.searchComments, compressedResults : true) + searchComments : core.muOptions.searchComments, compressedResults : true, persona : core.me) } boolean firstHop = core.muOptions.allowUntrusted || core.muOptions.searchExtraHop @@ -140,7 +140,7 @@ class MainFrameController { Signature sig = DSAEngine.getInstance().sign(infoHashBytes, core.spk) def searchEvent = new SearchEvent(searchHash : Base64.decode(infoHash), uuid:uuid, - oobInfohash: true) + oobInfohash: true, persona : core.me) core.eventBus.publish(new QueryEvent(searchEvent : searchEvent, firstHop : true, replyTo: core.me.destination, receivedOn: core.me.destination, originator : core.me, sig : sig.data)) diff --git a/gui/griffon-app/controllers/com/muwire/gui/SharedFileController.groovy b/gui/griffon-app/controllers/com/muwire/gui/SharedFileController.groovy new file mode 100644 index 00000000..627965d6 --- /dev/null +++ b/gui/griffon-app/controllers/com/muwire/gui/SharedFileController.groovy @@ -0,0 +1,18 @@ +package com.muwire.gui + +import griffon.core.artifact.GriffonController +import griffon.core.controller.ControllerAction +import griffon.inject.MVCMember +import griffon.metadata.ArtifactProviderFor +import javax.annotation.Nonnull + +@ArtifactProviderFor(GriffonController) +class SharedFileController { + @MVCMember @Nonnull + SharedFileModel model + + @ControllerAction + void click() { + model.clickCount++ + } +} \ No newline at end of file diff --git a/gui/griffon-app/models/com/muwire/gui/SharedFileModel.groovy b/gui/griffon-app/models/com/muwire/gui/SharedFileModel.groovy new file mode 100644 index 00000000..3b4d60b8 --- /dev/null +++ b/gui/griffon-app/models/com/muwire/gui/SharedFileModel.groovy @@ -0,0 +1,10 @@ +package com.muwire.gui + +import griffon.core.artifact.GriffonModel +import griffon.transform.Observable +import griffon.metadata.ArtifactProviderFor + +@ArtifactProviderFor(GriffonModel) +class SharedFileModel { + @Observable int clickCount = 0 +} \ No newline at end of file diff --git a/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy b/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy new file mode 100644 index 00000000..dcb9f02d --- /dev/null +++ b/gui/griffon-app/views/com/muwire/gui/SharedFileView.groovy @@ -0,0 +1,31 @@ +package com.muwire.gui + +import griffon.core.artifact.GriffonView +import griffon.inject.MVCMember +import griffon.metadata.ArtifactProviderFor +import javax.swing.SwingConstants +import javax.annotation.Nonnull + +@ArtifactProviderFor(GriffonView) +class SharedFileView { + @MVCMember @Nonnull + FactoryBuilderSupport builder + @MVCMember @Nonnull + SharedFileModel model + + void initUI() { + builder.with { + application(size: [320, 160], id: 'shared-file', + title: application.configuration['application.title'], + iconImage: imageIcon('/griffon-icon-48x48.png').image, + iconImages: [imageIcon('/griffon-icon-48x48.png').image, + imageIcon('/griffon-icon-32x32.png').image, + imageIcon('/griffon-icon-16x16.png').image]) { + gridLayout(rows: 2, cols: 1) + label(id: 'clickLabel', text: bind { model.clickCount }, + horizontalAlignment: SwingConstants.CENTER) + button(id: 'clickButton', clickAction) + } + } + } +} \ No newline at end of file