Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 4
0
 public DiagramService(
     [NotNull] IModel model,
     [NotNull] IConnectorTypeResolver connectorTypeResolver,
     [NotNull] IModelRelationshipFeatureProvider modelRelationshipFeatureProvider,
     double childrenAreaPadding = DefaultChildrenAreaPadding)
     : this(
         ImmutableDiagram.Create(model, modelRelationshipFeatureProvider),
         connectorTypeResolver,
         modelRelationshipFeatureProvider,
         childrenAreaPadding)
 {
 }
Ejemplo n.º 5
0
 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>();
 }
Ejemplo n.º 6
0
 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);
        }