示例#1
0
 protected override IEnumerable <string> GetCollapsedFolders()
 {
     return(folders.Where(pair => pair.Value.IsCollapsed).Select(pair => pair.Key));
 }
示例#2
0
 public override IEnumerable <string> GetCheckedFiles()
 {
     return(checkedFileNodes.Where(pair => pair.Value.CheckState == CheckState.Checked).Select(pair => pair.Key));
 }
示例#3
0
        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);
                        }
                    }
                }
            }
        }