/// <summary> /// Adds servers etc to the treeview node previously identified as the Entire Network node. /// </summary> /// <param name="entireNetworkNode"></param> private static void ExpandEntireNetworkNode(TreeNode entireNetworkNode) { // First test that we haven't already expanded this node, by seeing if the first node // is our dummy placeholder: if (entireNetworkNode.FirstNode.Text != DummyEntireNetworkChildName) return; entireNetworkNode.FirstNode.Remove(); var servers = new ServerEnum(ServerEnum.ResourceScope.RESOURCE_GLOBALNET, ServerEnum.ResourceType.RESOURCETYPE_DISK, ServerEnum.ResourceUsage.RESOURCEUSAGE_ALL, ServerEnum.ResourceDisplayType.RESOURCEDISPLAYTYPE_NETWORK, ""); foreach (string server in servers) { var serverNameBeforeBar = server.Substring(0, server.IndexOf("|", 1)); if (server.IndexOf("NETWORK", 1) > 0) { var networkNode = new TreeNode { Tag = serverNameBeforeBar, Text = serverNameBeforeBar, ImageIndex = 15, SelectedImageIndex = 15 }; entireNetworkNode.Nodes.Add(networkNode); } else { var myNetworkNode = new TreeNode { Tag = serverNameBeforeBar, Text = serverNameBeforeBar, ImageIndex = 16, SelectedImageIndex = 16 }; entireNetworkNode.LastNode.Nodes.Add(myNetworkNode); // Add dummy placeholder node for Micorosoft Windows Network (to make "+" box appear): var dummyNode = new TreeNode { Tag = DummyMicrosoftWindowsNetworkName, Text = DummyMicrosoftWindowsNetworkName, ImageIndex = 12, SelectedImageIndex = 12 }; myNetworkNode.Nodes.Add(dummyNode); } } }
/// <summary> /// Adds servers etc to the treeview node previously identified as a child of the Microsoft Windows Network node. /// </summary> /// <param name="microsoftWindowsNetworkChildNode"></param> private static void ExpandMicrosoftWindowsNetworkChildNode(TreeNode microsoftWindowsNetworkChildNode) { // Check if the first child node is our dummy placeholder: if (microsoftWindowsNetworkChildNode.FirstNode.Text == DummyMicrosoftWindowsNetworkName) { // Remove dummy and add real data: microsoftWindowsNetworkChildNode.FirstNode.Remove(); var serverPath = microsoftWindowsNetworkChildNode.Text; var servers = new ServerEnum(ServerEnum.ResourceScope.RESOURCE_GLOBALNET, ServerEnum.ResourceType.RESOURCETYPE_DISK, ServerEnum.ResourceUsage.RESOURCEUSAGE_ALL, ServerEnum.ResourceDisplayType.RESOURCEDISPLAYTYPE_SERVER, serverPath); foreach (string server in servers) { if (server.EndsWith("-share")) continue; var serverNode = new TreeNode { Tag = server, Text = server.Substring(2), ImageIndex = 12, SelectedImageIndex = 12 }; microsoftWindowsNetworkChildNode.Nodes.Add(serverNode); // Look for child (share) servers: foreach (var shareServer in servers.Cast<string>().Where(shareServer => shareServer.EndsWith("-share"))) { if (server.Length <= shareServer.Length) { try { if (shareServer.StartsWith(server + Path.DirectorySeparatorChar)) { var childServerNode = new TreeNode { Tag = shareServer.Substring(0, shareServer.Length - 6), // Server name minus "-share" Text = shareServer.Substring(server.Length + 1, shareServer.Length - server.Length - 7), ImageIndex = 28, SelectedImageIndex = 28 }; serverNode.Nodes.Add(childServerNode); } } catch (ArgumentOutOfRangeException) { } } } // Next child server } // Next server } //End if first child node is our dummy placeholder }