From 020433d7ad8dc9895a4e7a1f98bffe41552af1ed Mon Sep 17 00:00:00 2001 From: David Sparer Date: Mon, 22 Aug 2016 16:04:06 -0600 Subject: [PATCH] Fixed issue with display of connections tree which was caused by new connection tree builder code --- .../UI/ConnectionTreeViewBuilderTests.cs | 18 ++++++------ mRemoteV1/App/Runtime.cs | 4 +-- .../Config/Connections/ConnectionsLoader.cs | 9 ++---- mRemoteV1/UI/ConnectionTreeViewBuilder.cs | 29 ++++++++++++------- .../Window/ConnectionTreeWindow.Designer.cs | 4 --- 5 files changed, 33 insertions(+), 31 deletions(-) diff --git a/mRemoteNGTests/UI/ConnectionTreeViewBuilderTests.cs b/mRemoteNGTests/UI/ConnectionTreeViewBuilderTests.cs index 16755a75..05dffa1c 100644 --- a/mRemoteNGTests/UI/ConnectionTreeViewBuilderTests.cs +++ b/mRemoteNGTests/UI/ConnectionTreeViewBuilderTests.cs @@ -35,8 +35,8 @@ namespace mRemoteNGTests.UI { CreateRootNode(); _connectionTreeViewBuilder.Build(); - var tree = _connectionTreeViewBuilder.TreeView; - Assert.That(tree.Nodes.Count, Is.EqualTo(1)); + var rootTreeNode = _connectionTreeViewBuilder.RootNode; + Assert.That(rootTreeNode, Is.Not.Null); } [Test] @@ -50,7 +50,7 @@ namespace mRemoteNGTests.UI var con1 = new ConnectionInfo(); root.Add(con1); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Tag, Is.EqualTo(con1)); } @@ -65,7 +65,7 @@ namespace mRemoteNGTests.UI var folder1 = new ContainerInfo(); root.Add(folder1); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Tag, Is.EqualTo(folder1)); } @@ -82,7 +82,7 @@ namespace mRemoteNGTests.UI var con2 = new ConnectionInfo(); root.AddRange(new []{con1, con2}); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(GetTreeNodeTags(rootTreeNode.Nodes), Is.EquivalentTo(new[] { con1, con2 })); } @@ -100,7 +100,7 @@ namespace mRemoteNGTests.UI root.Add(folder1); folder1.Add(con1); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Tag, Is.EqualTo(folder1)); Assert.That(rootTreeNode.Nodes[0].Nodes[0].Tag, Is.EqualTo(con1)); } @@ -122,7 +122,7 @@ namespace mRemoteNGTests.UI folder1.Add(con1); root.Add(folder2); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Tag, Is.EqualTo(folder1)); Assert.That(rootTreeNode.Nodes[0].Nodes[0].Tag, Is.EqualTo(con1)); Assert.That(rootTreeNode.Nodes[1].Tag, Is.EqualTo(folder2)); @@ -145,7 +145,7 @@ namespace mRemoteNGTests.UI folder1.Add(folder2); folder2.Add(con1); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Nodes[0].Nodes[0].Tag, Is.EqualTo(con1)); } @@ -175,7 +175,7 @@ namespace mRemoteNGTests.UI folder3.Add(folder4); folder4.Add(con2); _connectionTreeViewBuilder.Build(); - var rootTreeNode = _connectionTreeViewBuilder.TreeView.Nodes[0]; + var rootTreeNode = _connectionTreeViewBuilder.RootNode; Assert.That(rootTreeNode.Nodes[0].Nodes[0].Nodes[0].Tag, Is.EqualTo(con1)); Assert.That(rootTreeNode.Nodes[1].Nodes[0].Nodes[0].Tag, Is.EqualTo(con2)); } diff --git a/mRemoteV1/App/Runtime.cs b/mRemoteV1/App/Runtime.cs index 60d8a6bd..77ace4b0 100644 --- a/mRemoteV1/App/Runtime.cs +++ b/mRemoteV1/App/Runtime.cs @@ -341,9 +341,9 @@ namespace mRemoteNG.App connectionsLoader.PreviousSelected = LastSelected; } - ConnectionTree.ResetTree(); + //ConnectionTree.ResetTree(); - connectionsLoader.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0]; + //connectionsLoader.RootTreeNode = Windows.treeForm.tvConnections.Nodes[0]; connectionsLoader.UseDatabase = Settings.Default.UseSQLServer; connectionsLoader.DatabaseHost = Settings.Default.SQLHost; connectionsLoader.DatabaseName = Settings.Default.SQLDatabaseName; diff --git a/mRemoteV1/Config/Connections/ConnectionsLoader.cs b/mRemoteV1/Config/Connections/ConnectionsLoader.cs index cc2b9add..e3e7d7e5 100644 --- a/mRemoteV1/Config/Connections/ConnectionsLoader.cs +++ b/mRemoteV1/Config/Connections/ConnectionsLoader.cs @@ -58,17 +58,14 @@ namespace mRemoteNG.Config.Connections var connectionTreeModel = xmlConnectionsDeserializer.Deserialize(import); var connectionTreeViewBuilder = new ConnectionTreeViewBuilder(connectionTreeModel); connectionTreeViewBuilder.Build(); - var treeNodes = new TreeNode[connectionTreeViewBuilder.TreeView.Nodes.Count]; - connectionTreeViewBuilder.TreeView.Nodes.CopyTo(treeNodes, 0); - Windows.treeForm.tvConnections.Nodes.AddRange(treeNodes); - //Windows.treeForm.InitialRefresh(); + connectionTreeViewBuilder.AppendTo(Windows.treeForm.tvConnections); } frmMain.Default.AreWeUsingSqlServerForSavingConnections = UseDatabase; frmMain.Default.ConnectionsFileName = ConnectionFileName; - + if (!import) - Putty.Sessions.AddSessionsToTree(); + Putty.Sessions.AddSessionsToTree(Windows.treeForm.tvConnections); } } } \ No newline at end of file diff --git a/mRemoteV1/UI/ConnectionTreeViewBuilder.cs b/mRemoteV1/UI/ConnectionTreeViewBuilder.cs index 0051759d..60f21e7f 100644 --- a/mRemoteV1/UI/ConnectionTreeViewBuilder.cs +++ b/mRemoteV1/UI/ConnectionTreeViewBuilder.cs @@ -10,32 +10,41 @@ namespace mRemoteNG.UI { public class ConnectionTreeViewBuilder { - private ConnectionTreeModel _connectionTreeModel; + private readonly ConnectionTreeModel _connectionTreeModel; - public TreeView TreeView { get; private set; } + public TreeNode RootNode { get; private set; } public ConnectionList ConnectionList { get; set; } public ContainerList ContainerList { get; set; } public ConnectionTreeViewBuilder(ConnectionTreeModel connectionTreeModel) { _connectionTreeModel = connectionTreeModel; - TreeView = new TreeView(); ConnectionList = new ConnectionList(); ContainerList = new ContainerList(); } + public void AppendTo(TreeView foreignTreeView) + { + foreignTreeView.BeginUpdate(); + foreignTreeView.Nodes.Add(RootNode); + foreignTreeView.EndUpdate(); + } + public void Build() { var rootNodeInfo = _connectionTreeModel.RootNodes.First(a => a is RootNodeInfo); - BuildTreeViewFromConnectionTree(rootNodeInfo, InitRootNode((RootNodeInfo)rootNodeInfo)); + InitRootNode((RootNodeInfo)rootNodeInfo); + BuildTreeViewFromConnectionTree(rootNodeInfo, RootNode); } - private TreeNode InitRootNode(RootNodeInfo rootNodeInfo) + private void InitRootNode(RootNodeInfo rootNodeInfo) { - var rootNode = new TreeNode(rootNodeInfo.Name); - rootNode.Expand(); - TreeView.Nodes.Add(rootNode); - return rootNode; + RootNode = new TreeNode(rootNodeInfo.Name) + { + Name = rootNodeInfo.Name, + Tag = rootNodeInfo + }; + RootNode.Expand(); } private void BuildTreeViewFromConnectionTree(ContainerInfo parentContainer, TreeNode parentTreeNode) @@ -43,7 +52,7 @@ namespace mRemoteNG.UI if (!parentContainer.Children.Any()) return; foreach (var child in parentContainer.Children) { - var treeNode = new TreeNode(child.Name); + var treeNode = new TreeNode(child.Name) {Name = child.Name}; parentTreeNode.Nodes.Add(treeNode); if (child is ContainerInfo) diff --git a/mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs b/mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs index 461d684b..dcb85195 100644 --- a/mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs +++ b/mRemoteV1/UI/Window/ConnectionTreeWindow.Designer.cs @@ -49,7 +49,6 @@ namespace mRemoteNG.UI.Window { this.components = new System.ComponentModel.Container(); this.Load += new System.EventHandler(Tree_Load); - System.Windows.Forms.TreeNode TreeNode1 = new System.Windows.Forms.TreeNode("Connections"); this.tvConnections = new System.Windows.Forms.TreeView(); this.tvConnections.BeforeLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.tvConnections_BeforeLabelEdit); this.tvConnections.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.tvConnections_AfterLabelEdit); @@ -156,9 +155,6 @@ namespace mRemoteNG.UI.Window this.tvConnections.LabelEdit = true; this.tvConnections.Location = new System.Drawing.Point(0, 0); this.tvConnections.Name = "tvConnections"; - TreeNode1.Name = "nodeRoot"; - TreeNode1.Text = "Connections"; - this.tvConnections.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {TreeNode1}); this.tvConnections.SelectedImageIndex = 0; this.tvConnections.Size = new System.Drawing.Size(192, 410); this.tvConnections.TabIndex = 20;