diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs index 9cb3d383..3a26d22a 100644 --- a/mRemoteV1/UI/Forms/frmMain.cs +++ b/mRemoteV1/UI/Forms/frmMain.cs @@ -48,6 +48,7 @@ namespace mRemoteNG.UI.Forms private readonly IList _messageWriters = new List(); private readonly ThemeManager _themeManager; private readonly FileBackupPruner _backupPruner = new FileBackupPruner(); + private readonly UnlockerFormFactory _credRepoUnlockerFormFactory = new UnlockerFormFactory(); internal FullscreenHandler Fullscreen { get; set; } @@ -248,6 +249,7 @@ namespace mRemoteNG.UI.Forms toolsMenu.MainForm = this; toolsMenu.CredentialProviderCatalog = Runtime.CredentialProviderCatalog; + toolsMenu.UnlockerFormFactory = _credRepoUnlockerFormFactory; _quickConnectToolStrip.ConnectionInitiator = connectionInitiator; } diff --git a/mRemoteV1/UI/Menu/ToolsMenu.cs b/mRemoteV1/UI/Menu/ToolsMenu.cs index fb02d0fe..86f0ce9e 100644 --- a/mRemoteV1/UI/Menu/ToolsMenu.cs +++ b/mRemoteV1/UI/Menu/ToolsMenu.cs @@ -2,6 +2,8 @@ using System.Windows.Forms; using mRemoteNG.App; using mRemoteNG.Credential; +using mRemoteNG.UI.Forms; +using mRemoteNG.UI.Forms.CredentialManagerPages; namespace mRemoteNG.UI.Menu { @@ -15,9 +17,11 @@ namespace mRemoteNG.UI.Menu private ToolStripMenuItem _mMenToolsUvncsc; private ToolStripMenuItem _mMenToolsComponentsCheck; private ToolStripMenuItem _mMenViewScreenshotManager; + private ToolStripMenuItem _credentialManagerToolStripMenuItem; public Form MainForm { get; set; } public ICredentialRepositoryList CredentialProviderCatalog { get; set; } + public UnlockerFormFactory UnlockerFormFactory { get; set; } public ToolsMenu() { @@ -26,6 +30,7 @@ namespace mRemoteNG.UI.Menu private void Initialize() { + _credentialManagerToolStripMenuItem = new ToolStripMenuItem(); _mMenToolsSshTransfer = new ToolStripMenuItem(); _mMenToolsUvncsc = new ToolStripMenuItem(); _mMenToolsExternalApps = new ToolStripMenuItem(); @@ -38,18 +43,27 @@ namespace mRemoteNG.UI.Menu // mMenTools // DropDownItems.AddRange(new ToolStripItem[] { - _mMenToolsSshTransfer, - _mMenToolsUvncsc, - _mMenToolsExternalApps, - _mMenToolsPortScan, - _mMenViewScreenshotManager, - _mMenToolsSep1, - _mMenToolsComponentsCheck, - _mMenToolsOptions}); + _credentialManagerToolStripMenuItem, + _mMenToolsSshTransfer, + _mMenToolsUvncsc, + _mMenToolsExternalApps, + _mMenToolsPortScan, + _mMenViewScreenshotManager, + _mMenToolsSep1, + _mMenToolsComponentsCheck, + _mMenToolsOptions}); Name = "mMenTools"; Size = new System.Drawing.Size(48, 20); Text = Language.strMenuTools; // + // credentialManagerToolStripMenuItem + // + _credentialManagerToolStripMenuItem.Image = Resources.key; + _credentialManagerToolStripMenuItem.Name = "credentialManagerToolStripMenuItem"; + _credentialManagerToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + _credentialManagerToolStripMenuItem.Text = Language.strCredentialManager; + _credentialManagerToolStripMenuItem.Click += credentialManagerToolStripMenuItem_Click; + // // mMenToolsSSHTransfer // _mMenToolsSshTransfer.Image = Resources.SSHTransfer; @@ -125,6 +139,22 @@ namespace mRemoteNG.UI.Menu } #region Tools + private void credentialManagerToolStripMenuItem_Click(object sender, EventArgs e) + { + var pages = new UserControl[] + { + new CredentialListPage(CredentialProviderCatalog) + { + DeletionConfirmer = new CredentialDeletionMsgBoxConfirmer(MessageBox.Show) + }, + new CredentialRepositoriesPage(CredentialProviderCatalog, UnlockerFormFactory) + }; + + var credentialManagerForm = new CredentialManagerForm(pages); + credentialManagerForm.CenterOnTarget(MainForm); + credentialManagerForm.Show(); + } + private void mMenToolsSSHTransfer_Click(object sender, EventArgs e) { Windows.Show(WindowType.SSHTransfer);