From 6ddd19ac542708f5a2664a299b8abfa7bcd17047 Mon Sep 17 00:00:00 2001 From: David Sparer Date: Thu, 26 Jan 2017 09:41:15 -0700 Subject: [PATCH] added a deletion confirmer to the credential manager --- .../CredentialDeletionMsgBoxConfirmer.cs | 32 +++++++++++++++++++ .../Resources/Language/Language.Designer.cs | 9 ++++++ mRemoteV1/Resources/Language/Language.resx | 3 ++ mRemoteV1/UI/Forms/CredentialManagerForm.cs | 3 ++ mRemoteV1/UI/Forms/frmMain.cs | 5 ++- mRemoteV1/mRemoteV1.csproj | 1 + 6 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 mRemoteV1/Credential/CredentialDeletionMsgBoxConfirmer.cs diff --git a/mRemoteV1/Credential/CredentialDeletionMsgBoxConfirmer.cs b/mRemoteV1/Credential/CredentialDeletionMsgBoxConfirmer.cs new file mode 100644 index 000000000..b69fa2bec --- /dev/null +++ b/mRemoteV1/Credential/CredentialDeletionMsgBoxConfirmer.cs @@ -0,0 +1,32 @@ +using System; +using System.Windows.Forms; +using mRemoteNG.Tree; + + +namespace mRemoteNG.Credential +{ + public class CredentialDeletionMsgBoxConfirmer : IConfirm + { + private readonly Func _confirmationFunc; + + public CredentialDeletionMsgBoxConfirmer(Func confirmationFunc) + { + if (confirmationFunc == null) + throw new ArgumentNullException(nameof(confirmationFunc)); + + _confirmationFunc = confirmationFunc; + } + + public bool Confirm(ICredentialRecord confirmationTarget) + { + var promptText = string.Format(Language.strConfirmDeleteCredentialRecord, confirmationTarget.Title); + return PromptUser(promptText); + } + + private bool PromptUser(string promptMessage) + { + var msgBoxResponse = _confirmationFunc.Invoke(promptMessage, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question); + return msgBoxResponse == DialogResult.Yes; + } + } +} \ No newline at end of file diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs index f7fcb790c..0a6ed19ef 100644 --- a/mRemoteV1/Resources/Language/Language.Designer.cs +++ b/mRemoteV1/Resources/Language/Language.Designer.cs @@ -1094,6 +1094,15 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Are you sure you want to delete the credential record, {0}?. + /// + internal static string strConfirmDeleteCredentialRecord { + get { + return ResourceManager.GetString("strConfirmDeleteCredentialRecord", resourceCulture); + } + } + /// /// Looks up a localized string similar to Are you sure you want to delete the external tool, "{0}"?. /// diff --git a/mRemoteV1/Resources/Language/Language.resx b/mRemoteV1/Resources/Language/Language.resx index 768cadad2..0e6d65ce2 100644 --- a/mRemoteV1/Resources/Language/Language.resx +++ b/mRemoteV1/Resources/Language/Language.resx @@ -2451,4 +2451,7 @@ mRemoteNG will now quit and begin with the installation. Select which credential to use for this connection. + + Are you sure you want to delete the credential record, {0}? + \ No newline at end of file diff --git a/mRemoteV1/UI/Forms/CredentialManagerForm.cs b/mRemoteV1/UI/Forms/CredentialManagerForm.cs index 82ad465d9..50e905bd0 100644 --- a/mRemoteV1/UI/Forms/CredentialManagerForm.cs +++ b/mRemoteV1/UI/Forms/CredentialManagerForm.cs @@ -2,6 +2,7 @@ using System.Windows.Forms; using BrightIdeasSoftware; using mRemoteNG.Credential; +using mRemoteNG.Tree; namespace mRemoteNG.UI.Forms @@ -11,6 +12,7 @@ namespace mRemoteNG.UI.Forms private readonly CredentialManager _credentialManager; public ICredentialRecord SelectedRecord => objectListView1.SelectedObject as ICredentialRecord; + public IConfirm DeletionConfirmer { get; set; } = new AlwaysConfirmYes(); public CredentialManagerForm(CredentialManager credentialManager) { @@ -74,6 +76,7 @@ namespace mRemoteNG.UI.Forms { var selectedCredential = objectListView1.SelectedObject as CredentialRecord; if (selectedCredential == null) return; + if (!DeletionConfirmer.Confirm(selectedCredential)) return; _credentialManager.Remove(selectedCredential); RaiseCredentialsChangedEvent(this); } diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs index 84a252691..f898a35b2 100644 --- a/mRemoteV1/UI/Forms/frmMain.cs +++ b/mRemoteV1/UI/Forms/frmMain.cs @@ -1334,7 +1334,10 @@ namespace mRemoteNG.UI.Forms private void credentialManagerToolStripMenuItem_Click(object sender, EventArgs e) { - var credentialManagerForm = new CredentialManagerForm(_credentialManager); + var credentialManagerForm = new CredentialManagerForm(_credentialManager) + { + DeletionConfirmer = new CredentialDeletionMsgBoxConfirmer(MessageBox.Show) + }; credentialManagerForm.CenterOnTarget(this); credentialManagerForm.Show(); } diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 759ce1858..8d162beea 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -200,6 +200,7 @@ +