/// <summary> /// Sets the composition information. /// </summary> /// <param name="drawer">The drawer.</param> private void setCompositionInfo(InstanceDrawer drawer) { var compositionResult = CompositionResult.Get(); CompositionContext context = null; var error = Error.Value == null ? "" : Error.Value; if (compositionResult != null) { if (compositionResult.Error != null) { error = compositionResult.Error + Environment.NewLine + error; } context = compositionResult.Context; } if (error != "") { drawer.SetProperty("Error", error); } if (context != null) { foreach (var component in context.InputInstances) { var drawing = drawer.GetInstanceDrawing(component); drawing.SetProperty("Composed", "True"); } foreach (var point in compositionResult.Points) { var joinPoint = getConnector(point, drawer); } foreach (var join in compositionResult.Joins) { if (compositionResult.Failed && !join.IsErrorJoin) { //on error we want to display only error joins continue; } var fromPoint = getConnector(join.Export, drawer); var toPoint = getConnector(join.Import, drawer); var joinDefinition = drawer.DrawJoin(fromPoint, toPoint); //TODO set properties of joinDefinition } } }
/// <summary> /// Export data from represented <see cref="Instance" /> by using given drawer. /// <remarks>Note that only instances which are forced to display are displayed in root of <see cref="MEFEditor.Drawing.DiagramCanvas" /></remarks>. /// </summary> /// <param name="drawer">The drawer.</param> protected override void draw(InstanceDrawer drawer) { var isComposed = Composed.Get(); drawer.PublishField("AssemblyPath", AssemblyPath); drawer.PublishField("Composed", Composed); var slot = drawer.AddSlot(); var context = CompositionContext.Get(); if (context != null) { foreach (var component in CompositionContext.Get().InputInstances) { var drawing = drawer.GetInstanceDrawing(component); drawing.SetProperty("Composed", isComposed.ToString()); slot.Add(drawing.Reference); } var compositionResult = CompositionResult.Get(); foreach (var point in compositionResult.Points) { var joinPoint = getConnector(point, drawer); } foreach (var join in compositionResult.Joins) { var fromPoint = getConnector(join.Export, drawer); var toPoint = getConnector(join.Import, drawer); var joinDefinition = drawer.DrawJoin(fromPoint, toPoint); //TODO set properties of joinDefinition } } drawer.ForceShow(); }