Imports mRemoteNG Imports mRemoteNG.My Imports WeifenLuo.WinFormsUI.Docking Imports mRemoteNG.App.Runtime Namespace UI Namespace Window Public Class Tree Inherits UI.Window.Base #Region "Form Init" Private components As System.ComponentModel.IContainer Friend WithEvents txtSearch As System.Windows.Forms.TextBox Friend WithEvents pnlConnections As System.Windows.Forms.Panel Friend WithEvents imgListTree As System.Windows.Forms.ImageList Friend WithEvents msMain As System.Windows.Forms.MenuStrip Friend WithEvents mMenView As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mMenViewExpandAllFolders As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mMenViewCollapseAllFolders As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTree As System.Windows.Forms.ContextMenuStrip Friend WithEvents cMenTreeAddConnection As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeAddFolder As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeSep1 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cMenTreeConnect As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeConnectWithOptions As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeConnectWithOptionsConnectToConsoleSession As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeConnectWithOptionsConnectInFullscreen As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeDisconnect As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeSep2 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cMenTreeToolsTransferFile As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsImportExport As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsImportExportExportmRemoteXML As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsImportExportImportmRemoteXML As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsImportExportSep1 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cMenTreeToolsImportExportImportFromAD As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsSort As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsSortAscending As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsSortDescending As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeSep3 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cMenTreeRename As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeDelete As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeSep4 As System.Windows.Forms.ToolStripSeparator Friend WithEvents cMenTreeMoveUp As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeMoveDown As System.Windows.Forms.ToolStripMenuItem Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents cMenTreeToolsImportExportImportFromRDPFiles As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsExternalApps As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeDuplicate As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeToolsImportExportImportFromPortScan As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeConnectWithOptionsChoosePanelBeforeConnecting As System.Windows.Forms.ToolStripMenuItem Friend WithEvents cMenTreeConnectWithOptionsDontConnectToConsoleSession As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mMenSortAscending As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mMenAddConnection As System.Windows.Forms.ToolStripMenuItem Friend WithEvents mMenAddFolder As System.Windows.Forms.ToolStripMenuItem Public WithEvents tvConnections As System.Windows.Forms.TreeView Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() Dim TreeNode1 As System.Windows.Forms.TreeNode = New System.Windows.Forms.TreeNode("Connections") Me.tvConnections = New System.Windows.Forms.TreeView() Me.cMenTree = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cMenTreeAddConnection = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeAddFolder = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeSep1 = New System.Windows.Forms.ToolStripSeparator() Me.cMenTreeConnect = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeConnectWithOptions = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeConnectWithOptionsConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeConnectWithOptionsConnectInFullscreen = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeDisconnect = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeSep2 = New System.Windows.Forms.ToolStripSeparator() Me.cMenTreeToolsTransferFile = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExport = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExportExportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExportImportmRemoteXML = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExportSep1 = New System.Windows.Forms.ToolStripSeparator() Me.cMenTreeToolsImportExportImportFromAD = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExportImportFromRDPFiles = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsImportExportImportFromPortScan = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsSort = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsSortAscending = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsSortDescending = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeToolsExternalApps = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeSep3 = New System.Windows.Forms.ToolStripSeparator() Me.cMenTreeDuplicate = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeRename = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeDelete = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeSep4 = New System.Windows.Forms.ToolStripSeparator() Me.cMenTreeMoveUp = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTreeMoveDown = New System.Windows.Forms.ToolStripMenuItem() Me.imgListTree = New System.Windows.Forms.ImageList(Me.components) Me.pnlConnections = New System.Windows.Forms.Panel() Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.txtSearch = New System.Windows.Forms.TextBox() Me.msMain = New System.Windows.Forms.MenuStrip() Me.mMenAddConnection = New System.Windows.Forms.ToolStripMenuItem() Me.mMenAddFolder = New System.Windows.Forms.ToolStripMenuItem() Me.mMenView = New System.Windows.Forms.ToolStripMenuItem() Me.mMenViewExpandAllFolders = New System.Windows.Forms.ToolStripMenuItem() Me.mMenViewCollapseAllFolders = New System.Windows.Forms.ToolStripMenuItem() Me.mMenSortAscending = New System.Windows.Forms.ToolStripMenuItem() Me.cMenTree.SuspendLayout() Me.pnlConnections.SuspendLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.msMain.SuspendLayout() Me.SuspendLayout() ' 'tvConnections ' Me.tvConnections.AllowDrop = True Me.tvConnections.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.tvConnections.BorderStyle = System.Windows.Forms.BorderStyle.None Me.tvConnections.ContextMenuStrip = Me.cMenTree Me.tvConnections.HideSelection = False Me.tvConnections.ImageIndex = 0 Me.tvConnections.ImageList = Me.imgListTree Me.tvConnections.LabelEdit = True Me.tvConnections.Location = New System.Drawing.Point(0, 0) Me.tvConnections.Name = "tvConnections" TreeNode1.Name = "nodeRoot" TreeNode1.Text = "Connections" Me.tvConnections.Nodes.AddRange(New System.Windows.Forms.TreeNode() {TreeNode1}) Me.tvConnections.SelectedImageIndex = 0 Me.tvConnections.Size = New System.Drawing.Size(192, 410) Me.tvConnections.TabIndex = 20 ' 'cMenTree ' Me.cMenTree.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.cMenTree.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenTreeAddConnection, Me.cMenTreeAddFolder, Me.cMenTreeSep1, Me.cMenTreeConnect, Me.cMenTreeConnectWithOptions, Me.cMenTreeDisconnect, Me.cMenTreeSep2, Me.cMenTreeToolsTransferFile, Me.cMenTreeToolsImportExport, Me.cMenTreeToolsSort, Me.cMenTreeToolsExternalApps, Me.cMenTreeSep3, Me.cMenTreeDuplicate, Me.cMenTreeRename, Me.cMenTreeDelete, Me.cMenTreeSep4, Me.cMenTreeMoveUp, Me.cMenTreeMoveDown}) Me.cMenTree.Name = "cMenTree" Me.cMenTree.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional Me.cMenTree.Size = New System.Drawing.Size(187, 336) ' 'cMenTreeAddConnection ' Me.cMenTreeAddConnection.Image = Global.mRemoteNG.My.Resources.Resources.Connection_Add Me.cMenTreeAddConnection.Name = "cMenTreeAddConnection" Me.cMenTreeAddConnection.Size = New System.Drawing.Size(186, 22) Me.cMenTreeAddConnection.Text = "New Connection" ' 'cMenTreeAddFolder ' Me.cMenTreeAddFolder.Image = Global.mRemoteNG.My.Resources.Resources.Folder_Add Me.cMenTreeAddFolder.Name = "cMenTreeAddFolder" Me.cMenTreeAddFolder.Size = New System.Drawing.Size(186, 22) Me.cMenTreeAddFolder.Text = "New Folder" ' 'cMenTreeSep1 ' Me.cMenTreeSep1.Name = "cMenTreeSep1" Me.cMenTreeSep1.Size = New System.Drawing.Size(183, 6) ' 'cMenTreeConnect ' Me.cMenTreeConnect.Image = Global.mRemoteNG.My.Resources.Resources.Play Me.cMenTreeConnect.Name = "cMenTreeConnect" Me.cMenTreeConnect.ShortcutKeys = CType(((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Shift) _ Or System.Windows.Forms.Keys.C), System.Windows.Forms.Keys) Me.cMenTreeConnect.Size = New System.Drawing.Size(186, 22) Me.cMenTreeConnect.Text = "Connect" ' 'cMenTreeConnectWithOptions ' Me.cMenTreeConnectWithOptions.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenTreeConnectWithOptionsConnectToConsoleSession, Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession, Me.cMenTreeConnectWithOptionsConnectInFullscreen, Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting}) Me.cMenTreeConnectWithOptions.Name = "cMenTreeConnectWithOptions" Me.cMenTreeConnectWithOptions.Size = New System.Drawing.Size(186, 22) Me.cMenTreeConnectWithOptions.Text = "Connect (with options)" ' 'cMenTreeConnectWithOptionsConnectToConsoleSession ' Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Name = "cMenTreeConnectWithOptionsConnectToConsoleSession" Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Size = New System.Drawing.Size(231, 22) Me.cMenTreeConnectWithOptionsConnectToConsoleSession.Text = "Connect to console session" ' 'cMenTreeConnectWithOptionsDontConnectToConsoleSession ' Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Name = "cMenTreeConnectWithOptionsDontConnectToConsoleSession" Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Size = New System.Drawing.Size(231, 22) Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Text = "Don't connect to console session" Me.cMenTreeConnectWithOptionsDontConnectToConsoleSession.Visible = False ' 'cMenTreeConnectWithOptionsConnectInFullscreen ' Me.cMenTreeConnectWithOptionsConnectInFullscreen.Image = Global.mRemoteNG.My.Resources.Resources.Fullscreen Me.cMenTreeConnectWithOptionsConnectInFullscreen.Name = "cMenTreeConnectWithOptionsConnectInFullscreen" Me.cMenTreeConnectWithOptionsConnectInFullscreen.Size = New System.Drawing.Size(231, 22) Me.cMenTreeConnectWithOptionsConnectInFullscreen.Text = "Connect in fullscreen" ' 'cMenTreeConnectWithOptionsChoosePanelBeforeConnecting ' Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Image = Global.mRemoteNG.My.Resources.Resources.Panels Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Name = "cMenTreeConnectWithOptionsChoosePanelBeforeConnecting" Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Size = New System.Drawing.Size(231, 22) Me.cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Text = "Choose panel before connecting" ' 'cMenTreeDisconnect ' Me.cMenTreeDisconnect.Image = Global.mRemoteNG.My.Resources.Resources.Pause Me.cMenTreeDisconnect.Name = "cMenTreeDisconnect" Me.cMenTreeDisconnect.Size = New System.Drawing.Size(186, 22) Me.cMenTreeDisconnect.Text = "Disconnect" ' 'cMenTreeSep2 ' Me.cMenTreeSep2.Name = "cMenTreeSep2" Me.cMenTreeSep2.Size = New System.Drawing.Size(183, 6) ' 'cMenTreeToolsTransferFile ' Me.cMenTreeToolsTransferFile.Image = Global.mRemoteNG.My.Resources.Resources.SSHTransfer Me.cMenTreeToolsTransferFile.Name = "cMenTreeToolsTransferFile" Me.cMenTreeToolsTransferFile.Size = New System.Drawing.Size(186, 22) Me.cMenTreeToolsTransferFile.Text = "Transfer File (SSH)" ' 'cMenTreeToolsImportExport ' Me.cMenTreeToolsImportExport.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenTreeToolsImportExportExportmRemoteXML, Me.cMenTreeToolsImportExportImportmRemoteXML, Me.cMenTreeToolsImportExportSep1, Me.cMenTreeToolsImportExportImportFromAD, Me.cMenTreeToolsImportExportImportFromRDPFiles, Me.cMenTreeToolsImportExportImportFromPortScan}) Me.cMenTreeToolsImportExport.Name = "cMenTreeToolsImportExport" Me.cMenTreeToolsImportExport.Size = New System.Drawing.Size(186, 22) Me.cMenTreeToolsImportExport.Text = "Import/Export" ' 'cMenTreeToolsImportExportExportmRemoteXML ' Me.cMenTreeToolsImportExportExportmRemoteXML.Image = Global.mRemoteNG.My.Resources.Resources.Connections_SaveAs Me.cMenTreeToolsImportExportExportmRemoteXML.Name = "cMenTreeToolsImportExportExportmRemoteXML" Me.cMenTreeToolsImportExportExportmRemoteXML.Size = New System.Drawing.Size(204, 22) Me.cMenTreeToolsImportExportExportmRemoteXML.Text = "Export mRemote XML" ' 'cMenTreeToolsImportExportImportmRemoteXML ' Me.cMenTreeToolsImportExportImportmRemoteXML.Image = Global.mRemoteNG.My.Resources.Resources.Connections_Load Me.cMenTreeToolsImportExportImportmRemoteXML.Name = "cMenTreeToolsImportExportImportmRemoteXML" Me.cMenTreeToolsImportExportImportmRemoteXML.Size = New System.Drawing.Size(204, 22) Me.cMenTreeToolsImportExportImportmRemoteXML.Text = "Import mRemote XML" ' 'cMenTreeToolsImportExportSep1 ' Me.cMenTreeToolsImportExportSep1.Name = "cMenTreeToolsImportExportSep1" Me.cMenTreeToolsImportExportSep1.Size = New System.Drawing.Size(201, 6) ' 'cMenTreeToolsImportExportImportFromAD ' Me.cMenTreeToolsImportExportImportFromAD.Image = Global.mRemoteNG.My.Resources.Resources.ActiveDirectory Me.cMenTreeToolsImportExportImportFromAD.Name = "cMenTreeToolsImportExportImportFromAD" Me.cMenTreeToolsImportExportImportFromAD.Size = New System.Drawing.Size(204, 22) Me.cMenTreeToolsImportExportImportFromAD.Text = "Import from Active Directory" ' 'cMenTreeToolsImportExportImportFromRDPFiles ' Me.cMenTreeToolsImportExportImportFromRDPFiles.Image = Global.mRemoteNG.My.Resources.Resources.RDP Me.cMenTreeToolsImportExportImportFromRDPFiles.Name = "cMenTreeToolsImportExportImportFromRDPFiles" Me.cMenTreeToolsImportExportImportFromRDPFiles.Size = New System.Drawing.Size(204, 22) Me.cMenTreeToolsImportExportImportFromRDPFiles.Text = "Import from .RDP file(s)" ' 'cMenTreeToolsImportExportImportFromPortScan ' Me.cMenTreeToolsImportExportImportFromPortScan.Image = Global.mRemoteNG.My.Resources.Resources.PortScan Me.cMenTreeToolsImportExportImportFromPortScan.Name = "cMenTreeToolsImportExportImportFromPortScan" Me.cMenTreeToolsImportExportImportFromPortScan.Size = New System.Drawing.Size(204, 22) Me.cMenTreeToolsImportExportImportFromPortScan.Text = "Import from Port Scan" ' 'cMenTreeToolsSort ' Me.cMenTreeToolsSort.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cMenTreeToolsSortAscending, Me.cMenTreeToolsSortDescending}) Me.cMenTreeToolsSort.Name = "cMenTreeToolsSort" Me.cMenTreeToolsSort.Size = New System.Drawing.Size(186, 22) Me.cMenTreeToolsSort.Text = "Sort" ' 'cMenTreeToolsSortAscending ' Me.cMenTreeToolsSortAscending.Image = Global.mRemoteNG.My.Resources.Resources.Sort_AZ Me.cMenTreeToolsSortAscending.Name = "cMenTreeToolsSortAscending" Me.cMenTreeToolsSortAscending.Size = New System.Drawing.Size(157, 22) Me.cMenTreeToolsSortAscending.Text = "Ascending (A-Z)" ' 'cMenTreeToolsSortDescending ' Me.cMenTreeToolsSortDescending.Image = Global.mRemoteNG.My.Resources.Resources.Sort_ZA Me.cMenTreeToolsSortDescending.Name = "cMenTreeToolsSortDescending" Me.cMenTreeToolsSortDescending.Size = New System.Drawing.Size(157, 22) Me.cMenTreeToolsSortDescending.Text = "Descending (Z-A)" ' 'cMenTreeToolsExternalApps ' Me.cMenTreeToolsExternalApps.Image = Global.mRemoteNG.My.Resources.Resources.ExtApp Me.cMenTreeToolsExternalApps.Name = "cMenTreeToolsExternalApps" Me.cMenTreeToolsExternalApps.Size = New System.Drawing.Size(186, 22) Me.cMenTreeToolsExternalApps.Text = "External Applications" ' 'cMenTreeSep3 ' Me.cMenTreeSep3.Name = "cMenTreeSep3" Me.cMenTreeSep3.Size = New System.Drawing.Size(183, 6) ' 'cMenTreeDuplicate ' Me.cMenTreeDuplicate.Image = Global.mRemoteNG.My.Resources.Resources.Connection_Duplicate Me.cMenTreeDuplicate.Name = "cMenTreeDuplicate" Me.cMenTreeDuplicate.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.D), System.Windows.Forms.Keys) Me.cMenTreeDuplicate.Size = New System.Drawing.Size(186, 22) Me.cMenTreeDuplicate.Text = "Duplicate" ' 'cMenTreeRename ' Me.cMenTreeRename.Image = Global.mRemoteNG.My.Resources.Resources.Rename Me.cMenTreeRename.Name = "cMenTreeRename" Me.cMenTreeRename.ShortcutKeys = System.Windows.Forms.Keys.F2 Me.cMenTreeRename.Size = New System.Drawing.Size(186, 22) Me.cMenTreeRename.Text = "Rename" ' 'cMenTreeDelete ' Me.cMenTreeDelete.Image = Global.mRemoteNG.My.Resources.Resources.Delete Me.cMenTreeDelete.Name = "cMenTreeDelete" Me.cMenTreeDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete Me.cMenTreeDelete.Size = New System.Drawing.Size(186, 22) Me.cMenTreeDelete.Text = "Delete" ' 'cMenTreeSep4 ' Me.cMenTreeSep4.Name = "cMenTreeSep4" Me.cMenTreeSep4.Size = New System.Drawing.Size(183, 6) ' 'cMenTreeMoveUp ' Me.cMenTreeMoveUp.Image = Global.mRemoteNG.My.Resources.Resources.Arrow_Up Me.cMenTreeMoveUp.Name = "cMenTreeMoveUp" Me.cMenTreeMoveUp.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Up), System.Windows.Forms.Keys) Me.cMenTreeMoveUp.Size = New System.Drawing.Size(186, 22) Me.cMenTreeMoveUp.Text = "Move up" ' 'cMenTreeMoveDown ' Me.cMenTreeMoveDown.Image = Global.mRemoteNG.My.Resources.Resources.Arrow_Down Me.cMenTreeMoveDown.Name = "cMenTreeMoveDown" Me.cMenTreeMoveDown.ShortcutKeys = CType((System.Windows.Forms.Keys.Control Or System.Windows.Forms.Keys.Down), System.Windows.Forms.Keys) Me.cMenTreeMoveDown.Size = New System.Drawing.Size(186, 22) Me.cMenTreeMoveDown.Text = "Move down" ' 'imgListTree ' Me.imgListTree.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit Me.imgListTree.ImageSize = New System.Drawing.Size(16, 16) Me.imgListTree.TransparentColor = System.Drawing.Color.Transparent ' 'pnlConnections ' Me.pnlConnections.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.pnlConnections.Controls.Add(Me.PictureBox1) Me.pnlConnections.Controls.Add(Me.txtSearch) Me.pnlConnections.Controls.Add(Me.tvConnections) Me.pnlConnections.Location = New System.Drawing.Point(0, 25) Me.pnlConnections.Name = "pnlConnections" Me.pnlConnections.Size = New System.Drawing.Size(192, 428) Me.pnlConnections.TabIndex = 9 ' 'PictureBox1 ' Me.PictureBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles) Me.PictureBox1.Image = Global.mRemoteNG.My.Resources.Resources.Search Me.PictureBox1.Location = New System.Drawing.Point(2, 412) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(16, 16) Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize Me.PictureBox1.TabIndex = 1 Me.PictureBox1.TabStop = False ' 'txtSearch ' Me.txtSearch.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.txtSearch.BorderStyle = System.Windows.Forms.BorderStyle.None Me.txtSearch.ForeColor = System.Drawing.SystemColors.GrayText Me.txtSearch.Location = New System.Drawing.Point(19, 413) Me.txtSearch.Name = "txtSearch" Me.txtSearch.Size = New System.Drawing.Size(171, 13) Me.txtSearch.TabIndex = 30 Me.txtSearch.TabStop = False Me.txtSearch.Text = "Search" ' 'msMain ' Me.msMain.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.msMain.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mMenAddConnection, Me.mMenAddFolder, Me.mMenView, Me.mMenSortAscending}) Me.msMain.Location = New System.Drawing.Point(0, 0) Me.msMain.Name = "msMain" Me.msMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional Me.msMain.ShowItemToolTips = True Me.msMain.Size = New System.Drawing.Size(192, 24) Me.msMain.TabIndex = 10 Me.msMain.Text = "MenuStrip1" ' 'mMenAddConnection ' Me.mMenAddConnection.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.mMenAddConnection.Image = Global.mRemoteNG.My.Resources.Resources.Connection_Add Me.mMenAddConnection.Name = "mMenAddConnection" Me.mMenAddConnection.Size = New System.Drawing.Size(28, 20) ' 'mMenAddFolder ' Me.mMenAddFolder.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.mMenAddFolder.Image = Global.mRemoteNG.My.Resources.Resources.Folder_Add Me.mMenAddFolder.Name = "mMenAddFolder" Me.mMenAddFolder.Size = New System.Drawing.Size(28, 20) ' 'mMenView ' Me.mMenView.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.mMenView.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.mMenViewExpandAllFolders, Me.mMenViewCollapseAllFolders}) Me.mMenView.Image = Global.mRemoteNG.My.Resources.Resources.View Me.mMenView.Name = "mMenView" Me.mMenView.Size = New System.Drawing.Size(28, 20) Me.mMenView.Text = "&View" ' 'mMenViewExpandAllFolders ' Me.mMenViewExpandAllFolders.Image = Global.mRemoteNG.My.Resources.Resources.Expand Me.mMenViewExpandAllFolders.Name = "mMenViewExpandAllFolders" Me.mMenViewExpandAllFolders.Size = New System.Drawing.Size(161, 22) Me.mMenViewExpandAllFolders.Text = "Expand all folders" ' 'mMenViewCollapseAllFolders ' Me.mMenViewCollapseAllFolders.Image = Global.mRemoteNG.My.Resources.Resources.Collapse Me.mMenViewCollapseAllFolders.Name = "mMenViewCollapseAllFolders" Me.mMenViewCollapseAllFolders.Size = New System.Drawing.Size(161, 22) Me.mMenViewCollapseAllFolders.Text = "Collapse all folders" ' 'mMenSortAscending ' Me.mMenSortAscending.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image Me.mMenSortAscending.Image = Global.mRemoteNG.My.Resources.Resources.Sort_AZ Me.mMenSortAscending.Name = "mMenSortAscending" Me.mMenSortAscending.Size = New System.Drawing.Size(28, 20) ' 'Tree ' Me.ClientSize = New System.Drawing.Size(192, 453) Me.Controls.Add(Me.msMain) Me.Controls.Add(Me.pnlConnections) Me.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.HideOnClose = True Me.Icon = Global.mRemoteNG.My.Resources.Resources.Root_Icon Me.Name = "Tree" Me.TabText = "Connections" Me.Text = "Connections" Me.cMenTree.ResumeLayout(False) Me.pnlConnections.ResumeLayout(False) Me.pnlConnections.PerformLayout() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit() Me.msMain.ResumeLayout(False) Me.msMain.PerformLayout() Me.ResumeLayout(False) Me.PerformLayout() End Sub #End Region #Region "Form Stuff" Private Sub Tree_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ApplyLanguage() AddHandler Themes.ThemeManager.ThemeChanged, AddressOf ApplyTheme ApplyTheme() txtSearch.Multiline = True txtSearch.MinimumSize = New Size(0, 14) txtSearch.Size = New Size(txtSearch.Size.Width, 14) txtSearch.Multiline = False End Sub Private Sub ApplyLanguage() cMenTreeAddConnection.Text = My.Language.strAddConnection cMenTreeAddFolder.Text = My.Language.strAddFolder cMenTreeConnect.Text = My.Language.strConnect cMenTreeConnectWithOptions.Text = My.Language.strConnectWithOptions cMenTreeConnectWithOptionsConnectToConsoleSession.Text = My.Language.strConnectToConsoleSession cMenTreeConnectWithOptionsConnectInFullscreen.Text = My.Language.strConnectInFullscreen cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Text = My.Language.strChoosePanelBeforeConnecting cMenTreeDisconnect.Text = My.Language.strMenuDisconnect cMenTreeToolsTransferFile.Text = My.Language.strMenuTransferFile cMenTreeToolsImportExport.Text = My.Language.strImportExport cMenTreeToolsImportExportExportmRemoteXML.Text = My.Language.strExportmRemoteXML cMenTreeToolsImportExportImportmRemoteXML.Text = My.Language.strImportmRemoteXML cMenTreeToolsImportExportImportFromAD.Text = My.Language.strImportAD cMenTreeToolsImportExportImportFromRDPFiles.Text = My.Language.strImportRDPFiles cMenTreeToolsImportExportImportFromPortScan.Text = My.Language.strImportPortScan cMenTreeToolsSort.Text = My.Language.strSort cMenTreeToolsSortAscending.Text = My.Language.strSortAsc cMenTreeToolsSortDescending.Text = My.Language.strSortDesc cMenTreeToolsExternalApps.Text = My.Language.strMenuExternalTools cMenTreeDuplicate.Text = My.Language.strDuplicate cMenTreeRename.Text = My.Language.strRename cMenTreeDelete.Text = My.Language.strMenuDelete cMenTreeMoveUp.Text = My.Language.strMoveUp cMenTreeMoveDown.Text = My.Language.strMoveDown mMenAddConnection.ToolTipText = My.Language.strAddConnection mMenAddFolder.ToolTipText = My.Language.strAddFolder mMenView.ToolTipText = My.Language.strMenuView.Replace("&", "") mMenViewExpandAllFolders.Text = My.Language.strExpandAllFolders mMenViewCollapseAllFolders.Text = My.Language.strCollapseAllFolders mMenSortAscending.ToolTipText = My.Language.strSortAsc txtSearch.Text = Language.strSearchPrompt TabText = My.Language.strConnections Text = My.Language.strConnections End Sub Public Sub ApplyTheme() With Themes.ThemeManager.ActiveTheme msMain.BackColor = .ToolbarBackgroundColor msMain.ForeColor = .ToolbarTextColor tvConnections.BackColor = .ConnectionsPanelBackgroundColor tvConnections.ForeColor = .ConnectionsPanelTextColor tvConnections.LineColor = .ConnectionsPanelTreeLineColor BackColor = .ToolbarBackgroundColor txtSearch.BackColor = .SearchBoxBackgroundColor txtSearch.ForeColor = .SearchBoxTextPromptColor End With End Sub #End Region #Region "Public Methods" Public Sub New(ByVal Panel As DockContent) Me.WindowType = Type.Tree Me.DockPnl = Panel Me.InitializeComponent() Me.FillImageList() _DescriptionTooltip = New ToolTip _DescriptionTooltip.InitialDelay = 300 _DescriptionTooltip.ReshowDelay = 0 End Sub Public Sub InitialRefresh() Me.tvConnections_AfterSelect(Me.tvConnections, New TreeViewEventArgs(Me.tvConnections.SelectedNode, TreeViewAction.ByMouse)) End Sub #End Region #Region "Public Properties" Private _DescriptionTooltip As ToolTip Public Property DescriptionTooltip() As ToolTip Get Return _DescriptionTooltip End Get Set(ByVal value As ToolTip) _DescriptionTooltip = value End Set End Property #End Region #Region "Private Methods" Private Sub FillImageList() Try imgListTree.Images.Add(Resources.Root) imgListTree.Images.Add(Resources.Folder) imgListTree.Images.Add(Resources.Play) imgListTree.Images.Add(Resources.Pause) imgListTree.Images.Add(Resources.PuttySessions) Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "FillImageList (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_BeforeLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles tvConnections.BeforeLabelEdit cMenTreeDelete.ShortcutKeys = Keys.None End Sub Private Sub tvConnections_AfterLabelEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.NodeLabelEditEventArgs) Handles tvConnections.AfterLabelEdit Try cMenTreeDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete mRemoteNG.Tree.Node.FinishRenameSelectedNode(e.Label) Windows.configForm.pGrid_SelectedObjectChanged() Me.ShowHideTreeContextMenuItems(e.Node) SaveConnectionsBG() Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_AfterLabelEdit (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvConnections.AfterSelect Try Select Case mRemoteNG.Tree.Node.GetNodeType(e.Node) Case mRemoteNG.Tree.Node.Type.Connection, mRemoteNG.Tree.Node.Type.PuttySession Windows.configForm.SetPropertyGridObject(e.Node.Tag) Case mRemoteNG.Tree.Node.Type.Container Windows.configForm.SetPropertyGridObject(TryCast(e.Node.Tag, Container.Info).ConnectionInfo) Case mRemoteNG.Tree.Node.Type.Root, mRemoteNG.Tree.Node.Type.PuttyRoot Windows.configForm.SetPropertyGridObject(e.Node.Tag) Case Else Exit Sub End Select Windows.configForm.pGrid_SelectedObjectChanged() ShowHideTreeContextMenuItems(e.Node) Windows.sessionsForm.GetSessions(True) LastSelected = mRemoteNG.Tree.Node.GetConstantID(e.Node) Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_AfterSelect (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvConnections.NodeMouseClick Try Me.ShowHideTreeContextMenuItems(Me.tvConnections.SelectedNode) Me.tvConnections.SelectedNode = e.Node If e.Button = System.Windows.Forms.MouseButtons.Left Then If Settings.SingleClickOnConnectionOpensIt And _ (mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.Connection Or _ mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.PuttySession) Then OpenConnection() End If If My.Settings.SingleClickSwitchesToOpenConnection And mRemoteNG.Tree.Node.GetNodeType(e.Node) = mRemoteNG.Tree.Node.Type.Connection Then App.Runtime.SwitchToOpenConnection(e.Node.Tag) End If End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_NodeMouseClick (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_NodeMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvConnections.NodeMouseDoubleClick If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Or _ mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.PuttySession Then OpenConnection() End If End Sub Private Sub tvConnections_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tvConnections.MouseMove Try mRemoteNG.Tree.Node.SetNodeToolTip(e, Me.DescriptionTooltip) Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_MouseMove (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Function IsConnectionOpen(ByVal ConnectionInfos() As mRemoteNG.Connection.Info) As Boolean Try If ConnectionInfos IsNot Nothing Then For Each conI As mRemoteNG.Connection.Info In ConnectionInfos If conI.OpenConnections.Count > 0 Then Return True End If Next End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "IsConnectionOpen (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try Return False End Function Private Sub EnableMenuItemsRecursive(ByVal items As ToolStripItemCollection, Optional ByVal enable As Boolean = True) Dim menuItem As ToolStripMenuItem For Each item As ToolStripItem In items menuItem = TryCast(item, ToolStripMenuItem) If menuItem Is Nothing Then Continue For menuItem.Enabled = enable If menuItem.HasDropDownItems Then EnableMenuItemsRecursive(menuItem.DropDownItems, enable) End If Next End Sub Private Sub ShowHideTreeContextMenuItems(ByVal selectedNode As TreeNode) If selectedNode Is Nothing Then Return Try cMenTree.Enabled = True EnableMenuItemsRecursive(cMenTree.Items) Select Case mRemoteNG.Tree.Node.GetNodeType(selectedNode) Case mRemoteNG.Tree.Node.Type.Connection Dim connectionInfo As mRemoteNG.Connection.Info = selectedNode.Tag If connectionInfo.OpenConnections.Count = 0 Then cMenTreeDisconnect.Enabled = False End If If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH1 Or _ connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH2) Then cMenTreeToolsTransferFile.Enabled = False End If If Not (connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.RDP Or _ connectionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.ICA) Then cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False End If cMenTreeToolsImportExport.Enabled = False Case mRemoteNG.Tree.Node.Type.PuttySession Dim puttySessionInfo As mRemoteNG.Connection.PuttySession.Info = selectedNode.Tag cMenTreeAddConnection.Enabled = False cMenTreeAddFolder.Enabled = False If puttySessionInfo.OpenConnections.Count = 0 Then cMenTreeDisconnect.Enabled = False End If If Not (puttySessionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH1 Or _ puttySessionInfo.Protocol = mRemoteNG.Connection.Protocol.Protocols.SSH2) Then cMenTreeToolsTransferFile.Enabled = False End If cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False cMenTreeToolsImportExport.Enabled = False cMenTreeToolsSort.Enabled = False cMenTreeDuplicate.Enabled = False cMenTreeRename.Enabled = False cMenTreeDelete.Enabled = False cMenTreeMoveUp.Enabled = False cMenTreeMoveDown.Enabled = False Case mRemoteNG.Tree.Node.Type.Container cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False cMenTreeDisconnect.Enabled = False Dim openConnections As Integer = 0 Dim connectionInfo As mRemoteNG.Connection.Info For Each node As TreeNode In selectedNode.Nodes If TypeOf node.Tag Is mRemoteNG.Connection.Info Then connectionInfo = node.Tag openConnections = openConnections + connectionInfo.OpenConnections.Count End If Next If openConnections = 0 Then cMenTreeDisconnect.Enabled = False End If cMenTreeToolsTransferFile.Enabled = False cMenTreeToolsExternalApps.Enabled = False Case mRemoteNG.Tree.Node.Type.Root cMenTreeConnect.Enabled = False cMenTreeConnectWithOptions.Enabled = False cMenTreeConnectWithOptionsConnectInFullscreen.Enabled = False cMenTreeConnectWithOptionsConnectToConsoleSession.Enabled = False cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Enabled = False cMenTreeDisconnect.Enabled = False cMenTreeToolsTransferFile.Enabled = False cMenTreeToolsExternalApps.Enabled = False cMenTreeDuplicate.Enabled = False cMenTreeDelete.Enabled = False cMenTreeMoveUp.Enabled = False cMenTreeMoveDown.Enabled = False Case mRemoteNG.Tree.Node.Type.PuttyRoot cMenTreeAddConnection.Enabled = False cMenTreeAddFolder.Enabled = False cMenTreeConnect.Enabled = False cMenTreeConnectWithOptions.Enabled = False cMenTreeDisconnect.Enabled = False cMenTreeToolsTransferFile.Enabled = False cMenTreeConnectWithOptions.Enabled = False cMenTreeToolsImportExport.Enabled = False cMenTreeToolsSort.Enabled = False cMenTreeToolsExternalApps.Enabled = False cMenTreeDuplicate.Enabled = False cMenTreeRename.Enabled = False cMenTreeDelete.Enabled = False cMenTreeMoveUp.Enabled = False cMenTreeMoveDown.Enabled = False Case Else cMenTree.Enabled = False End Select Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ShowHideTreeContextMenuItems (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub #End Region #Region "Drag and Drop" Private Sub tvConnections_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvConnections.DragDrop Try 'Check that there is a TreeNode being dragged If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub 'Get the TreeView raising the event (incase multiple on form) Dim selectedTreeview As TreeView = CType(sender, TreeView) 'Get the TreeNode being dragged Dim dropNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode) 'The target node should be selected from the DragOver event Dim targetNode As TreeNode = selectedTreeview.SelectedNode If dropNode Is targetNode Then Exit Sub End If If mRemoteNG.Tree.Node.GetNodeType(dropNode) = mRemoteNG.Tree.Node.Type.Root Then Exit Sub End If If dropNode Is targetNode.Parent Then Exit Sub End If 'Remove the drop node from its current location dropNode.Remove() 'If there is no targetNode add dropNode to the bottom of 'the TreeView root nodes, otherwise add it to the end of 'the dropNode child nodes If mRemoteNG.Tree.Node.GetNodeType(targetNode) = mRemoteNG.Tree.Node.Type.Root Or mRemoteNG.Tree.Node.GetNodeType(targetNode) = mRemoteNG.Tree.Node.Type.Container Then targetNode.Nodes.Insert(0, dropNode) Else targetNode.Parent.Nodes.Insert(targetNode.Index + 1, dropNode) End If If mRemoteNG.Tree.Node.GetNodeType(dropNode) = mRemoteNG.Tree.Node.Type.Connection Or mRemoteNG.Tree.Node.GetNodeType(dropNode) = mRemoteNG.Tree.Node.Type.Container Then If mRemoteNG.Tree.Node.GetNodeType(dropNode.Parent) = mRemoteNG.Tree.Node.Type.Container Then dropNode.Tag.Parent = dropNode.Parent.Tag ElseIf mRemoteNG.Tree.Node.GetNodeType(dropNode.Parent) = mRemoteNG.Tree.Node.Type.Root Then dropNode.Tag.Parent = Nothing If mRemoteNG.Tree.Node.GetNodeType(dropNode) = mRemoteNG.Tree.Node.Type.Connection Then dropNode.Tag.Inherit.TurnOffInheritanceCompletely() ElseIf mRemoteNG.Tree.Node.GetNodeType(dropNode) = mRemoteNG.Tree.Node.Type.Container Then dropNode.Tag.ConnectionInfo.Inherit.TurnOffInheritanceCompletely() End If End If End If 'Ensure the newley created node is visible to 'the user and select it dropNode.EnsureVisible() selectedTreeview.SelectedNode = dropNode SaveConnectionsBG() Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragDrop (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvConnections.DragEnter Try 'See if there is a TreeNode being dragged If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then 'TreeNode found allow move effect e.Effect = DragDropEffects.Move Else 'No TreeNode found, prevent move e.Effect = DragDropEffects.None End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragEnter (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles tvConnections.DragOver Try 'Check that there is a TreeNode being dragged If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) = False Then Exit Sub 'Get the TreeView raising the event (incase multiple on form) Dim selectedTreeview As TreeView = CType(sender, TreeView) 'As the mouse moves over nodes, provide feedback to 'the user by highlighting the node that is the 'current drop target Dim pt As Point = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y)) Dim targetNode As TreeNode = selectedTreeview.GetNodeAt(pt) 'Select the node currently under the cursor selectedTreeview.SelectedNode = targetNode 'Check that the selected node is not the dropNode and 'also that it is not a child of the dropNode and 'therefore an invalid target Dim dropNode As TreeNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode) Dim puttyRootInfo As Root.PuttySessions.Info Do Until targetNode Is Nothing puttyRootInfo = TryCast(targetNode.Tag, Root.PuttySessions.Info) If puttyRootInfo IsNot Nothing Or targetNode Is dropNode Then e.Effect = DragDropEffects.None Return End If targetNode = targetNode.Parent Loop 'Currently selected node is a suitable target e.Effect = DragDropEffects.Move Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_DragOver (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles tvConnections.ItemDrag Try Dim dragTreeNode As TreeNode = TryCast(e.Item, TreeNode) If dragTreeNode Is Nothing Then Return If dragTreeNode.Tag Is Nothing Then Return If TypeOf dragTreeNode.Tag Is mRemoteNG.Connection.PuttySession.Info Or _ Not (TypeOf dragTreeNode.Tag Is mRemoteNG.Connection.Info Or _ TypeOf dragTreeNode.Tag Is Container.Info) Then tvConnections.SelectedNode = dragTreeNode Return End If 'Set the drag node and initiate the DragDrop DoDragDrop(e.Item, DragDropEffects.Move) Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_ItemDrag (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub #End Region #Region "Tree Context Menu" Private Sub cMenTreeAddConnection_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeAddConnection.Click, mMenAddConnection.Click Me.AddConnection() SaveConnectionsBG() End Sub Private Sub cMenTreeAddFolder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeAddFolder.Click, mMenAddFolder.Click Me.AddFolder() SaveConnectionsBG() End Sub Private Sub cMenTreeConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeConnect.Click App.Runtime.OpenConnection(mRemoteNG.Connection.Info.Force.DoNotJump) End Sub Private Sub cMenTreeConnectWithOptionsConnectToConsoleSession_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeConnectWithOptionsConnectToConsoleSession.Click App.Runtime.OpenConnection(mRemoteNG.Connection.Info.Force.UseConsoleSession Or mRemoteNG.Connection.Info.Force.DoNotJump) End Sub Private Sub cMenTreeConnectWithOptionsDontConnectToConsoleSession_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeConnectWithOptionsDontConnectToConsoleSession.Click App.Runtime.OpenConnection(mRemoteNG.Connection.Info.Force.DontUseConsoleSession Or mRemoteNG.Connection.Info.Force.DoNotJump) End Sub Private Sub cMenTreeConnectWithOptionsConnectInFullscreen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeConnectWithOptionsConnectInFullscreen.Click App.Runtime.OpenConnection(mRemoteNG.Connection.Info.Force.Fullscreen Or mRemoteNG.Connection.Info.Force.DoNotJump) End Sub Private Sub cMenTreeConnectWithOptionsChoosePanelBeforeConnecting_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeConnectWithOptionsChoosePanelBeforeConnecting.Click App.Runtime.OpenConnection(mRemoteNG.Connection.Info.Force.OverridePanel Or mRemoteNG.Connection.Info.Force.DoNotJump) End Sub Private Sub cMenTreeDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeDisconnect.Click Me.DisconnectConnection() End Sub Private Sub cMenTreeToolsTransferFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsTransferFile.Click Me.SSHTransferFile() End Sub Private Sub cMenTreeToolsImportExportExportmRemoteXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsImportExportExportmRemoteXML.Click Me.ExportXML() End Sub Private Sub cMenTreeToolsImportExportImportmRemoteXML_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsImportExportImportmRemoteXML.Click Me.ImportXML() End Sub Private Sub cMenTreeToolsImportExportImportFromAD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsImportExportImportFromAD.Click Me.ImportFromAD() End Sub Private Sub cMenTreeToolsImportExportImportFromRDPFiles_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsImportExportImportFromRDPFiles.Click Me.ImportFromRDPFiles() End Sub Private Sub cMenTreeToolsImportExportImportFromPortScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeToolsImportExportImportFromPortScan.Click Me.ImportFromPortScan() End Sub Private Sub mMenSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles mMenSortAscending.Click tvConnections.BeginUpdate() mRemoteNG.Tree.Node.Sort(tvConnections.Nodes.Item(0), System.Windows.Forms.SortOrder.Ascending) tvConnections.EndUpdate() SaveConnectionsBG() End Sub Private Sub cMenTreeToolsSortAscending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortAscending.Click tvConnections.BeginUpdate() mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Ascending) tvConnections.EndUpdate() SaveConnectionsBG() End Sub Private Sub cMenTreeToolsSortDescending_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cMenTreeToolsSortDescending.Click tvConnections.BeginUpdate() mRemoteNG.Tree.Node.Sort(tvConnections.SelectedNode, System.Windows.Forms.SortOrder.Descending) tvConnections.EndUpdate() SaveConnectionsBG() End Sub Private Sub cMenTree_DropDownOpening(ByVal sender As Object, ByVal e As System.EventArgs) Handles cMenTree.Opening AddExternalApps() End Sub Private Sub cMenTreeToolsExternalAppsEntry_Click(ByVal sender As Object, ByVal e As System.EventArgs) StartExternalApp(sender.Tag) End Sub Private Sub cMenTreeDuplicate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeDuplicate.Click mRemoteNG.Tree.Node.CloneNode(tvConnections.SelectedNode) SaveConnectionsBG() End Sub Private Sub cMenTreeRename_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeRename.Click mRemoteNG.Tree.Node.StartRenameSelectedNode() SaveConnectionsBG() End Sub Private Sub cMenTreeDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeDelete.Click mRemoteNG.Tree.Node.DeleteSelectedNode() SaveConnectionsBG() End Sub Private Sub cMenTreeMoveUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeMoveUp.Click mRemoteNG.Tree.Node.MoveNodeUp() SaveConnectionsBG() End Sub Private Sub cMenTreeMoveDown_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cMenTreeMoveDown.Click mRemoteNG.Tree.Node.MoveNodeDown() SaveConnectionsBG() End Sub #End Region #Region "Context Menu Actions" Public Sub AddConnection() Try If tvConnections.SelectedNode Is Nothing Then tvConnections.SelectedNode = tvConnections.Nodes.Item(0) Dim newTreeNode As TreeNode = mRemoteNG.Tree.Node.AddNode(mRemoteNG.Tree.Node.Type.Connection) If newTreeNode Is Nothing Then MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Tree.AddConnection() failed." & vbNewLine & "mRemoteNG.Tree.Node.AddNode() returned Nothing.", True) Return End If Dim containerNode As TreeNode = tvConnections.SelectedNode If mRemoteNG.Tree.Node.GetNodeType(containerNode) = mRemoteNG.Tree.Node.Type.Connection Then containerNode = containerNode.Parent End If Dim newConnectionInfo As New mRemoteNG.Connection.Info() If mRemoteNG.Tree.Node.GetNodeType(containerNode) = mRemoteNG.Tree.Node.Type.Root Then newConnectionInfo.Inherit.TurnOffInheritanceCompletely() Else newConnectionInfo.Parent = containerNode.Tag End If newConnectionInfo.TreeNode = newTreeNode newTreeNode.Tag = newConnectionInfo ConnectionList.Add(newConnectionInfo) containerNode.Nodes.Add(newTreeNode) tvConnections.SelectedNode = newTreeNode tvConnections.SelectedNode.BeginEdit() Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "UI.Window.Tree.AddConnection() failed." & vbNewLine & ex.Message, True) End Try End Sub Public Sub AddFolder() Try Dim newNode As TreeNode = mRemoteNG.Tree.Node.AddNode(mRemoteNG.Tree.Node.Type.Container) Dim newContainerInfo As New Container.Info() newNode.Tag = newContainerInfo newContainerInfo.TreeNode = newNode Dim selectedNode As TreeNode = mRemoteNG.Tree.Node.SelectedNode Dim parentNode As TreeNode If selectedNode Is Nothing Then parentNode = tvConnections.Nodes(0) Else If mRemoteNG.Tree.Node.GetNodeType(selectedNode) = mRemoteNG.Tree.Node.Type.Connection Then parentNode = selectedNode.Parent Else parentNode = selectedNode End If End If newContainerInfo.ConnectionInfo = New mRemoteNG.Connection.Info(newContainerInfo) newContainerInfo.ConnectionInfo.Name = newNode.Text ' We can only inherit from a container node, not the root node or connection nodes If mRemoteNG.Tree.Node.GetNodeType(parentNode) = mRemoteNG.Tree.Node.Type.Container Then newContainerInfo.Parent = parentNode.Tag Else newContainerInfo.ConnectionInfo.Inherit.TurnOffInheritanceCompletely() End If App.Runtime.ContainerList.Add(newContainerInfo) parentNode.Nodes.Add(newNode) Me.tvConnections.SelectedNode = newNode Me.tvConnections.SelectedNode.BeginEdit() Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, String.Format(My.Language.strErrorAddFolderFailed, ex.Message), True) End Try End Sub Private Sub DisconnectConnection() Try If Me.tvConnections.SelectedNode IsNot Nothing Then If TypeOf Me.tvConnections.SelectedNode.Tag Is mRemoteNG.Connection.Info Then Dim conI As mRemoteNG.Connection.Info = Me.tvConnections.SelectedNode.Tag For i As Integer = 0 To conI.OpenConnections.Count - 1 conI.OpenConnections(i).Disconnect() Next End If If TypeOf Me.tvConnections.SelectedNode.Tag Is mRemoteNG.Container.Info Then For Each n As TreeNode In Me.tvConnections.SelectedNode.Nodes If TypeOf n.Tag Is mRemoteNG.Connection.Info Then Dim conI As mRemoteNG.Connection.Info = n.Tag For i As Integer = 0 To conI.OpenConnections.Count - 1 conI.OpenConnections(i).Disconnect() Next End If Next End If End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "DisconnectConnection (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub SSHTransferFile() Try Windows.Show(Type.SSHTransfer) Dim conI As mRemoteNG.Connection.Info = mRemoteNG.Tree.Node.SelectedNode.Tag Windows.sshtransferForm.Hostname = conI.Hostname Windows.sshtransferForm.Username = conI.Username Windows.sshtransferForm.Password = conI.Password Windows.sshtransferForm.Port = conI.Port Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "SSHTransferFile (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub ExportXML() Try If Me.tvConnections.SelectedNode IsNot Nothing Then Windows.exportForm = New UI.Window.Export(Windows.exportPanel, Me.tvConnections.SelectedNode) Windows.exportPanel = Windows.exportForm Windows.exportForm.Show(frmMain.pnlDock) End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ExportXml (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub ImportXML() Try If Me.tvConnections.SelectedNode IsNot Nothing Then App.Runtime.ImportConnections() End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportXML (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub ImportFromAD() Try If Me.tvConnections.SelectedNode IsNot Nothing Then Windows.Show(Type.ADImport) End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromAD (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub ImportFromRDPFiles() Try App.Runtime.ImportConnectionsRdpFile() Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromRDPFiles (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub ImportFromPortScan() Try If Me.tvConnections.SelectedNode IsNot Nothing Then Windows.Show(Type.PortScan, Tools.PortScan.PortScanMode.Import) End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "ImportFromPortScan (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub AddExternalApps() Try 'clean up cMenTreeToolsExternalApps.DropDownItems.Clear() 'add ext apps For Each extA As Tools.ExternalTool In ExternalTools Dim nItem As New ToolStripMenuItem nItem.Text = extA.DisplayName nItem.Tag = extA nItem.Image = extA.Image AddHandler nItem.Click, AddressOf cMenTreeToolsExternalAppsEntry_Click cMenTreeToolsExternalApps.DropDownItems.Add(nItem) Next Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cMenTreeTools_DropDownOpening failed (UI.Window.Tree)" & vbNewLine & ex.Message, True) End Try End Sub Private Sub StartExternalApp(ByVal ExtA As Tools.ExternalTool) Try If mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.Connection Or _ mRemoteNG.Tree.Node.GetNodeType(mRemoteNG.Tree.Node.SelectedNode) = mRemoteNG.Tree.Node.Type.PuttySession Then ExtA.Start(mRemoteNG.Tree.Node.SelectedNode.Tag) End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "cMenTreeToolsExternalAppsEntry_Click failed (UI.Window.Tree)" & vbNewLine & ex.Message, True) End Try End Sub #End Region #Region "Menu" Private Sub mMenViewExpandAllFolders_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenViewExpandAllFolders.Click mRemoteNG.Tree.Node.ExpandAllNodes() End Sub Private Sub mMenViewCollapseAllFolders_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mMenViewCollapseAllFolders.Click If tvConnections.SelectedNode IsNot Nothing Then If tvConnections.SelectedNode.IsEditing Then tvConnections.SelectedNode.EndEdit(False) End If mRemoteNG.Tree.Node.CollapseAllNodes() End Sub #End Region #Region "Search" Private Sub txtSearch_GotFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.GotFocus txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextColor If txtSearch.Text = Language.strSearchPrompt Then txtSearch.Text = "" End If End Sub Private Sub txtSearch_LostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles txtSearch.LostFocus If txtSearch.Text = "" Then txtSearch.ForeColor = Themes.ThemeManager.ActiveTheme.SearchBoxTextPromptColor txtSearch.Text = Language.strSearchPrompt End If End Sub Private Sub txtSearch_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtSearch.KeyDown Try If e.KeyCode = Keys.Escape Then e.Handled = True Me.tvConnections.Focus() ElseIf e.KeyCode = Keys.Up Then Me.tvConnections.SelectedNode = Me.tvConnections.SelectedNode.PrevVisibleNode ElseIf e.KeyCode = Keys.Down Then Me.tvConnections.SelectedNode = Me.tvConnections.SelectedNode.NextVisibleNode Else Me.tvConnections_KeyDown(sender, e) End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "txtSearch_KeyDown (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub txtSearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSearch.TextChanged Me.tvConnections.SelectedNode = mRemoteNG.Tree.Node.Find(Me.tvConnections.Nodes(0), Me.txtSearch.Text) End Sub Private Sub tvConnections_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tvConnections.KeyPress Try If Char.IsLetterOrDigit(e.KeyChar) Then Me.txtSearch.Text = e.KeyChar Me.txtSearch.Focus() Me.txtSearch.SelectionStart = Me.txtSearch.TextLength End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_KeyPress (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub Private Sub tvConnections_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tvConnections.KeyDown Try If e.KeyCode = Keys.Enter Then If TypeOf Me.tvConnections.SelectedNode.Tag Is mRemoteNG.Connection.Info Then e.Handled = True App.Runtime.OpenConnection() Else If Me.tvConnections.SelectedNode.IsExpanded Then Me.tvConnections.SelectedNode.Collapse(True) Else Me.tvConnections.SelectedNode.Expand() End If End If ElseIf e.KeyCode = Keys.Escape Xor e.KeyCode = Keys.Control Or e.KeyCode = Keys.F Then Me.txtSearch.Focus() Me.txtSearch.SelectionStart = Me.txtSearch.TextLength End If Catch ex As Exception MessageCollector.AddMessage(Messages.MessageClass.ErrorMsg, "tvConnections_KeyDown (UI.Window.Tree) failed" & vbNewLine & ex.Message, True) End Try End Sub #End Region End Class End Namespace End Namespace