From 38a027c308f5e8dd13588e68e6610a83488af0f5 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 10 Mar 2020 21:15:59 +0000 Subject: [PATCH] context menu on the feed items table --- .../com/muwire/gui/MainFrameController.groovy | 2 + .../views/com/muwire/gui/MainFrameView.groovy | 44 ++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index def93f26..b5a578ca 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -573,6 +573,8 @@ class MainFrameController { return Feed f = model.core.getFeedManager().getFeed(items.get(0).getPublisher()) items.each { + if (!model.canDownload(it.getInfoHash())) + return File target = new File(application.context.get("muwire-settings").downloadLocation, it.getName()) model.core.eventBus.publish(new UIDownloadFeedItemEvent(item : it, target : target, sequential : f.isSequential())) } diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index c7343eca..adb891b8 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -892,6 +892,25 @@ class MainFrameView { model.viewFeedItemCertificatesButtonEnabled = item.getCertificates() > 0 } }) + feedItemsTable.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + List selectedItems = selectedFeedItems() + if (e.isPopupTrigger() || e.getButton() == MouseEvent.BUTTON3) + showFeedItemsPopupMenu(e) + else if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2 && + selectedItems != null && selectedItems.size() == 1 && + model.canDownload(selectedItems.get(0).getInfoHash())) { + mvcGroup.controller.downloadFeedItem() + } + } + + @Override + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger() || e.getButton() == MouseEvent.BUTTON3) + showFeedItemsPopupMenu(e) + } + }) // subscription table def subscriptionTable = builder.getVariable("subscription-table") @@ -1159,7 +1178,6 @@ class MainFrameView { Feed feed = selectedFeed() if (feed == null) return - // TODO: finish JPopupMenu menu = new JPopupMenu() if (model.updateFileFeedButtonEnabled) { JMenuItem update = new JMenuItem("Update") @@ -1178,6 +1196,30 @@ class MainFrameView { showPopupMenu(menu,e) } + void showFeedItemsPopupMenu(MouseEvent e) { + List items = selectedFeedItems() + if (items == null || items.isEmpty()) + return + // TODO: finish + JPopupMenu menu = new JPopupMenu() + if (model.downloadFeedItemButtonEnabled) { + JMenuItem download = new JMenuItem("Download") + download.addActionListener({mvcGroup.controller.downloadFeedItem()}) + menu.add(download) + } + if (model.viewFeedItemCommentButtonEnabled) { + JMenuItem viewComment = new JMenuItem("View Comment") + viewComment.addActionListener({mvcGroup.controller.viewFeedItemComment()}) + menu.add(viewComment) + } + if (model.viewFeedItemCertificatesButtonEnabled) { + JMenuItem viewCertificates = new JMenuItem("View Certificates") + viewCertificates.addActionListener({mvcGroup.controller.viewFeedItemCertificates()}) + menu.add(viewCertificates) + } + showPopupMenu(menu, e) + } + def selectedUploader() { def uploadsTable = builder.getVariable("uploads-table") int selectedRow = uploadsTable.getSelectedRow()