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); }
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); }
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); }
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); }
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); }
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); }
public IUiService GetUiService(DiagramId diagramId) => _diagramUis[diagramId];
public IDiagramService GetDiagramService(DiagramId diagramId) => _diagramServices[diagramId];
private void OnRemoveDiagramNodeRequested(DiagramId diagramId, IDiagramNode diagramNode) { //GetDiagramService(diagramId).HideModelNode(diagramNode.Id); }
private void OnDiagramNodeSizeChanged(DiagramId diagramId, IDiagramNode diagramNode, Size2D newSize) { GetDiagramService(diagramId).UpdateDiagramNodeSize(diagramNode, newSize); }
private void OnRemoveDiagramNodeRequested(DiagramId diagramId, [NotNull] IDiagramNode diagramNode) { GetDiagramService(diagramId).RemoveNode(diagramNode.Id); }
private void OnDiagramNodeHeaderSizeChanged(DiagramId diagramId, [NotNull] IDiagramNode diagramNode, Size2D newSize) { GetDiagramService(diagramId).UpdateNodeHeaderSize(diagramNode.Id, newSize); }
private Action <IDiagramNode, Size2D> PropagateDiagramNodeHeaderSizeChanged(DiagramId diagramId) { return((diagramNode, size) => OnDiagramNodeHeaderSizeChanged(diagramId, diagramNode, size)); }
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)); }