diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index ad07a937..95978f9f 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -850,15 +850,6 @@ class MainFrameController { CopyPasteSupport.copyToClipboard(te.persona.toBase64()) } - @ControllerAction - void copyIdFromMessage() { - int row = view.selectedMessageHeader() - if (row < 0) - return - MWMessageStatus status = model.messageHeaders.get(row) - CopyPasteSupport.copyToClipboard(status.message.sender.toBase64()) - } - @ControllerAction void copyIdFromFeed() { Feed feed = view.selectedFeed() diff --git a/gui/griffon-app/controllers/com/muwire/gui/MessageFolderController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MessageFolderController.groovy index b881d4f3..fa58eb59 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MessageFolderController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MessageFolderController.groovy @@ -55,6 +55,15 @@ class MessageFolderController { mvcGroup.createMVCGroup("new-message", UUID.randomUUID().toString(), params) } + @ControllerAction + void copyIdFromMessage() { + int []rows = view.selectedMessageHeaders() + if (rows.length != 1) + return + MWMessageStatus status = model.messageHeaders.get(rows[0]) + CopyPasteSupport.copyToClipboard(status.message.sender.toBase64()) + } + @ControllerAction void messageDelete() { int[] rows = view.selectedMessageHeaders() diff --git a/gui/griffon-app/views/com/muwire/gui/MessageFolderView.groovy b/gui/griffon-app/views/com/muwire/gui/MessageFolderView.groovy index 2b3b8d81..d4facbdd 100644 --- a/gui/griffon-app/views/com/muwire/gui/MessageFolderView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MessageFolderView.groovy @@ -216,27 +216,14 @@ class MessageFolderView { }) - JPopupMenu messagesMenu = new JPopupMenu() - JMenuItem replyMenuItem = new JMenuItem(trans("REPLY")) - replyMenuItem.addActionListener({controller.messageReply()}) - messagesMenu.add(replyMenuItem) - JMenuItem replyAllMenuItem = new JMenuItem(trans("REPLY_ALL")) - replyAllMenuItem.addActionListener({controller.messageReplyAll()}) - messagesMenu.add(replyAllMenuItem) - JMenuItem deleteMenuItem = new JMenuItem(trans("DELETE")) - deleteMenuItem.addActionListener({controller.messageDelete()}) - messagesMenu.add(deleteMenuItem) - JMenuItem copyIdFromMessageItem = new JMenuItem(trans("COPY_FULL_ID")) - copyIdFromMessageItem.addActionListener({controller.copyIdFromMessage()}) - messagesMenu.add(copyIdFromMessageItem) messageHeaderTable.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.isPopupTrigger() || e.button == MouseEvent.BUTTON3) - showPopupMenu(messagesMenu, e) + showPopupMenu(buildMessagesMenu(), e) } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger() || e.button == MouseEvent.BUTTON3) - showPopupMenu(messagesMenu, e) + showPopupMenu(buildMessagesMenu(), e) } }) @@ -255,6 +242,30 @@ class MessageFolderView { } }) } + + private JPopupMenu buildMessagesMenu() { + boolean singleSelected = selectedMessageHeaders().length == 1 + + JPopupMenu messagesMenu = new JPopupMenu() + if (singleSelected) { + JMenuItem replyMenuItem = new JMenuItem(trans("REPLY")) + replyMenuItem.addActionListener({ controller.messageReply() }) + messagesMenu.add(replyMenuItem) + JMenuItem replyAllMenuItem = new JMenuItem(trans("REPLY_ALL")) + replyAllMenuItem.addActionListener({ controller.messageReplyAll() }) + messagesMenu.add(replyAllMenuItem) + } + JMenuItem deleteMenuItem = new JMenuItem(trans("DELETE")) + deleteMenuItem.addActionListener({controller.messageDelete()}) + messagesMenu.add(deleteMenuItem) + + if (singleSelected) { + JMenuItem copyIdFromMessageItem = new JMenuItem(trans("COPY_FULL_ID")) + copyIdFromMessageItem.addActionListener({ controller.copyIdFromMessage() }) + messagesMenu.add(copyIdFromMessageItem) + } + messagesMenu + } private static void showPopupMenu(JPopupMenu menu, MouseEvent event) { menu.show(event.getComponent(), event.getX(), event.getY())