コード例 #1
0
        protected override bool TryCreateCollectionSource(
            IVsHierarchyItem hierarchyItem,
            string flagsString,
            string?target,
            IRelationProvider relationProvider,
            [NotNullWhen(returnValue: true)] out AggregateRelationCollectionSource?containsCollectionSource)
        {
            if (ErrorHandler.Succeeded(hierarchyItem.HierarchyIdentity.Hierarchy.GetProperty(
                                           hierarchyItem.HierarchyIdentity.ItemID, (int)__VSHPROPID.VSHPROPID_ExtObject, out object projectItemObject)))
            {
                var projectItem         = projectItemObject as ProjectItem;
                EnvDTE.Properties?props = projectItem?.Properties;

                if (props?.Item("TargetingPackPath")?.Value is string path &&
                    props?.Item("OriginalItemSpec")?.Value is string name)
                {
                    string?profile = props?.Item("Profile").Value as string;

                    var framework = new FrameworkReferenceIdentity(path, profile, name);
                    var item      = new FrameworkReferenceItem(framework);
                    if (AggregateContainsRelationCollection.TryCreate(item, _relationProvider, out AggregateContainsRelationCollection? collection))
                    {
                        containsCollectionSource = new AggregateRelationCollectionSource(hierarchyItem, collection);
                        return(true);
                    }
                }
            }

            containsCollectionSource = null;
            return(false);
        }
コード例 #2
0
        bool IRelatableItem.TryGetOrCreateContainsCollection(
            IRelationProvider relationProvider,
            [NotNullWhen(returnValue: true)] out AggregateContainsRelationCollection?relationCollection)
        {
            if (_containsCollection == null && AggregateContainsRelationCollection.TryCreate(this, relationProvider, out AggregateContainsRelationCollection? collection))
            {
                _containsCollection = collection;
            }

            relationCollection = _containsCollection;
            return(relationCollection != null);
        }
コード例 #3
0
 public DependenciesTreeSearchProvider(
     [ImportMany] IEnumerable <IDependenciesTreeSearchProvider> providers,
     JoinableTaskContext joinableTaskContext,
     IVsHierarchyItemManager hierarchyItemManager,
     IProjectServiceAccessor projectServiceAccessor,
     IRelationProvider relationProvider)
 {
     _providers              = providers.ToImmutableArray();
     _joinableTaskContext    = joinableTaskContext;
     _hierarchyItemManager   = hierarchyItemManager;
     _projectServiceAccessor = projectServiceAccessor;
     _relationProvider       = relationProvider;
 }
コード例 #4
0
 public DependenciesTreeConfiguredProjectSearchContext(
     DependenciesTreeSearchContext inner,
     IProjectTree targetRootNode,
     IVsHierarchyItemManager hierarchyItemManager,
     IUnconfiguredProjectVsServices projectVsServices,
     IRelationProvider relationProvider)
 {
     _inner = inner;
     _hierarchyItemManager = hierarchyItemManager;
     _projectVsServices    = projectVsServices;
     _relationProvider     = relationProvider;
     _targetRootNode       = targetRootNode;
 }
コード例 #5
0
        /// <summary>
        /// Attempts to create a collection for the children of <paramref name="parentItem"/>.
        /// Fails only when no relations exist to produce child items for the given item's type.
        /// </summary>
        public static bool TryCreate(IRelatableItem parentItem, IRelationProvider relationProvider, [NotNullWhen(returnValue: true)] out AggregateContainsRelationCollection?collection)
        {
            ImmutableArray <IRelation> containsRelations = relationProvider.GetContainsRelationsFor(parentItem.GetType());

            if (containsRelations.IsEmpty)
            {
                collection = null;
                return(false);
            }

            collection = new AggregateContainsRelationCollection(parentItem, containsRelations);
            return(true);
        }
コード例 #6
0
 public DependenciesTreeProjectSearchContext(
     DependenciesTreeSearchContext outer,
     UnconfiguredProject unconfiguredProject,
     IProjectTree dependenciesNode,
     IVsHierarchyItemManager hierarchyItemManager,
     IUnconfiguredProjectVsServices projectVsServices,
     IRelationProvider relationProvider)
 {
     _inner = outer;
     UnconfiguredProject   = unconfiguredProject;
     _dependenciesNode     = dependenciesNode;
     _hierarchyItemManager = hierarchyItemManager;
     _projectVsServices    = projectVsServices;
     _relationProvider     = relationProvider;
 }
コード例 #7
0
        protected override bool TryCreateCollectionSource(
            IVsHierarchyItem hierarchyItem,
            string flagsString,
            string?target,
            IRelationProvider relationProvider,
            [NotNullWhen(returnValue: true)] out AggregateRelationCollectionSource?containsCollectionSource)
        {
            TIdentity identity;

            if (!ErrorHandler.Succeeded(hierarchyItem.HierarchyIdentity.Hierarchy.GetProperty(
                                            hierarchyItem.HierarchyIdentity.ItemID, (int)__VSHPROPID.VSHPROPID_ExtObject, out object projectItemObject)))
            {
                containsCollectionSource = null;
                return(false);
            }
コード例 #8
0
 public FrameworkReferenceAssemblyAttachedCollectionSourceProvider(IRelationProvider relationProvider)
     : base(DependencyTreeFlags.FrameworkDependency)
 {
     _relationProvider = relationProvider;
 }
 /// <summary>
 /// Creates collection sources for selected hierarchy items, depending upon the implementation.
 /// </summary>
 /// <remarks>
 /// Only called for hierarchy items whose flags match those passed to the constructor. <paramref name="flagsString"/> is
 /// provided in case further information is needed.
 /// </remarks>
 protected abstract bool TryCreateCollectionSource(
     IVsHierarchyItem hierarchyItem,
     string flagsString,
     string?target,
     IRelationProvider relationProvider,
     [NotNullWhen(returnValue: true)] out AggregateRelationCollectionSource?containsCollectionSource);