public static void ExpandOnlyCSharpProjects(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }

            var typename = node.DataItem.GetType().Name;

            if (typename == "Solution")
            {
                node.ExpandToNode();
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    if (node.DataItem is Project proj)
                    {
                        var filter = EssentialProperties.ExpandFilterArray;
                        if (filter.Length == 0)
                        {
                            node.MoveToFirstChild();
                            node.ExpandToNode();
                            node.MoveToParent();
                        }
                        else
                        {
                            foreach (var item in filter)
                            {
                                if (proj.Name.ToLower().Contains(item))
                                {
                                    node.MoveToFirstChild();
                                    node.ExpandToNode();
                                    node.MoveToParent();
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        ExpandOnlyCSharpProjects(node);
                    }
                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();
            }
        }
        public static void ExpandAll(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }

            var typename = node.DataItem.GetType().Name;

            if (typename == "Solution")
            {
                node.ExpandToNode();
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    var wso = node.DataItem as WorkspaceObject;

                    if (node.DataItem is Project)
                    {
                        if (!string.IsNullOrWhiteSpace(EssentialProperties.ExpandFilter))
                        {
                            foreach (var item in EssentialProperties.ExpandFilterArray)
                            {
                                if (wso.Name.ToLower().Contains(item))
                                {
                                    ExpandProjectFiles(node);
                                    break;
                                }
                            }
                        }
                        else
                        {
                            ExpandProjectFiles(node);
                        }
                    }
                    else
                    {
                        ExpandAll(node);
                    }

                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();
            }
        }
		private void GetFiles (ITreeNavigator nav, List<SystemFile> filesToAdd)
		{
			nav.MoveToFirstChild ();
			do {
				if (nav.HasChildren ()) {
					ProjectFolder pf = nav.DataItem as ProjectFolder;
					if (pf != null && (File.GetAttributes (pf.Path) & FileAttributes.Hidden) == 0) {
						ITreeNavigator newNav = nav.Clone ();
						GetFiles (newNav, filesToAdd);
					}
				} else if (nav.DataItem is SystemFile) {
					filesToAdd.Add ((SystemFile) nav.DataItem);
				}
			} while (nav.MoveNext ());
			nav.MoveToParent ();
		}
        private static void ExpandProjectFiles(ITreeNavigator node)
        {
            if (node == null)
            {
                return;
            }
#if DEBUG
            if (node.DataItem is ProjectFile f)
            {
                if (f.Name.ToLower().Contains("appstart.cs"))
                {
                    Debug.WriteLine("BINGO !!");
                }
            }

            if (node.DataItem is ProjectFolder folder)
            {
                if (folder.Name.ToLower().Contains("views"))
                {
                    Debug.WriteLine("BINGO !!");
                }
            }
#endif
            if (FilteredProjectCache.IsProjectItemExpanded(node.DataItem))
            {
                node.ExpandToNode();
                node.Expanded = true;
            }

            if (node.HasChildren())
            {
                var continueLoop = node.MoveToFirstChild();
                while (continueLoop)
                {
                    if (!(node.DataItem is ProjectFile pf) || string.IsNullOrEmpty(pf.DependsOn))
                    {
                        ExpandProjectFiles(node);
                    }
                    continueLoop = node.MoveNext();
                }
                node.MoveToParent();

                return;
            }
        }
        ITreeNavigator SearchMember(ITreeNavigator nav, string helpUrl)
        {
            do
            {
                if (IsMatch(nav, helpUrl))
                {
                    return(nav);
                }
                if (!SkipChildren(nav, helpUrl) && nav.HasChildren())
                {
                    DispatchService.RunPendingEvents();
                    nav.MoveToFirstChild();
                    ITreeNavigator result = SearchMember(nav, helpUrl);
                    if (result != null)
                    {
                        return(result);
                    }

                    if (!nav.MoveToParent())
                    {
                        return(null);
                    }
                    try {
                        if (nav.DataItem is DomCecilType && nav.Options["PublicApiOnly"])
                        {
                            nav.Options["PublicApiOnly"] = false;
                            nav.MoveToFirstChild();
                            result = SearchMember(nav, helpUrl);
                            if (result != null)
                            {
                                return(result);
                            }
                            nav.MoveToParent();
                        }
                    } catch (Exception) {
                        return(null);
                    }
                }
            } while (nav.MoveNext());
            return(null);
        }
        void Dispose(ITreeNavigator nav)
        {
            if (nav == null)
            {
                return;
            }
            IDisposable d = nav.DataItem as IDisposable;

            if (d != null)
            {
                d.Dispose();
            }
            if (nav.HasChildren())
            {
                nav.MoveToFirstChild();
                do
                {
                    Dispose(nav);
                } while (nav.MoveNext());
                nav.MoveToParent();
            }
        }
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			if (nav == null)
				return null;
			bool searchType = helpUrl.StartsWith ("T:", StringComparison.Ordinal);
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					inspectEditor.ClearSelection ();
					nav.ExpandToNode ();
					nav.Selected = nav.Expanded = true;
					nav.ScrollToNode ();
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
					try {
						if (nav.DataItem is TypeDefinition && PublicApiOnly) {
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
					}
				}
			} while (nav.MoveNext());
			return null;
		}
		void Dispose (ITreeNavigator nav)
		{
			if (nav == null)
				return;
			IDisposable d = nav.DataItem as IDisposable;
			if (d != null) 
				d.Dispose ();
			if (nav.HasChildren ()) {
				nav.MoveToFirstChild ();
				do {
					Dispose (nav);
				} while (nav.MoveNext ());
				nav.MoveToParent ();
			}
		}
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl, bool expandNode = true)
		{
			if (nav == null)
				return null;
			bool searchType = helpUrl.StartsWith ("T:", StringComparison.Ordinal);
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					inspectEditor.ClearSelection ();
					nav.ExpandToNode ();
					if (expandNode) {
						nav.Selected = nav.Expanded = true;
						nav.ScrollToNode ();
					} else {
						nav.Selected = true;
						nav.ScrollToNode ();
					}
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl, expandNode);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
				}
			} while (nav.MoveNext());
			return null;
		}
 private void GetFiles(ITreeNavigator nav, List<SystemFile> filesToAdd)
 {
     nav.MoveToFirstChild ();
     do {
         if (nav.HasChildren ()) {
             ProjectFolder pf = nav.DataItem as ProjectFolder;
             if (pf != null && (File.GetAttributes (pf.Path) & FileAttributes.Hidden) == 0) {
                 ITreeNavigator newNav = nav.Clone ();
                 GetFiles (newNav, filesToAdd);
             }
         } else if (nav.DataItem is SystemFile) {
             filesToAdd.Add ((SystemFile) nav.DataItem);
         }
     } while (nav.MoveNext ());
     nav.MoveToParent ();
 }
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			do {
				if (IsMatch (nav, helpUrl))
					return nav;
				if (!SkipChildren (nav, helpUrl) && nav.HasChildren ()) {
					DispatchService.RunPendingEvents ();
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ())
						return null;
					try {
						if (nav.DataItem is DomCecilType && nav.Options["PublicApiOnly"]) {
							nav.Options["PublicApiOnly"] = false;
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
						return null;
					}
				}
			} while (nav.MoveNext());
			return null;
		}
Esempio n. 12
0
		ITreeNavigator SearchMember (ITreeNavigator nav, string helpUrl)
		{
			bool searchType = helpUrl.StartsWith ("T:");
			do {
				if (IsMatch (nav, helpUrl, searchType)) {
					nav.ExpandToNode ();
					nav.Selected = nav.Expanded = true;
					return nav;
				}
				if (!SkipChildren (nav, helpUrl, searchType) && nav.HasChildren ()) {
					nav.MoveToFirstChild ();
					ITreeNavigator result = SearchMember (nav, helpUrl);
					if (result != null)
						return result;
					
					if (!nav.MoveToParent ()) {
						return null;
					}
					try {
						if (nav.DataItem is TypeDefinition && nav.Options ["PublicApiOnly"]) {
							nav.Options ["PublicApiOnly"] = PublicApiOnly;
							nav.MoveToFirstChild ();
							result = SearchMember (nav, helpUrl);
							if (result != null)
								return result;
							nav.MoveToParent ();
						}
					} catch (Exception) {
					}
				}
			} while (nav.MoveNext());
			return null;
		}