Example #1
0
        public static uint ObjectListKindToListType(ObjectListKind kind)
        {
            switch (kind)
            {
            case ObjectListKind.BaseTypes:
                return((uint)_LIB_LISTTYPE.LLT_USESCLASSES);

            case ObjectListKind.Hierarchy:
                return((uint)_LIB_LISTTYPE.LLT_HIERARCHY);

            case ObjectListKind.Members:
                return((uint)_LIB_LISTTYPE.LLT_MEMBERS);

            case ObjectListKind.Namespaces:
                return((uint)_LIB_LISTTYPE.LLT_NAMESPACES);

            case ObjectListKind.Projects:
                return((uint)_LIB_LISTTYPE.LLT_PACKAGE);

            case ObjectListKind.References:
                return(LLT_PROJREF);

            case ObjectListKind.Types:
                return((uint)_LIB_LISTTYPE.LLT_CLASSES);
            }

            Debug.Fail("Unsupported object list kind: " + kind.ToString());

            return(0);
        }
Example #2
0
 public ObjectList(
     ObjectListKind kind,
     uint flags,
     AbstractObjectBrowserLibraryManager manager,
     ImmutableArray <ObjectListItem> items)
     : this(kind, flags, null, null, manager, items)
 {
 }
Example #3
0
        public ObjectList(
            ObjectListKind kind,
            uint flags,
            ObjectList parentList,
            ObjectListItem parentListItem,
            AbstractObjectBrowserLibraryManager manager,
            ImmutableArray <ObjectListItem> items)
            : base(manager)
        {
            _kind           = kind;
            _flags          = flags;
            _parentList     = parentList;
            _parentListItem = parentListItem;

            _items = items;

            foreach (var item in _items)
            {
                item.SetParentList(this);
            }
        }
Example #4
0
        public static uint ObjectListKindToListType(ObjectListKind kind)
        {
            switch (kind)
            {
                case ObjectListKind.BaseTypes:
                    return (uint)_LIB_LISTTYPE.LLT_USESCLASSES;
                case ObjectListKind.Hierarchy:
                    return (uint)_LIB_LISTTYPE.LLT_HIERARCHY;
                case ObjectListKind.Members:
                    return (uint)_LIB_LISTTYPE.LLT_MEMBERS;
                case ObjectListKind.Namespaces:
                    return (uint)_LIB_LISTTYPE.LLT_NAMESPACES;
                case ObjectListKind.Projects:
                    return (uint)_LIB_LISTTYPE.LLT_PACKAGE;
                case ObjectListKind.References:
                    return LLT_PROJREF;
                case ObjectListKind.Types:
                    return (uint)_LIB_LISTTYPE.LLT_CLASSES;
            }

            Debug.Fail("Unsupported object list kind: " + kind.ToString());

            return 0;
        }
        public IVsSimpleObjectList2 GetSearchList(
            ObjectListKind listKind,
            uint flags,
            VSOBSEARCHCRITERIA2[] pobSrch,
            ImmutableHashSet <Tuple <ProjectId, IAssemblySymbol> > projectAndAssemblySet)
        {
            var searchText = GetSearchText(pobSrch);

            if (searchText == null)
            {
                return(null);
            }

            // TODO: Support wildcards (e.g. *xyz, *xyz* and xyz*) like the old language service did.

            switch (listKind)
            {
            case ObjectListKind.Namespaces:
            {
                var builder = ImmutableArray.CreateBuilder <ObjectListItem>();

                foreach (var projectIdAndAssembly in projectAndAssemblySet)
                {
                    var projectId      = projectIdAndAssembly.Item1;
                    var assemblySymbol = projectIdAndAssembly.Item2;

                    CollectNamespaceListItems(assemblySymbol, projectId, builder, searchText);
                }

                return(new ObjectList(ObjectListKind.Namespaces, flags, this, builder.ToImmutable()));
            }

            case ObjectListKind.Types:
            {
                var builder = ImmutableArray.CreateBuilder <ObjectListItem>();

                foreach (var projectIdAndAssembly in projectAndAssemblySet)
                {
                    var projectId      = projectIdAndAssembly.Item1;
                    var assemblySymbol = projectIdAndAssembly.Item2;

                    var compilation = this.GetCompilation(projectId);
                    if (compilation == null)
                    {
                        return(null);
                    }

                    CollectTypeListItems(assemblySymbol, compilation, projectId, builder, searchText);
                }

                return(new ObjectList(ObjectListKind.Types, flags, this, builder.ToImmutable()));
            }

            case ObjectListKind.Members:
            {
                var builder = ImmutableArray.CreateBuilder <ObjectListItem>();

                foreach (var projectIdAndAssembly in projectAndAssemblySet)
                {
                    var projectId      = projectIdAndAssembly.Item1;
                    var assemblySymbol = projectIdAndAssembly.Item2;

                    var compilation = this.GetCompilation(projectId);
                    if (compilation == null)
                    {
                        return(null);
                    }

                    CollectMemberListItems(assemblySymbol, compilation, projectId, builder, searchText);
                }

                return(new ObjectList(ObjectListKind.Types, flags, this, builder.ToImmutable()));
            }

            default:
                return(null);
            }
        }
        public IVsSimpleObjectList2 GetSearchList(
            ObjectListKind listKind,
            uint flags,
            VSOBSEARCHCRITERIA2[] pobSrch,
            ImmutableHashSet<Tuple<ProjectId, IAssemblySymbol>> projectAndAssemblySet)
        {
            var searchText = GetSearchText(pobSrch);
            if (searchText == null)
            {
                return null;
            }

            // TODO: Support wildcards (e.g. *xyz, *xyz* and xyz*) like the old language service did.

            switch (listKind)
            {
                case ObjectListKind.Namespaces:
                    {
                        var builder = ImmutableArray.CreateBuilder<ObjectListItem>();

                        foreach (var projectIdAndAssembly in projectAndAssemblySet)
                        {
                            var projectId = projectIdAndAssembly.Item1;
                            var assemblySymbol = projectIdAndAssembly.Item2;

                            CollectNamespaceListItems(assemblySymbol, projectId, builder, searchText);
                        }

                        return new ObjectList(ObjectListKind.Namespaces, flags, this, builder.ToImmutable());
                    }

                case ObjectListKind.Types:
                    {
                        var builder = ImmutableArray.CreateBuilder<ObjectListItem>();

                        foreach (var projectIdAndAssembly in projectAndAssemblySet)
                        {
                            var projectId = projectIdAndAssembly.Item1;
                            var assemblySymbol = projectIdAndAssembly.Item2;

                            var compilation = this.GetCompilation(projectId);
                            if (compilation == null)
                            {
                                return null;
                            }

                            CollectTypeListItems(assemblySymbol, compilation, projectId, builder, searchText);
                        }

                        return new ObjectList(ObjectListKind.Types, flags, this, builder.ToImmutable());
                    }

                case ObjectListKind.Members:
                    {
                        var builder = ImmutableArray.CreateBuilder<ObjectListItem>();

                        foreach (var projectIdAndAssembly in projectAndAssemblySet)
                        {
                            var projectId = projectIdAndAssembly.Item1;
                            var assemblySymbol = projectIdAndAssembly.Item2;

                            var compilation = this.GetCompilation(projectId);
                            if (compilation == null)
                            {
                                return null;
                            }

                            CollectMemberListItems(assemblySymbol, compilation, projectId, builder, searchText);
                        }

                        return new ObjectList(ObjectListKind.Types, flags, this, builder.ToImmutable());
                    }

                default:
                    return null;
            }
        }