diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index e8645c6b..9d0be9dd 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -234,8 +234,11 @@ class MainFrameController { int row = view.getSelectedTrustTablesRow(tableName) if (row < 0) return + String reason = null + if (level != TrustLevel.NEUTRAL) + reason = JOptionPane.showInputDialog("Enter reason (optional)") builder.getVariable(tableName).model.fireTableDataChanged() - core.eventBus.publish(new TrustEvent(persona : list[row].persona, level : level)) + core.eventBus.publish(new TrustEvent(persona : list[row].persona, level : level, reason : reason)) } @ControllerAction @@ -322,6 +325,29 @@ class MainFrameController { return null model.subscriptions[row] } + + void browseFromTrusted() { + int row = view.getSelectedTrustTablesRow("trusted-table") + if (row < 0) + return + Persona p = model.trusted[row].persona + + String groupId = p.getHumanReadableName() + "-browse" + def params = [:] + params['host'] = p + params['core'] = model.core + mvcGroup.createMVCGroup("browse",groupId,params) + } + + void chatFromTrusted() { + int row = view.getSelectedTrustTablesRow("trusted-table") + if (row < 0) + return + Persona p = model.trusted[row].persona + + startChat(p) + view.showChatWindow.call() + } void unshareSelectedFile() { def sf = view.selectedSharedFiles() diff --git a/gui/griffon-app/controllers/com/muwire/gui/SearchTabController.groovy b/gui/griffon-app/controllers/com/muwire/gui/SearchTabController.groovy index 070640a0..3d6d7fa8 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/SearchTabController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/SearchTabController.groovy @@ -99,7 +99,7 @@ class SearchTabController { if (sender == null) return - String groupId = sender.getHumanReadableName() + String groupId = sender.getHumanReadableName() + "-browse" Map params = new HashMap<>() params['host'] = sender params['core'] = core diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index c67378f8..a0b057fb 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -777,6 +777,34 @@ class MainFrameView { model.markNeutralFromTrustedButtonEnabled = true } }) + + JPopupMenu trustMenu = new JPopupMenu() + JMenuItem subscribeItem = new JMenuItem("Subscribe") + subscribeItem.addActionListener({mvcGroup.controller.subscribe()}) + trustMenu.add(subscribeItem) + JMenuItem markNeutralItem = new JMenuItem("Mark Neutral") + markNeutralItem.addActionListener({mvcGroup.controller.markNeutralFromTrusted()}) + trustMenu.add(markNeutralItem) + JMenuItem markDistrustedItem = new JMenuItem("Mark Distrusted") + markDistrustedItem.addActionListener({mvcGroup.controller.markDistrusted()}) + trustMenu.add(markDistrustedItem) + JMenuItem browseItem = new JMenuItem("Browse") + browseItem.addActionListener({mvcGroup.controller.browseFromTrusted()}) + trustMenu.add(browseItem) + JMenuItem chatItem = new JMenuItem("Chat") + chatItem.addActionListener({mvcGroup.controller.chatFromTrusted()}) + trustMenu.add(chatItem) + + trustedTable.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (e.isPopupTrigger() || e.button == MouseEvent.BUTTON3) + showPopupMenu(trustMenu, e) + } + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger() || e.button == MouseEvent.BUTTON3) + showPopupMenu(trustMenu, e) + } + }) // distrusted table def distrustedTable = builder.getVariable("distrusted-table")