Example #1
0
        /// <summary>
        /// Creates edits for creating components.
        /// </summary>
        /// <returns>Edits for creating components.</returns>
        private IEnumerable <EditDefinition> componentCreationEdits()
        {
            var result = new List <EditDefinition>();

            if (_currentResult == null || _currentResult.EntryContext == null)
            {
                return(null);
            }

            var call = _currentResult.EntryContext.EntryBlock.Call;

            var assembly = _loader.AppDomain.GetDefiningAssembly(call.Name);

            if (assembly == null)
            {
                return(result);
            }

            var components = assembly.GetReferencedComponents();

            foreach (var component in components)
            {
                if (component.ImportingConstructor == null)
                {
                    continue;
                }

                if (!Naming.IsParamLessCtor(component.ImportingConstructor))
                {
                    continue;
                }

                var edit = new EditDefinition("Create " + component.ComponentType.TypeName, (v) =>
                {
                    return(_vs.SafeRun(() =>
                    {
                        var transformation = new AddCallTransformation((exV) => addComponent(component, exV));

                        var view = (v as EditView).CopyView();
                        view.Apply(transformation);
                        return EditView.Wrap(view);
                    }, "Creation edit failed"));
                }, (v) => true);

                result.Add(edit);
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// Display given <see cref="DiagramDefinition" /> within editors workspace.
        /// </summary>
        /// <param name="diagram">Displayed diagram.</param>
        /// <param name="forceShow">Determine that displaye will be forced</param>
        public void Display(DiagramDefinition diagram, bool forceShow = false)
        {
            DispatchedAction(() =>
            {
                if (diagram != null || forceShow)
                {
                    //prevent showing workspace when
                    //there is no diagram
                    _gui.ShowWorkspace();
                }

                _vs.SafeRun(() => _drawingProvider.Display(diagram)
                            , "Trying to display drawing");
            });
        }