Example #1
0
        private void ProcessModelItemEvent(ModelItemEventBase modelItemEvent)
        {
            switch (modelItemEvent)
            {
            case ModelNodeUpdatedEvent modelNodeUpdated:
                var updatedNode = modelNodeUpdated.NewNode;
                DiagramService.UpdateModelNode(updatedNode);
                break;

            case ModelNodeRemovedEvent modelNodeRemovedEvent:
                var removedNode = modelNodeRemovedEvent.RemovedNode;
                DiagramService.RemoveNode(removedNode.Id);
                break;

            case ModelRelationshipAddedEvent modelRelationshipAddedEvent:
                var addedRelationship = modelRelationshipAddedEvent.AddedRelationship;
                ShowModelRelationshipIfBothEndsAreVisible(addedRelationship, DiagramService.LatestDiagram);
                break;

            case ModelRelationshipRemovedEvent modelRelationshipRemovedEvent:
                var modelRelationship = modelRelationshipRemovedEvent.RemovedRelationship;
                DiagramService.RemoveConnector(modelRelationship.Id);
                break;
            }
        }
Example #2
0
        public static object FindDiagramsByStory(IDictionary <string, object> story)
        {
            DiagramService service  = (DiagramService) new ServiceLocator <Attachment>().locate();
            var            diagrams = service.FindByStoryID(int.Parse(story["Id"].ToString()));

            return(Utils.SerializeObject(diagrams));
        }
        private void OnModelChanged(ModelEventBase modelEvent)
        {
            DiagramService.UpdateModel(modelEvent.NewModel);

            switch (modelEvent)
            {
            case ModelNodeUpdatedEvent modelNodeUpdatedEvent:
                DiagramService.UpdateModelNode(modelNodeUpdatedEvent.NewNode);
                break;

            case ModelNodeRemovedEvent modelNodeRemovedEvent:
                var removedNode = modelNodeRemovedEvent.RemovedNode;
                DiagramService.RemoveNode(removedNode.Id);
                break;

            case ModelRelationshipAddedEvent modelRelationshipAddedEvent:
                var addedRelationship = modelRelationshipAddedEvent.AddedRelationship;
                ShowModelRelationshipIfBothEndsAreVisible(addedRelationship, DiagramService.LatestDiagram);
                break;

            case ModelRelationshipRemovedEvent modelRelationshipRemovedEvent:
                var modelRelationship = modelRelationshipRemovedEvent.RemovedRelationship;
                DiagramService.RemoveConnector(modelRelationship.Id);
                break;

            case ModelClearedEvent _:
                DiagramService.ClearDiagram();
                break;
            }
        }
        private void OnDiagramChanged(DiagramEvent diagramEvent)
        {
            var diagram           = diagramEvent.NewDiagram;
            var diagramLayoutInfo = _layoutAlgorithm.Calculate(diagram);

            DiagramService.ApplyLayout(diagramLayoutInfo);
        }
Example #5
0
        private void MoveViewport()
        {
            if (_followedNodeIds == null)
            {
                return;
            }

            var rect = DiagramService.GetRect(_followedNodeIds).ToWpf();

            if (rect.IsUndefined())
            {
                return;
            }

            switch (Mode)
            {
            case ViewportAutoMoveMode.Center:
                ZoomToRect(rect, _followNodesTransitionSpeed);
                break;

            case ViewportAutoMoveMode.Contain:
                ContainRect(rect, _followNodesTransitionSpeed);
                break;
            }
        }
Example #6
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSignalR(options =>
            {
                options.MaximumReceiveMessageSize = Int64.MaxValue;
            });

            var dbContextInitializer = new DBContextInitializer();

            _dbContext = dbContextInitializer.MakeDBContext(Configuration);
            services.AddSingleton <IDBContext>(_dbContext);

            var diagramService = new DiagramService(_dbContext);

            services.AddSingleton <IDiagramService>(diagramService);

            var actionService = new ActionService();

            services.AddSingleton <IActionService>(actionService);

            var mainNotifier = new MainNotifier();

            mainNotifier.Start();
            services.AddSingleton <IMainNotifier>(mainNotifier);

            services.AddControllers();
        }
        public void ItGetValidPngImageUrlForSource()
        {
            var imageUrl = DiagramService.GetImageUrlForSource(SamplePlantUml, "png");

            _imageOnDisk = ImageService.SaveImagefromUrlToDisk(imageUrl, Core.ImageRequestFormat.Png, Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));

            AssertIsAPng(_imageOnDisk);
        }
Example #8
0
 private void ApplyChanges(IDictionary <ModelNodeId, Rect2D> changedRects, IDiagram diagram)
 {
     foreach (var rect in changedRects)
     {
         var diagramNode = diagram.GetNode(rect.Key);
         DiagramService.UpdateDiagramNodeCenter(diagramNode, rect.Value.Center);
     }
 }
Example #9
0
        private void BindDiagram()
        {
            DiagramService             diagramService = (DiagramService) new ServiceLocator <Attachment>().locate();
            List <UserStoryAttachment> attachments    = diagramService.ListAll();

            Diagrams.DataSource = attachments;
            Diagrams.DataBind();
        }
Example #10
0
        public void DiagramService_Initialization_Test()
        {
            // Create new DiagramService
            IDiagramService diagramservice = new DiagramService();

            // Check the DiagramService object
            Assert.IsNotNull(diagramservice.Diagram);
            Assert.IsInstanceOfType(diagramservice, typeof(DiagramService));
        }
        private void OnModelChanged(ModelEvent modelEvent)
        {
            DiagramService.UpdateModel(modelEvent.NewModel);

            foreach (var itemChange in modelEvent.ItemEvents)
            {
                ProcessModelItemEvent(itemChange);
            }
        }
        protected void AddDiagramConnectorIfNotExists(IModelRelationship modelRelationship, IDiagram diagram)
        {
            if (diagram.ConnectorExists(modelRelationship.Id))
            {
                return;
            }

            DiagramService.AddConnector(modelRelationship.Id);
        }
Example #13
0
 private async Task ShowEntitiesAsync(
     [NotNull] IReadOnlyCollection <ModelNodeId> modelEntities,
     CancellationToken cancellationToken,
     IIncrementalProgress progress)
 {
     await Task.Run(
         () => DiagramService.AddNodes(modelEntities, cancellationToken, progress),
         cancellationToken);
 }
        private void ShowContainment([NotNull] IModelRelationship addedRelationship)
        {
            var diagram = DiagramService.LatestDiagram;

            if (diagram.NodeExists(addedRelationship.Source) && diagram.NodeExists(addedRelationship.Target))
            {
                DiagramService.UpdateParent(addedRelationship.Target, addedRelationship.Source);
            }
        }
        private void ShowAsParentNode([NotNull] IModelNode addedModelNode, [NotNull] IModel model)
        {
            var diagram    = DiagramService.LatestDiagram;
            var childNodes = model.GetRelatedNodes(addedModelNode.Id, CommonDirectedModelRelationshipTypes.Contained);

            if (childNodes.Any(i => diagram.NodeExists(i.Id)))
            {
                DiagramService.AddNode(addedModelNode.Id);
            }
        }
Example #16
0
 private void HideRedundantConnectors([NotNull] IDiagram diagram)
 {
     foreach (var connector in diagram.Connectors.Where(i => _modelRelationshipFeatureProvider.IsTransitive(i.ModelRelationship.Stereotype)))
     {
         if (diagram.IsConnectorRedundant(connector.Id, connector.ModelRelationship.Stereotype))
         {
             DiagramService.RemoveConnector(connector.Id);
         }
     }
 }
        protected void gvResult_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            string         Id       = gvResult.DataKeys[Convert.ToInt32(e.CommandArgument)].Values[0].ToString();
            DiagramService dService = (DiagramService) new ServiceLocator <Engineer.EMF.Attachment>().locate();
            var            diagrams = dService.FindByStoryID(int.Parse(Id));

            Diagrams.DataSource = diagrams != null ? diagrams : new List <Engineer.EMF.UserStoryAttachment>();
            Diagrams.DataBind();
            Diagrams.Visible = true;
        }
 private void HideRedundantConnectors(IDiagram diagram)
 {
     foreach (var connector in diagram.Connectors)
     {
         if (diagram.IsConnectorRedundant(connector.Id))
         {
             DiagramService.RemoveConnector(connector.Id);
         }
     }
 }
Example #19
0
        private void OnDiagramChanged(DiagramEvent diagramEvent)
        {
            if (diagramEvent.ShapeEvents.All(i => !IsLayoutTriggeringChange(i)))
            {
                return;
            }

            var diagram           = diagramEvent.NewDiagram;
            var diagramLayoutInfo = _layoutAlgorithm.Calculate(diagram);

            DiagramService.ApplyLayout(diagramLayoutInfo);
        }
        private void OnDiagramChanged([NotNull] DiagramEventBase diagramEvent)
        {
            switch (diagramEvent)
            {
                case DiagramNodeRectChangedEvent _:
                case DiagramConnectorRouteChangedEvent _:
                    return;
            }

            var diagram = diagramEvent.NewDiagram;
            var diagramLayoutInfo = _layoutAlgorithm.Calculate(diagram);
            DiagramService.ApplyLayout(diagramLayoutInfo);
        }
        protected async Task <Maybe <IModelNode> > TryAddCurrentSymbolToDiagramAsync()
        {
            var maybeSymbol = await RoslynWorkspaceProvider.TryGetCurrentSymbolAsync();

            if (!maybeSymbol.HasValue)
            {
                return(Maybe <IModelNode> .Nothing);
            }

            var modelNode = RoslynBasedModelService.GetOrAddNode(maybeSymbol.Value);

            DiagramService.AddNode(modelNode.Id);
            return(Maybe.Create(modelNode));
        }
Example #22
0
        public void DiagramService_SetChartData_Test()
        {
            // Create new DiagramService and Test-Data
            DiagramService diagramservice = new DiagramService();
            var            testdata       = new List <KeyValuePair <int, string> >()
            {
                new KeyValuePair <int, string>(1, "test")
            };

            // Execute SetChartData Function
            diagramservice.SetChartData <int, string>(testdata, DiagramType.LINE);
            // Check if a new Diagram was created and a DataSeries was added
            Assert.IsNotNull(diagramservice.Diagram);
            Assert.IsNotNull(diagramservice.Diagram.Series);
        }
Example #23
0
        private IEnumerable <ModelNodeId> ShowModelNodeWithHierarchy(
            ModelNodeId nodeId,
            CancellationToken cancellationToken,
            IIncrementalProgress progress)
        {
            var model = RoslynBasedModelService.LatestModel;

            var baseTypeIds = model.GetRelatedNodes(nodeId, DirectedModelRelationshipTypes.BaseType, recursive: true).Select(i => i.Id);
            var subtypeIds = model.GetRelatedNodes(nodeId, DirectedModelRelationshipTypes.Subtype, recursive: true).Select(i => i.Id);
            var nodeIds = new[] { nodeId }.Union(baseTypeIds).Union(subtypeIds).ToList();

            DiagramService.AddNodes(nodeIds, cancellationToken, progress);

            return(nodeIds);
        }
        private void ShowParentNode([NotNull] IDiagramNode diagramNode)
        {
            var modelNode = diagramNode.ModelNode;

            if (!modelNode.Stereotype.In(TypeMemberModelNodeStereotypes))
            {
                return;
            }

            var parentModelNode = _modelService.LatestModel.GetRelatedNodes(modelNode.Id, CommonDirectedModelRelationshipTypes.Container).SingleOrDefault();

            if (parentModelNode != null)
            {
                DiagramService.AddNode(parentModelNode.Id);
            }
        }
Example #25
0
        /// <summary>
        /// Converts to interface.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        private static Models.Interface ConvertToInterface(Type type)
        {
            var @interface = new Models.Interface
            {
                Name       = Regex.Replace(type.Name, TypingSetter, ""),
                Properties = GetProperties(type),
                Functions  = GetFunctions(type),
                Voids      = GetVoids(type)
            };

            @interface.Diagram       = string.Format(Templates.PsuedoCode, AssemblyDiagrammer.WriteClassDiagram(@interface));
            @interface.DiagramUrl    = DiagramService.GetImageUrlForSource(@interface.Diagram, "svg");
            @interface.Documentation = DocumentService.GetInterfaceDocumentation(type.Namespace, @interface);

            @interface.Relationships = AssemblyDiagrammer.GetRelationships(@interface);

            return(@interface);
        }
Example #26
0
        /// <summary>
        /// Lists the namespaces.
        /// </summary>
        /// <param name="assembly">The assembly.</param>
        /// <returns></returns>
        private static List <Models.Namespace> ListNamespaces(Assembly assembly)
        {
            var names = assembly.GetTypes().Select((t) => t.Namespace).Distinct().ToList();

            names.Where((x) => (x != null) && (!string.IsNullOrEmpty(x)) && (!x.Contains("My.")) && (!x.Contains(".My"))).ToList().ForEach((n) => Namespaces.Add(new Models.Namespace {
                Name = n
            }));

            Namespaces.ForEach((n) =>
            {
                Console.WriteLine(n.Name);
                GetTypes(assembly, n);
                n.Topography    = AssemblyDiagrammer.MapTopography(n);
                n.TopographyUrl = DiagramService.GetImageUrlForSource(n.Topography, "svg");
                n.Documentation = DocumentService.GetNamespaceDocumentation(n);
            });

            return(Namespaces);
        }
        private void AddNode(IDiagramNode diagramNode)
        {
            var diagramNodeUi = (DiagramNodeViewModelBase)_diagramShapeUiFactory.CreateDiagramNodeUi(DiagramService, diagramNode, MiniButtonPanelViewModel);

            diagramNodeUi.SizeChanged += OnDiagramNodeSizeChanged;
            diagramNodeUi.ShowRelatedNodesRequested    += OnShowRelatedNodesRequested;
            diagramNodeUi.RelatedNodeSelectorRequested += OnEntitySelectorRequested;
            diagramNodeUi.RemoveRequested += OnRemoveDiagramNodeRequested;

            _diagramNodeToViewModelMap.Set(diagramNode, diagramNodeUi);

            if (DiagramService.TryGetContainerNode(diagramNode, out var containerNode) &&
                IsNodeVisibleOnDiagram(containerNode, out var containerNodeUi))
            {
                ((IContainerDiagramNodeUi)containerNodeUi).AddChildNode(diagramNodeUi);
            }
            else
            {
                DiagramNodeViewModels.Add(diagramNodeUi);
            }
        }
        private void OnModelChanged(ModelEventBase modelEvent)
        {
            var diagram = DiagramService.Diagram;

            switch (modelEvent)
            {
            case ModelNodeUpdatedEvent modelNodeUpdatedEvent:
                var newModelNode = modelNodeUpdatedEvent.NewNode;
                if (diagram.TryGetNode(newModelNode.Id, out var diagramNodeToUpdate))
                {
                    DiagramService.UpdateDiagramNodeModelNode(diagramNodeToUpdate, newModelNode);
                }
                break;

            case ModelNodeRemovedEvent modelNodeRemovedEvent:
                var removedModelNode = modelNodeRemovedEvent.RemovedNode;
                if (diagram.TryGetNode(removedModelNode.Id, out var diagramNodeToRemove))
                {
                    DiagramService.RemoveNode(diagramNodeToRemove.Id);
                }
                break;

            case ModelRelationshipAddedEvent modelRelationshipAddedEvent:
                var addedRelationship = modelRelationshipAddedEvent.AddedRelationship;
                ShowModelRelationshipIfBothEndsAreVisible(addedRelationship, diagram);
                break;

            case ModelRelationshipRemovedEvent modelRelationshipRemovedEvent:
                var modelRelationship = modelRelationshipRemovedEvent.RemovedRelationship;
                if (diagram.TryGetConnector(modelRelationship.Id, out var diagramConnector))
                {
                    DiagramService.RemoveConnector(diagramConnector.Id);
                }
                break;

            case ModelClearedEvent _:
                DiagramService.ClearDiagram();
                break;
            }
        }
Example #29
0
        public static object Share(IDictionary <string, string> diagram)
        {
            DiagramService       service    = (DiagramService) new ServiceLocator <Attachment>().locate();
            var                  stories    = new List <UserStoryAttachment>();
            IEnumerable <string> storiesStr = !string.IsNullOrEmpty(diagram["userStories"]) ? diagram["userStories"].Split(',') : Enumerable.Empty <string>();

            storiesStr.ToList().ForEach(f =>
            {
                stories.Add(new UserStoryAttachment()
                {
                    userStoryId = int.Parse(f), attachId = int.Parse(diagram["attachId"])
                });
            });
            var diagramObject = new Attachment()
            {
                Id = int.Parse(diagram["attachId"]),
                UserStoryAttachments = stories
            };

            service.Share(diagramObject, int.Parse(diagram["userStoryId"]), new List().GetUserId());
            return(Utils.SerializeObject(stories));
        }
Example #30
0
        /// <summary>
        /// Converts to class.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        public static Models.Class ConvertToClass(Type type)
        {
            var @class = new Models.Class
            {
                Name       = Regex.Replace(type.Name, TypingSetter, ""),
                Properties = GetProperties(type),
                Functions  = GetFunctions(type),
                Voids      = GetVoids(type),
                Abstract   = type.IsAbstract,
                Static     = IsStaticType(type),
                Module     = IsModule(type),
                Implements = type.GetInterfaces().FirstOrDefault(),
                Inherits   = (type.BaseType ?? null)
            };

            @class.Diagram       = string.Format(Templates.PsuedoCode, AssemblyDiagrammer.WriteClassDiagram(@class));
            @class.DiagramUrl    = DiagramService.GetImageUrlForSource(@class.Diagram, "svg");
            @class.Documentation = DocumentService.GetClassDocumentation(type.Namespace, @class);

            @class.Relationships = AssemblyDiagrammer.GetRelationships(@class);

            return(@class);
        }