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;
		}
Exemple #2
0
 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();
						}
					}
				}
			}
		}
Exemple #4
0
 private void ClearNodes(TreeNodeCollection collection)
 {
     foreach (SPTreeNode item in collection.OfType<SPTreeNode>())
     {
         item.Dispose();
     }
     collection.Clear();
 }