private bool TreeContainsOnlyOneReportNode(TreeNodeCollection nodes) { if (nodes.Count > 1) { return false; } foreach (var n in nodes.OfType<TreeNode>()) { if (n.Tag == _MakeExpandableNodeTag) { return false; } ConcreteTemplateNodeDefinition nodeDef = n.Tag as ConcreteTemplateNodeDefinition; if (nodeDef == null) { return false; } if (nodeDef.TemplateNode.GetParentQuery() != null) { return false; } var hasReport = !string.IsNullOrEmpty(nodeDef.TemplateNode.XslTemplateFileName); if (hasReport) { return n.Nodes.Count == 0; } return TreeContainsOnlyOneReportNode(n.Nodes); } return false; }
private TreeNode ScanNode(string path, TreeNodeCollection nodes) { foreach (var node in nodes.OfType<TreeNode>()) { if (node.FullPath == path) return node; if (node.Nodes.Count > 0) { var ret = this.ScanNode(path, node.Nodes); if (ret != null) return ret; } } return null; }
/// <summary> /// Expand node. /// </summary> private void ExpandNodeToLoadTemplate(Stack<String> templatesToExpand, TreeNodeCollection nodes, string selectTemplateId, Action finalAction) { if (templatesToExpand != null) { if (templatesToExpand.Count > 0) { var currentId = templatesToExpand.Pop(); var currentTemplateToExpand = nodes.OfType<TreeNode>().FirstOrDefault(x => x.Tag is ConcreteTemplateNodeDefinition && (x.Tag as ConcreteTemplateNodeDefinition).TemplateNode.Id == currentId); if (currentTemplateToExpand != null && !currentTemplateToExpand.IsExpanded) { if (currentId == selectTemplateId) { Invoke(finalAction); } else { this.ContinueWith = () => { Invoke( new Action( () => ExpandNodeToLoadTemplate( templatesToExpand, currentTemplateToExpand.Nodes, selectTemplateId, finalAction ) ) ); this.ContinueWith = null; }; currentTemplateToExpand.Expand(); } } } } }
private void ClearNodes(TreeNodeCollection collection) { foreach (SPTreeNode item in collection.OfType<SPTreeNode>()) { item.Dispose(); } collection.Clear(); }