/// <summary> /// Creates a new instance. /// </summary> public DiagramToolApplication(IRoslynModelProvider roslynModelProvider, IHostUiServices hostUiServices) { _visualizationService = CreateVisualizationService(roslynModelProvider, hostUiServices); _diagramId = _visualizationService.CreateDiagram(AppDefaults.MinZoom, AppDefaults.MaxZoom, AppDefaults.InitialZoom); RoslynModelService.HideTrivialBaseNodes = AppDefaults.HideTrivialBaseNodes; ApplicationUiService.ImageExportDpi = Dpi.Dpi150; ApplicationUiService.DiagramNodeInvoked += OnShowSourceRequested; ApplicationUiService.ShowModelItemsRequested += OnShowItemsRequestedAsync; }
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 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 IRoslynUiService GetRoslynUiService(DiagramId diagramId) => (IRoslynUiService)GetUiService(diagramId);
public IRoslynDiagramService GetRoslynDiagramService(DiagramId diagramId) => (IRoslynDiagramService)GetDiagramService(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); }