コード例 #1
0
        /// <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
                }
            }
        }
コード例 #2
0
        /// <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();
        }