protected override IEnumerable <string> GetCollapsedFolders() { return(folders.Where(pair => pair.Value.IsCollapsed).Select(pair => pair.Key)); }
public override IEnumerable <string> GetCheckedFiles() { return(checkedFileNodes.Where(pair => pair.Value.CheckState == CheckState.Checked).Select(pair => pair.Key)); }
public void Load(IEnumerable <ITreeData> data, string title) { var collapsedFoldersEnumerable = folders.Where(pair => pair.Value.IsCollapsed).Select(pair => pair.Key); var collapsedFolders = new HashSet <string>(collapsedFoldersEnumerable); string selectedNodeName = null; if (SelectedNode != null) { selectedNodeName = SelectedNode.Name; SelectedNode = null; } folders.Clear(); nodes.Clear(); var titleNode = new TreeNode() { Name = title, Label = title, Level = 0, IsFolder = true }; SetNodeIcon(titleNode); nodes.Add(titleNode); var hideChildren = false; var hideChildrenBelowLevel = 0; foreach (var d in data) { var parts = d.Name.Split('/'); for (int i = 0; i < parts.Length; i++) { var label = parts[i]; var level = i + 1; var name = String.Join("/", parts, 0, level); var isFolder = i < parts.Length - 1; var alreadyExists = folders.ContainsKey(name); if (!alreadyExists) { var isActive = false; if (name == d.Name) { isActive = d.IsActive; } var node = new TreeNode { Name = name, IsActive = isActive, Label = label, Level = level, IsFolder = isFolder }; if (selectedNodeName != null && name == selectedNodeName) { SelectedNode = node; } if (node.IsActive) { activeNode = node; } if (hideChildren) { if (level <= hideChildrenBelowLevel) { hideChildren = false; } else { node.IsHidden = true; } } SetNodeIcon(node); nodes.Add(node); if (isFolder) { if (collapsedFolders.Contains(name)) { node.IsCollapsed = true; if (!hideChildren) { hideChildren = true; hideChildrenBelowLevel = level; } } folders.Add(name, node); } } } } }