From 82b0fa253ce633eb274909cb025ea378949443d5 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 2 Jul 2019 22:26:29 +0100 Subject: [PATCH] enable update and unsubscribe buttons --- .../com/muwire/gui/MainFrameController.groovy | 35 +++++++++++++++++++ .../com/muwire/gui/MainFrameModel.groovy | 3 ++ .../views/com/muwire/gui/MainFrameView.groovy | 34 ++++++++++++++++-- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index d49519c9..69eeb348 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -11,6 +11,7 @@ import net.i2p.data.Base64 import javax.annotation.Nonnull import javax.inject.Inject +import javax.swing.JTable import com.muwire.core.Constants import com.muwire.core.Core @@ -25,6 +26,7 @@ import com.muwire.core.files.DirectoryUnsharedEvent import com.muwire.core.files.FileUnsharedEvent import com.muwire.core.search.QueryEvent import com.muwire.core.search.SearchEvent +import com.muwire.core.trust.RemoteTrustList import com.muwire.core.trust.TrustEvent import com.muwire.core.trust.TrustLevel import com.muwire.core.trust.TrustSubscriptionEvent @@ -223,6 +225,39 @@ class MainFrameController { core.eventBus.publish(new TrustSubscriptionEvent(persona : p, subscribe : true)) } + @ControllerAction + void review() { + println "review action" + } + + @ControllerAction + void update() { + RemoteTrustList list = getSelectedTrustList() + if (list == null) + return + core.eventBus.publish(new TrustSubscriptionEvent(persona : list.persona, subscribe : true)) + } + + @ControllerAction + void unsubscribe() { + RemoteTrustList list = getSelectedTrustList() + if (list == null) + return + core.muOptions.trustSubscriptions.remove(list.persona) + saveMuWireSettings() + model.subscriptions.remove(list) + JTable table = builder.getVariable("subscription-table") + table.model.fireTableDataChanged() + core.eventBus.publish(new TrustSubscriptionEvent(persona : list.persona, subscribe : false)) + } + + private RemoteTrustList getSelectedTrustList() { + int row = view.getSelectedTrustTablesRow("subscription-table") + if (row < 0) + return null + model.subscriptions[row] + } + void unshareSelectedFile() { SharedFile sf = view.selectedSharedFile() if (sf == null) diff --git a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy index 8bb5f7d7..f1e3ee32 100644 --- a/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy @@ -76,6 +76,9 @@ class MainFrameModel { @Observable boolean retryButtonEnabled @Observable boolean pauseButtonEnabled @Observable String resumeButtonText + @Observable boolean reviewButtonEnabled + @Observable boolean updateButtonEnabled + @Observable boolean unsubscribeButtonEnabled private final Set infoHashes = new HashSet<>() diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index 4b49d270..cebfe70f 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -25,6 +25,7 @@ import com.muwire.core.Constants import com.muwire.core.MuWireSettings import com.muwire.core.download.Downloader import com.muwire.core.files.FileSharedEvent +import com.muwire.core.trust.RemoteTrustList import java.awt.BorderLayout import java.awt.CardLayout @@ -309,9 +310,9 @@ class MainFrameView { } } panel(constraints : BorderLayout.SOUTH) { - button(text : "Review") - button(text : "Update") - button(text : "Unsubscribe") + button(text : "Review", enabled : bind {model.reviewButtonEnabled}, reviewAction) + button(text : "Update", enabled : bind {model.updateButtonEnabled}, updateAction) + button(text : "Unsubscribe", enabled : bind {model.unsubscribeButtonEnabled}, unsubscribeAction) } } } @@ -462,6 +463,33 @@ class MainFrameView { def subscriptionTable = builder.getVariable("subscription-table") subscriptionTable.rowSorter.addRowSorterListener({evt -> trustTablesSortEvents["subscription-table"] = evt}) subscriptionTable.rowSorter.setSortsOnUpdates(true) + selectionModel = subscriptionTable.getSelectionModel() + selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) + selectionModel.addListSelectionListener({ + int selectedRow = getSelectedTrustTablesRow("subscription-table") + if (selectedRow < 0) { + model.reviewButtonEnabled = false + model.updateButtonEnabled = false + model.unsubscribeButtonEnabled = false + return + } + def trustList = model.subscriptions[selectedRow] + if (trustList == null) + return + switch(trustList.status) { + case RemoteTrustList.Status.NEW: + case RemoteTrustList.Status.UPDATING: + model.reviewButtonEnabled = false + model.updateButtonEnabled = false + model.unsubscribeButtonEnabled = false + break + case RemoteTrustList.Status.UPDATED: + model.reviewButtonEnabled = true + model.updateButtonEnabled = true + model.unsubscribeButtonEnabled = true + break + } + }) // trusted table def trustedTable = builder.getVariable("trusted-table")