public ConnectorHandlerDiagramPlugin( [NotNull] IDiagramService diagramService, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider) : base(diagramService) { _modelRelationshipFeatureProvider = modelRelationshipFeatureProvider; DiagramService.AfterDiagramChanged += OnDiagramChanged; }
private static IDictionary <string, IDiagramGraph> CreateDiagramGraphsByRelationshipTransitivityGroup( [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider, [NotNull][ItemNotNull] IImmutableSet <IDiagramNode> nodes, [NotNull][ItemNotNull] IImmutableSet <IDiagramConnector> connectors) { return(connectors.GroupBy(i => modelRelationshipFeatureProvider.GetTransitivityPartitionKey(i.ModelRelationship.Stereotype)) .ToDictionary(i => i.Key, i => DiagramGraph.Create(nodes, i.ToImmutableHashSet()))); }
public static IDiagram Create( [NotNull] IModel model, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider) { return(new ImmutableDiagram( model, ImmutableDictionary <ModelNodeId, IDiagramNode> .Empty, ImmutableDictionary <ModelRelationshipId, IDiagramConnector> .Empty, modelRelationshipFeatureProvider)); }
public DiagramService( [NotNull] IModel model, [NotNull] IConnectorTypeResolver connectorTypeResolver, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider, double childrenAreaPadding = DefaultChildrenAreaPadding) : this( ImmutableDiagram.Create(model, modelRelationshipFeatureProvider), connectorTypeResolver, modelRelationshipFeatureProvider, childrenAreaPadding) { }
public DiagramService( [NotNull] IDiagram diagram, [NotNull] IConnectorTypeResolver connectorTypeResolver, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider, double childrenAreaPadding = DefaultChildrenAreaPadding) { LatestDiagram = diagram; _connectorTypeResolver = connectorTypeResolver; _modelRelationshipFeatureProvider = modelRelationshipFeatureProvider; _childrenAreaPadding = childrenAreaPadding; _diagramUpdateLockObject = new object(); _diagramChangedEventStream = new Subject <DiagramEvent>(); }
public DiagramMutator( [NotNull] IDiagram diagram, [NotNull] IConnectorTypeResolver connectorTypeResolver, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider, double childrenAreaPadding) { _initialDiagram = diagram; _model = diagram.Model; _connectorTypeResolver = connectorTypeResolver; _modelRelationshipFeatureProvider = modelRelationshipFeatureProvider; _childrenAreaPadding = childrenAreaPadding; _nodes = diagram.Nodes.ToDictionary(i => i.Id); _connectors = diagram.Connectors.ToDictionary(i => i.Id); _shapeEvents = new List <DiagramShapeEventBase>(); }
public ImmutableDiagram( [NotNull] IModel model, [NotNull] IImmutableDictionary <ModelNodeId, IDiagramNode> nodes, [NotNull] IImmutableDictionary <ModelRelationshipId, IDiagramConnector> connectors, [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider) { Model = model; _nodes = nodes; _connectors = connectors; _modelRelationshipFeatureProvider = modelRelationshipFeatureProvider; Nodes = nodes.Values.ToImmutableHashSet(); Connectors = connectors.Values.ToImmutableHashSet(); Rect = CalculateRect(); IsEmpty = !_nodes.Any() && !_connectors.Any(); _diagramGraphsByRelationshipTransitivityGroup = CreateDiagramGraphsByRelationshipTransitivityGroup(modelRelationshipFeatureProvider, Nodes, Connectors); }