Пример #1
0
        private IDiagramUiService CreateDiagramUiService(DiagramId diagramId, [NotNull] IDiagramService diagramService)
        {
            var diagramShapeUiFactory = _diagramShapeUiFactoryFactory.Invoke(diagramService);
            var diagramViewportUi     = _diagramViewportUiFactory.Invoke(diagramService, diagramShapeUiFactory);
            var diagramUi             = _diagramUiFactory.Invoke(diagramService, diagramViewportUi);

            var diagramUiService = _diagramUiServiceFactory(diagramUi);

            diagramUiService.DiagramNodeHeaderSizeChanged += PropagateDiagramNodeHeaderSizeChanged(diagramId);
            diagramUiService.RemoveDiagramNodeRequested   += PropagateRemoveDiagramNodeRequested(diagramId);
            return(diagramUiService);
        }
Пример #2
0
        private IUiService CreateDiagramUi(DiagramId diagramId,
                                           double minZoom     = DefaultMinZoom,
                                           double maxZoom     = DefaultMaxZoom,
                                           double initialZoom = DefaultInitialZoom)
        {
            var diagramService = GetDiagramService(diagramId);
            var diagramUi      = UiServiceFactory.Create(ModelService, diagramService, minZoom, maxZoom, initialZoom);

            diagramUi.DiagramNodeSizeChanged     += (diagramNode, size) => OnDiagramNodeSizeChanged(diagramId, diagramNode, size);
            diagramUi.RemoveDiagramNodeRequested += diagramNode => OnRemoveDiagramNodeRequested(diagramId, diagramNode);

            return(diagramUi);
        }
Пример #3
0
        public void DeleteDiagram(DiagramId diagramId)
        {
            _diagramServices.Remove(diagramId);

            var diagramUi = _diagramUiServices[diagramId];

            diagramUi.DiagramNodeHeaderSizeChanged -= PropagateDiagramNodeHeaderSizeChanged(diagramId);
            diagramUi.RemoveDiagramNodeRequested   -= PropagateRemoveDiagramNodeRequested(diagramId);
            _diagramUiServices.Remove(diagramId);

            _diagramPlugins[diagramId].ForEach(i => i.Dispose());
            _diagramPlugins.Remove(diagramId);
        }
Пример #4
0
        public DiagramId CreateDiagram()
        {
            var diagramId = DiagramId.Create();

            var diagramService = _diagramServiceFactory(_modelService.LatestModel);

            _diagramServices.Add(diagramId, diagramService);

            var diagramUiService = CreateDiagramUiService(diagramId, diagramService);

            _diagramUiServices.Add(diagramId, diagramUiService);

            var plugins = _diagramPluginFactories.Select(i => i(diagramService)).ToList();

            _diagramPlugins.Add(diagramId, plugins);

            return(diagramId);
        }
Пример #5
0
        public DiagramId CreateDiagram()
        {
            var diagramId = DiagramId.Create();

            var diagramService = _diagramServiceFactory(_modelService.LatestModel);

            _diagramServices.Add(diagramId, diagramService);

            var diagramUi = _uiServiceFactory(diagramService);

            diagramUi.DiagramNodePayloadAreaSizeChanged += PropagateDiagramNodePayloadAreaSizeChanged(diagramId);
            diagramUi.RemoveDiagramNodeRequested        += PropagateRemoveDiagramNodeRequested(diagramId);
            _diagramUis.Add(diagramId, diagramUi);

            var plugins = _diagramPluginFactories.Select(i => i(diagramService)).ToList();

            _diagramPlugins.Add(diagramId, plugins);

            return(diagramId);
        }
Пример #6
0
        public DiagramId CreateDiagram(
            double minZoom     = DefaultMinZoom,
            double maxZoom     = DefaultMaxZoom,
            double initialZoom = DefaultInitialZoom)
        {
            var diagramId      = DiagramId.Create();
            var diagramService = DiagramServiceFactory.Create(GetModelService());

            _diagramServices.Add(diagramId, diagramService);

            var diagramUi = CreateDiagramUi(diagramId, minZoom, maxZoom, initialZoom);

            _diagramUis.Add(diagramId, diagramUi);

            // Warning: plugins must be created after the UI so its event callbacks don't precede UI updates.
            var diagramPlugins = CreateAndAttachDiagramPlugins(DiagramPluginIds, ModelService, diagramService);

            _diagramPlugins.Add(diagramId, diagramPlugins.ToList());

            return(diagramId);
        }
Пример #7
0
 public IUiService GetUiService(DiagramId diagramId) => _diagramUis[diagramId];
Пример #8
0
 public IDiagramService GetDiagramService(DiagramId diagramId) => _diagramServices[diagramId];
Пример #9
0
 private void OnRemoveDiagramNodeRequested(DiagramId diagramId, IDiagramNode diagramNode)
 {
     //GetDiagramService(diagramId).HideModelNode(diagramNode.Id);
 }
Пример #10
0
 private void OnDiagramNodeSizeChanged(DiagramId diagramId, IDiagramNode diagramNode, Size2D newSize)
 {
     GetDiagramService(diagramId).UpdateDiagramNodeSize(diagramNode, newSize);
 }
Пример #11
0
 private void OnRemoveDiagramNodeRequested(DiagramId diagramId, [NotNull] IDiagramNode diagramNode)
 {
     GetDiagramService(diagramId).RemoveNode(diagramNode.Id);
 }
Пример #12
0
 private void OnDiagramNodeHeaderSizeChanged(DiagramId diagramId, [NotNull] IDiagramNode diagramNode, Size2D newSize)
 {
     GetDiagramService(diagramId).UpdateNodeHeaderSize(diagramNode.Id, newSize);
 }
Пример #13
0
 private Action <IDiagramNode, Size2D> PropagateDiagramNodeHeaderSizeChanged(DiagramId diagramId)
 {
     return((diagramNode, size) => OnDiagramNodeHeaderSizeChanged(diagramId, diagramNode, size));
 }
Пример #14
0
 private Action <IDiagramNode> PropagateRemoveDiagramNodeRequested(DiagramId diagramId)
 {
     return(diagramNode => OnRemoveDiagramNodeRequested(diagramId, diagramNode));
 }
 private void OnDiagramNodeChildrenAreaTopLeftChanged(DiagramId diagramId, [NotNull] IDiagramNode diagramNode, Point2D newTopLeft)
 {
     GetDiagramService(diagramId).UpdateChildrenAreaTopLeft(diagramNode.Id, newTopLeft);
 }
 private Action <IDiagramNode, Point2D> PropagateDiagramNodeChildrenAreaTopLeftChanged(DiagramId diagramId)
 {
     return((diagramNode, topLeft) => OnDiagramNodeChildrenAreaTopLeftChanged(diagramId, diagramNode, topLeft));
 }