diff --git a/mRemoteV1/App/Runtime.cs b/mRemoteV1/App/Runtime.cs index 319f570bc..f052d06bd 100644 --- a/mRemoteV1/App/Runtime.cs +++ b/mRemoteV1/App/Runtime.cs @@ -593,7 +593,8 @@ namespace mRemoteNG.App connectionInfo.Protocol = url.StartsWith("https:") ? ProtocolType.HTTPS : ProtocolType.HTTP; connectionInfo.SetDefaultPort(); connectionInfo.IsQuickConnect = true; - ConnectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump); + var connectionInitiator = new ConnectionInitiator(); + connectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump); } public static void GoToWebsite() diff --git a/mRemoteV1/Connection/ConnectionInitiator.cs b/mRemoteV1/Connection/ConnectionInitiator.cs index af392bea4..c8c19882d 100644 --- a/mRemoteV1/Connection/ConnectionInitiator.cs +++ b/mRemoteV1/Connection/ConnectionInitiator.cs @@ -14,25 +14,11 @@ namespace mRemoteNG.Connection { public class ConnectionInitiator : IConnectionInitiator { - public static void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force = ConnectionInfo.Force.None) + public void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force = ConnectionInfo.Force.None) { OpenConnection(containerInfo, force, null); } - private static void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force, Form conForm) - { - var children = containerInfo.Children; - if (children.Count == 0) return; - foreach (var child in children) - { - var childAsContainer = child as ContainerInfo; - if (childAsContainer != null) - OpenConnection(childAsContainer, force, conForm); - else - OpenConnection(child, force, conForm); - } - } - public void OpenConnection(ConnectionInfo connectionInfo) { try @@ -45,7 +31,7 @@ namespace mRemoteNG.Connection } } - public static void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force) + public void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force) { try { @@ -57,7 +43,35 @@ namespace mRemoteNG.Connection } } - private static void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force, Form conForm) + public bool SwitchToOpenConnection(ConnectionInfo connectionInfo) + { + var interfaceControl = FindConnectionContainer(connectionInfo); + if (interfaceControl == null) return false; + var connectionWindow = (ConnectionWindow)interfaceControl.FindForm(); + connectionWindow?.Focus(); + var findForm = (ConnectionWindow)interfaceControl.FindForm(); + findForm?.Show(frmMain.Default.pnlDock); + var tabPage = (TabPage)interfaceControl.Parent; + tabPage.Selected = true; + return true; + } + + #region Private + private void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force, Form conForm) + { + var children = containerInfo.Children; + if (children.Count == 0) return; + foreach (var child in children) + { + var childAsContainer = child as ContainerInfo; + if (childAsContainer != null) + OpenConnection(childAsContainer, force, conForm); + else + OpenConnection(child, force, conForm); + } + } + + private void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force, Form conForm) { try { @@ -115,19 +129,6 @@ namespace mRemoteNG.Connection extA?.Start(connectionInfo); } - public static bool SwitchToOpenConnection(ConnectionInfo nCi) - { - var IC = FindConnectionContainer(nCi); - if (IC == null) return false; - var connectionWindow = (ConnectionWindow)IC.FindForm(); - connectionWindow?.Focus(); - var findForm = (ConnectionWindow)IC.FindForm(); - findForm?.Show(frmMain.Default.pnlDock); - var tabPage = (TabPage)IC.Parent; - tabPage.Selected = true; - return true; - } - private static InterfaceControl FindConnectionContainer(ConnectionInfo connectionInfo) { if (connectionInfo.OpenConnections.Count <= 0) return null; @@ -214,10 +215,9 @@ namespace mRemoteNG.Connection { newProtocol.InterfaceControl = new InterfaceControl(connectionContainer, newProtocol, connectionInfo); } + #endregion - - - + #region Event handlers private static void Prot_Event_Disconnected(object sender, string disconnectedMessage) { try @@ -280,5 +280,6 @@ namespace mRemoteNG.Connection Runtime.MessageCollector.AddExceptionStackTrace(Language.strConnectionEventConnectionFailed, ex); } } + #endregion } } \ No newline at end of file diff --git a/mRemoteV1/Connection/IConnectionInitiator.cs b/mRemoteV1/Connection/IConnectionInitiator.cs index 99e8732f8..5a0ff1d32 100644 --- a/mRemoteV1/Connection/IConnectionInitiator.cs +++ b/mRemoteV1/Connection/IConnectionInitiator.cs @@ -1,7 +1,15 @@ +using mRemoteNG.Container; + namespace mRemoteNG.Connection { public interface IConnectionInitiator { void OpenConnection(ConnectionInfo connectionInfo); + + void OpenConnection(ContainerInfo containerInfo, ConnectionInfo.Force force = ConnectionInfo.Force.None); + + void OpenConnection(ConnectionInfo connectionInfo, ConnectionInfo.Force force); + + bool SwitchToOpenConnection(ConnectionInfo connectionInfo); } } \ No newline at end of file diff --git a/mRemoteV1/UI/Controls/ConnectionContextMenu.cs b/mRemoteV1/UI/Controls/ConnectionContextMenu.cs index dc48173b1..e4baf4c82 100644 --- a/mRemoteV1/UI/Controls/ConnectionContextMenu.cs +++ b/mRemoteV1/UI/Controls/ConnectionContextMenu.cs @@ -47,11 +47,13 @@ namespace mRemoteNG.UI.Controls private ToolStripMenuItem _cMenTreeImportActiveDirectory; private ToolStripMenuItem _cMenTreeImportPortScan; private readonly ConnectionTree _connectionTree; + private readonly IConnectionInitiator _connectionInitiator; public ConnectionContextMenu(ConnectionTree connectionTree) { _connectionTree = connectionTree; + _connectionInitiator = new ConnectionInitiator(); InitializeComponent(); ApplyLanguage(); EnableShortcutKeys(); @@ -591,54 +593,54 @@ namespace mRemoteNG.UI.Controls { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.DoNotJump); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.DoNotJump); } private void OnConnectToConsoleSessionClicked(object sender, EventArgs e) { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.UseConsoleSession | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.UseConsoleSession | ConnectionInfo.Force.DoNotJump); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.UseConsoleSession | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.UseConsoleSession | ConnectionInfo.Force.DoNotJump); } private void OnDontConnectToConsoleSessionClicked(object sender, EventArgs e) { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.DontUseConsoleSession | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.DontUseConsoleSession | ConnectionInfo.Force.DoNotJump); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.DontUseConsoleSession | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.DontUseConsoleSession | ConnectionInfo.Force.DoNotJump); } private void OnConnectInFullscreenClicked(object sender, EventArgs e) { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.Fullscreen | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.Fullscreen | ConnectionInfo.Force.DoNotJump); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.Fullscreen | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.Fullscreen | ConnectionInfo.Force.DoNotJump); } private void OnConnectWithNoCredentialsClick(object sender, EventArgs e) { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.NoCredentials); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.NoCredentials); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.NoCredentials); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.NoCredentials); } private void OnChoosePanelBeforeConnectingClicked(object sender, EventArgs e) { var selectedNodeAsContainer = _connectionTree.SelectedNode as ContainerInfo; if (selectedNodeAsContainer != null) - ConnectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.OverridePanel | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(selectedNodeAsContainer, ConnectionInfo.Force.OverridePanel | ConnectionInfo.Force.DoNotJump); else - ConnectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.OverridePanel | ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(_connectionTree.SelectedNode, ConnectionInfo.Force.OverridePanel | ConnectionInfo.Force.DoNotJump); } private void OnDisconnectClicked(object sender, EventArgs e) diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs index 7d008ca5b..b886f1655 100644 --- a/mRemoteV1/UI/Forms/frmMain.cs +++ b/mRemoteV1/UI/Forms/frmMain.cs @@ -587,7 +587,7 @@ namespace mRemoteNG.UI.Forms foreach (var i in ICList) { i.Protocol.Close(); - ConnectionInitiator.OpenConnection(i.Info, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(i.Info, ConnectionInfo.Force.DoNotJump); } // throw it on the garbage collector @@ -862,7 +862,7 @@ namespace mRemoteNG.UI.Forms return; } cmbQuickConnect.Add(connectionInfo); - ConnectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(connectionInfo, ConnectionInfo.Force.DoNotJump); } catch (Exception ex) { diff --git a/mRemoteV1/UI/Window/ConnectionWindow.cs b/mRemoteV1/UI/Window/ConnectionWindow.cs index ed367b818..c4f7ca62a 100644 --- a/mRemoteV1/UI/Window/ConnectionWindow.cs +++ b/mRemoteV1/UI/Window/ConnectionWindow.cs @@ -334,7 +334,7 @@ namespace mRemoteNG.UI.Window var modelAsContainer = model as ContainerInfo; var modelAsConnection = model as ConnectionInfo; if (modelAsContainer != null) - ConnectionInitiator.OpenConnection(modelAsContainer); + _connectionInitiator.OpenConnection(modelAsContainer); else if (modelAsConnection != null) _connectionInitiator.OpenConnection(modelAsConnection); } @@ -650,7 +650,7 @@ namespace mRemoteNG.UI.Window { var interfaceControl = TabController.SelectedTab?.Tag as InterfaceControl; if (interfaceControl == null) return; - ConnectionInitiator.OpenConnection(interfaceControl.Info, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(interfaceControl.Info, ConnectionInfo.Force.DoNotJump); _ignoreChangeSelectedTabClick = false; } catch (Exception ex) @@ -666,7 +666,7 @@ namespace mRemoteNG.UI.Window var interfaceControl = TabController.SelectedTab?.Tag as InterfaceControl; if (interfaceControl == null) return; interfaceControl.Protocol.Close(); - ConnectionInitiator.OpenConnection(interfaceControl.Info, ConnectionInfo.Force.DoNotJump); + _connectionInitiator.OpenConnection(interfaceControl.Info, ConnectionInfo.Force.DoNotJump); } catch (Exception ex) {