Ejemplo n.º 1
0
        public override IEnumerable <RelatedSymbolPair> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider,
                                                                           DirectedModelRelationshipType?directedModelRelationshipType = null)
        {
            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.BaseType)
            {
                foreach (var baseSymbolRelation in GetBaseTypes(NamedTypeSymbol))
                {
                    yield return(baseSymbolRelation);
                }
            }

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.Subtype)
            {
                foreach (var derivedSymbolRelation in GetDerivedTypes(roslynModelProvider, NamedTypeSymbol))
                {
                    yield return(derivedSymbolRelation);
                }
            }

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementedInterface)
            {
                foreach (var implementedSymbolRelation in GetImplementedInterfaces(NamedTypeSymbol))
                {
                    yield return(implementedSymbolRelation);
                }
            }
        }
Ejemplo n.º 2
0
        protected static IEnumerable <RelatedSymbolPair> GetDerivedInterfaces(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol)
        {
            var workspace = roslynModelProvider.GetWorkspace();

            return(FindDerivedInterfaces(workspace, interfaceSymbol)
                   .Select(i => new RelatedSymbolPair(interfaceSymbol, i, DirectedRelationshipTypes.Subtype)));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Finds and returns related Roslyn symbols.
        /// </summary>
        /// <param name="roslynModelProvider">Query API for the Roslyn model.</param>
        /// <param name="entityRelationType">Optionally specifies what kind of relations should be found. Null means all relations.</param>
        /// <returns>Related Roslyn symbols.</returns>
        public override IEnumerable <RoslynSymbolRelation> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider,
                                                                              EntityRelationType?entityRelationType = null)
        {
            if (entityRelationType == null || entityRelationType == EntityRelationTypes.BaseType)
            {
                foreach (var baseSymbolRelation in GetBaseTypes(RoslynSymbol))
                {
                    yield return(baseSymbolRelation);
                }
            }

            if (entityRelationType == null || entityRelationType == EntityRelationTypes.Subtype)
            {
                foreach (var derivedSymbolRelation in GetDerivedTypes(roslynModelProvider, RoslynSymbol))
                {
                    yield return(derivedSymbolRelation);
                }
            }

            if (entityRelationType == null || entityRelationType == RoslynEntityRelationTypes.ImplementedInterface)
            {
                foreach (var implementedSymbolRelation in GetImplementedInterfaces(RoslynSymbol))
                {
                    yield return(implementedSymbolRelation);
                }
            }
        }
Ejemplo n.º 4
0
        protected static IEnumerable <RelatedSymbolPair> GetDerivedTypes(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol classSymbol)
        {
            var workspace = roslynModelProvider.GetWorkspace();

            return(SymbolFinder.FindDerivedClassesAsync(classSymbol, workspace.CurrentSolution).Result
                   .Where(i => classSymbol.SymbolEquals(i.BaseType.OriginalDefinition) && i.TypeKind == TypeKind.Class)
                   .Select(i => new RelatedSymbolPair(classSymbol, i, DirectedRelationshipTypes.Subtype)));
        }
        protected static IEnumerable <RoslynSymbolRelation> GetDerivedInterfaces(
            IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol)
        {
            var workspace = roslynModelProvider.GetWorkspace();

            return(FindDerivedInterfaces(workspace, interfaceSymbol)
                   .Select(i => new RoslynSymbolRelation(interfaceSymbol, i, EntityRelationTypes.Subtype)));
        }
        protected static IEnumerable <RoslynSymbolRelation> GetImplementingTypes(
            IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol)
        {
            var workspace = roslynModelProvider.GetWorkspace();

            return(FindImplementingTypes(workspace, interfaceSymbol)
                   .Select(i => new RoslynSymbolRelation(interfaceSymbol, i, RoslynEntityRelationTypes.ImplementerType)));
        }
Ejemplo n.º 7
0
        internal RoslynBasedModelBuilder(IRoslynModelProvider roslynModelProvider)
        {
            _roslynModelProvider = roslynModelProvider;
            _model = new RoslynBasedModel();

            //var workspace = _roslynModelProvider.GetWorkspace();
            //_roslynBasedModelUpdater = new RoslynBasedModelUpdater(_model, workspace);
        }
        /// <summary>
        /// Creates a new instance.
        /// </summary>
        public DiagramToolApplication(IRoslynModelProvider roslynModelProvider, IHostUiServices hostUiServices)
        {
            _visualizationService = CreateVisualizationService(roslynModelProvider, hostUiServices);
            _diagramId            = _visualizationService.CreateDiagram(AppDefaults.MinZoom, AppDefaults.MaxZoom, AppDefaults.InitialZoom);

            RoslynModelService.HideTrivialBaseNodes = AppDefaults.HideTrivialBaseNodes;

            ApplicationUiService.ImageExportDpi           = Dpi.Dpi150;
            ApplicationUiService.DiagramNodeInvoked      += OnShowSourceRequested;
            ApplicationUiService.ShowModelItemsRequested += OnShowItemsRequestedAsync;
        }
 private static IVisualizationService CreateVisualizationService(IRoslynModelProvider roslynModelProvider, IHostUiServices hostUiServices)
 {
     return(new VisualizationService(
                new RoslynModelServiceFactory(roslynModelProvider),
                new RoslynDiagramServiceFactory(),
                new ApplicationUiServiceFactory(hostUiServices, AppDefaults.NodeDescriptionsVisibleByDefault),
                new ApplicationDiagramPluginFactory(new RoslynLayoutPriorityProvider(), new RoslynDiagramShapeFactory()),
                new[]
     {
         DiagramPluginId.AutoLayoutDiagramPlugin,
         DiagramPluginId.ModelTrackingDiagramPlugin,
         DiagramPluginId.ConnectorHandlerDiagramPlugin,
         ApplicationDiagramPluginId.ModelExtenderDiagramPlugin
     }));
 }
Ejemplo n.º 10
0
        public override Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync(IRoslynModelProvider roslynModelProvider,
                                                                                        DirectedModelRelationshipType?directedModelRelationshipType = null)
        {
            var result = Enumerable.Empty <RelatedSymbolPair>();

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementedInterface)
            {
                result = result.Concat(GetImplementedInterfaces(NamedTypeSymbol));
            }

            return(Task.FromResult(result));
        }
Ejemplo n.º 11
0
 public RoslynModelServiceFactory(IRoslynModelProvider roslynModelProvider)
 {
     _roslynModelProvider = roslynModelProvider;
 }
Ejemplo n.º 12
0
 internal RoslynModelService(IRoslynModelProvider roslynModelProvider)
     : base(new ModelStore(new RoslynModel()), null)
 {
     _roslynModelProvider = roslynModelProvider;
 }
Ejemplo n.º 13
0
 public virtual IEnumerable <RelatedSymbolPair> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider,
                                                                   DirectedModelRelationshipType?directedModelRelationshipType = null) => Enumerable.Empty <RelatedSymbolPair>();
 /// <summary>
 /// Finds and returns related Roslyn symbols.
 /// </summary>
 /// <param name="roslynModelProvider">Query API for the Roslyn model.</param>
 /// <param name="entityRelationType">Optionally specifies what kind of relations should be found. Null means all relations.</param>
 /// <returns>Related Roslyn symbols.</returns>
 public virtual IEnumerable <RoslynSymbolRelation> FindRelatedSymbols(IRoslynModelProvider roslynModelProvider,
                                                                      EntityRelationType?entityRelationType = null) => Enumerable.Empty <RoslynSymbolRelation>();
Ejemplo n.º 15
0
 internal RoslynModelService(IRoslynModelProvider roslynModelProvider)
     : base(modelRelationshipFactory: null)
 {
     _roslynModelProvider = roslynModelProvider;
 }
        public override async Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync(IRoslynModelProvider roslynModelProvider,
                                                                                              DirectedModelRelationshipType?directedModelRelationshipType = null)
        {
            var result = Enumerable.Empty <RelatedSymbolPair>();

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.BaseType)
            {
                result = result.Concat(GetBaseInterfaces(NamedTypeSymbol));
            }

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.Subtype)
            {
                result = result.Concat(await GetDerivedInterfacesAsync(roslynModelProvider, NamedTypeSymbol));
            }

            if (directedModelRelationshipType == null || directedModelRelationshipType == DirectedRelationshipTypes.ImplementerType)
            {
                result = result.Concat(await GetImplementingTypesAsync(roslynModelProvider, NamedTypeSymbol));
            }

            return(result);
        }
Ejemplo n.º 17
0
 public virtual Task <IEnumerable <RelatedSymbolPair> > FindRelatedSymbolsAsync(
     IRoslynModelProvider roslynModelProvider,
     DirectedModelRelationshipType?directedModelRelationshipType = null)
 {
     return(Task.FromResult(Enumerable.Empty <RelatedSymbolPair>()));
 }
Ejemplo n.º 18
0
        protected static async Task <IEnumerable <RelatedSymbolPair> > GetDerivedInterfacesAsync(IRoslynModelProvider roslynModelProvider, INamedTypeSymbol interfaceSymbol)
        {
            var workspace = await roslynModelProvider.GetWorkspaceAsync();

            var derivedInterfaces = await FindDerivedInterfacesAsync(workspace, interfaceSymbol);

            return(derivedInterfaces.Select(i => new RelatedSymbolPair(interfaceSymbol, i, DirectedRelationshipTypes.Subtype)));
        }