private static CreationFixture CreateWithParams(ConstructionNode node, Func <IObjectBuilder, ConstructionNode, BuildContext, object> createFunc)
        {
            var constructionContext = new ObjectBuilderContext(
                new SourceValueConverter(),
                new AttributeBasedMetadataProvider());

            var prefixAnnotator = new PrefixAnnotator();


            var executingAssembly = new[] { Assembly.GetExecutingAssembly() };

            var attributeBasedTypeDirectory = new AttributeBasedTypeDirectory(executingAssembly);
            var builder =
                new ExtendedObjectBuilder(
                    new InstanceCreator(constructionContext.SourceValueConverter, constructionContext, attributeBasedTypeDirectory),
                    constructionContext,
                    new ContextFactory(attributeBasedTypeDirectory, constructionContext));


            var newTypeDirectory = GetTypeDirectory();

            var creationContext = new BuildContext(
                new NamescopeAnnotator(constructionContext.MetadataProvider),
                new AmbientRegistrator(),
                new InstanceLifecycleSignaler())
            {
                PrefixAnnotator = prefixAnnotator, PrefixedTypeResolver = new PrefixedTypeResolver(prefixAnnotator, newTypeDirectory)
            };

            return(new CreationFixture
            {
                Result = createFunc(builder, node, creationContext),
                BuildContext = creationContext
            });
        }
Beispiel #2
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var editor = new ScenarioDesignerElement(parent);

            editor.ApplyElementMeatadata((object)metadata);

            // Привязка к источнику данных

            IElementDataBinding valueBinding = context.Build(parent, metadata.Value);

            if (valueBinding != null)
            {
                valueBinding.OnPropertyValueChanged += (c, a) => editor.SetValue(a.Value);
                editor.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value);

                var sourceValueBinding = valueBinding as ISourceDataBinding;

                if (sourceValueBinding != null)
                {
                    // Передача контекста редактору

                    var dataSourceName = sourceValueBinding.GetDataSource();
                    var dataSource     = parent.GetDataSource(dataSourceName);

                    editor.SetConfigId(dataSource.GetConfigId);
                    editor.SetDocumentId(dataSource.GetDocumentId);
                    editor.SetVersion(dataSource.GetVersion);
                }
            }

            return(editor);
        }
Beispiel #3
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var linkView = new LinkView(context.AppView, parent, () => CreateView(context, parent, metadata));

            linkView.SetOpenMode((metadata.OpenMode as string).ToEnum(OpenMode.TabPage));

            return(linkView);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var separatorItem = new ToolBarSeparatorItem(parent);

            separatorItem.ApplyElementMeatadata((object)metadata);

            return(separatorItem);
        }
Beispiel #5
0
        public XamlLoader()
        {
            typeDirectory = GetTypeDirectory();
            var metadataProvider     = new MetadataProvider();
            var sourceValueConverter = GetSourceValueConverter();

            objectBuilderContext = new ObjectBuilderContext(sourceValueConverter, metadataProvider);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var element = new ContextMenuItemSeparator(parent);

            element.ApplyElementMeatadata((object)metadata);

            return(element);
        }
Beispiel #7
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var editor = new DeployDesignerElement(parent);

            editor.ApplyElementMeatadata((object)metadata);

            return(editor);
        }
        public static T BuildFromDataSet <T>(DataSet dataSet)
        {
            var objectBuilder     = new MultipleResultSetObjectBuilder();
            var dataReader        = dataSet.CreateDataReader();
            var dataReaderAdapter = new DataReaderAdapter(dataReader);
            var context           = new ObjectBuilderContext(typeof(T), dataReaderAdapter);

            return((T)objectBuilder.CreateInstance(context));
        }
        public bool CanProcess(ObjectBuilderContext context)
        {
            if (context.ResultType == typeof(object))
            {
                return(true);
            }

            return(false);
        }
        private static ViewPanelElement CreateEditPanel(ObjectBuilderContext context, View parent)
        {
            dynamic editPanel = new DynamicWrapper();

            editPanel.ViewPanel      = new DynamicWrapper();
            editPanel.ViewPanel.View = CreateLinkView("Common", "EditPanelView");

            return((ViewPanelElement)context.Build(parent, editPanel));
        }
Beispiel #11
0
        private static void ExecuteMenuItemAction(ObjectBuilderContext context, View parent, dynamic menuItemMetadata)
        {
            BaseAction action = context.Build(parent, menuItemMetadata.Action);

            if (action != null)
            {
                action.Execute();
            }
        }
        public bool CanProcess(ObjectBuilderContext context)
        {
            if (_sqlPrimitiveDataTypes.IsSqlPrimitiveType(context.ResultType))
            {
                return(true);
            }

            return(false);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var documentDesigner = new DocumentDesignerElement(parent);

            documentDesigner.ApplyElementMeatadata((object)metadata);

            // Редакторы элементов метаданных

            if (metadata.Editors != null)
            {
                var editors = new List <ItemEditor>();

                foreach (var editor in metadata.Editors)
                {
                    editors.Add(new ItemEditor
                    {
                        Text         = editor.Text,
                        Image        = editor.Image,
                        Container    = editor.Container,
                        MetadataType = editor.MetadataType,
                        LinkView     = context.Build(parent, editor.LinkView)
                    });
                }

                documentDesigner.SetEditors(editors);
            }

            // Привязка к источнику данных представления

            IElementDataBinding itemsDataBinding = context.Build(parent, metadata.Items);

            if (itemsDataBinding != null)
            {
                itemsDataBinding.OnPropertyValueChanged += (c, a) => documentDesigner.SetItems(a.Value);

                var sourceItemsDataBinding = itemsDataBinding as ISourceDataBinding;

                if (sourceItemsDataBinding != null)
                {
                    var dataSourceName = sourceItemsDataBinding.GetDataSource();
                    var dataSource     = parent.GetDataSource(dataSourceName);

                    // Установка идентификатора конфигурации
                    documentDesigner.SetConfigId(dataSource.GetConfigId);

                    // Оповещение источника об изменениях в редакторе
                    documentDesigner.NotifyWhenEventAsync(i => i.OnUpdateItems, arguments =>
                    {
                        arguments.DataSource = dataSourceName;
                        return(true);
                    });
                }
            }

            return(documentDesigner);
        }
Beispiel #14
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var menuBar = new MenuBarElement(parent,
                                             () => GetMenuListMetadata(metadata.ConfigId),
                                             menuItem => ExecuteMenuItemAction(context, parent, menuItem));

            menuBar.ApplyElementMeatadata((object)metadata);

            return(menuBar);
        }
        private IObjectBuilder GetObjectBuilder(ObjectBuilderContext context)
        {
            foreach (IObjectBuilder objectBuilder in _objectBuilders)
            {
                if (objectBuilder.CanProcess(context))
                {
                    return(objectBuilder);
                }
            }

            return(null);
        }
Beispiel #16
0
        private static void ExecuteAction(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            IDataSource parentDataSource = parent.GetDataSource(metadata.DataSource);

            if (parentDataSource != null)
            {
                ViewHelper.ShowView(null,
                                    () => context.Build(parent, metadata.View),
                                    childDataSource => OnInitializeChildView(parentDataSource, childDataSource),
                                    childDataSource => OnAcceptedChildView(parentDataSource));
            }
        }
        public object CreateInstance(ObjectBuilderContext context)
        {
            foreach (IObjectBuilder objectBuilder in _configuration.ObjectBuilders)
            {
                if (objectBuilder.CanProcess(context))
                {
                    return(objectBuilder.CreateInstance(context));
                }
            }

            throw new AdoExecutorException($"Not found object builder for type: {context.ResultType}");
        }
Beispiel #18
0
        protected override void ExecuteAction(ObjectBuilderContext context, BaseItemAction action, dynamic metadata)
        {
            var selectedItem = action.GetSelectedItem();

            if (selectedItem != null)
            {
                ViewHelper.ShowView(selectedItem,
                                    () => context.Build(action.GetView(), metadata.View),
                                    childDataSource => OnInitializeChildView(childDataSource, selectedItem),
                                    childDataSource => OnAcceptedChildView(action, childDataSource, selectedItem));
            }
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var dataBinding = new ParameterBinding(parent, metadata.Parameter, metadata.Property);

            ParameterElement dataSource = parent.GetParameter(metadata.Parameter);

            if (dataSource != null)
            {
                dataSource.AddDataBinding(dataBinding);
            }

            return(dataBinding);
        }
Beispiel #20
0
        private static View CreateView(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            LinkView linkView = context.Build(parent, metadata.View);

            if (linkView != null)
            {
                linkView.SetOpenMode(OpenMode.None);

                return(linkView.CreateView());
            }

            return(null);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var dataBinding = new PropertyBinding(parent, metadata.DataSource, metadata.Property);

            IDataSource dataSource = parent.GetDataSource(metadata.DataSource);

            if (dataSource != null)
            {
                dataSource.AddDataBinding(dataBinding);
            }

            return(dataBinding);
        }
Beispiel #22
0
        protected override void ExecuteAction(ObjectBuilderContext context, BaseItemAction action, dynamic metadata)
        {
            var selectedItem = action.GetSelectedItem();

            if (selectedItem != null && (Convert.ToBoolean(metadata.Accept) == false
                                         ||
                                         MessageBox.Show(Resources.DeleteItemActionQuestion, action.GetView().GetText(),
                                                         MessageBoxButton.YesNo, MessageBoxImage.Question,
                                                         MessageBoxResult.No) == MessageBoxResult.Yes))
            {
                action.RemoveItem(selectedItem);
            }
        }
Beispiel #23
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var viewPanel = new ViewPanelElement(parent, () => CreateView(context, parent, metadata));

            viewPanel.ApplyElementMeatadata((object)metadata);

            if (parent != null && metadata.OnLoaded != null)
            {
                viewPanel.OnLoaded += parent.GetScript(metadata.OnLoaded);
            }

            return(viewPanel);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var element = new ConfigEditorElement(parent);

            element.ApplyElementMeatadata((object)metadata);

            var editPanelElement = CreateEditPanel(context, parent);
            var editPanel        = new ConfigElementEditPanel(editPanelElement.GetControl(),
                                                              (elementType, elementEditor) =>
                                                              CreateEditorView(context, editPanelElement.GetContentView(), elementType, elementEditor));

            element.SetEditPanel(editPanel);

            return(element);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var gridPanel = new GridPanelElement(parent);

            gridPanel.ApplyElementMeatadata((object)metadata);

            var columns = (metadata.Columns != null) ? Convert.ToInt32(metadata.Columns) : 12;

            gridPanel.SetColumns(columns);

            if (metadata.Rows != null)
            {
                foreach (var rowMetadata in metadata.Rows)
                {
                    var row = gridPanel.AddRow();

                    if (rowMetadata.Cells != null)
                    {
                        foreach (var cellMetadata in rowMetadata.Cells)
                        {
                            var columnSpan = (cellMetadata.ColumnSpan != null)
                                ? Convert.ToInt32(cellMetadata.ColumnSpan)
                                : 1;
                            GridPanelCellElement cell = row.AddCell(columnSpan);

                            var items = context.BuildMany(parent, cellMetadata.Items);

                            if (items != null)
                            {
                                foreach (var item in items)
                                {
                                    cell.AddItem(item);
                                }
                            }
                        }
                    }
                }
            }

            if (parent != null && metadata.OnLoaded != null)
            {
                gridPanel.OnLoaded += parent.GetScript(metadata.OnLoaded);
            }

            return(gridPanel);
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var editor = new ConfigVerifyDesignerElement(parent);

            editor.ApplyElementMeatadata((object)metadata);

            // Привязка к источнику данных

            IElementDataBinding valueBinding = context.Build(parent, metadata.Value);

            if (valueBinding != null)
            {
                valueBinding.OnPropertyValueChanged += (c, a) => editor.SetValue(a.Value);
            }

            return(editor);
        }
Beispiel #27
0
        public object Load(string xaml)
        {
            var constructionContext = new ObjectBuilderContext(
                Registrator.GetSourceValueConverter(),
                metadataProvider);

            var objectBuilder = new ExtendedObjectBuilder(new InstanceCreator(constructionContext.SourceValueConverter, constructionContext, directory), constructionContext, new ContextFactory(directory, constructionContext));

            var cons = GetConstructionNode(xaml);
            var prefixedTypeResolver = new PrefixedTypeResolver(new PrefixAnnotator(), directory);
            var buildContext         = new BuildContext(new NamescopeAnnotator(metadataProvider), new AmbientRegistrator(), new InstanceLifecycleSignaler())
            {
                PrefixedTypeResolver = prefixedTypeResolver
            };

            return(objectBuilder.Inflate(cons.Root, buildContext));
        }
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var button = new ButtonElement(parent);

            button.ApplyElementMeatadata((object)metadata);
            button.SetImage(metadata.Image);

            var action = context.Build(parent, metadata.Action);

            button.SetAction(action);

            if (parent != null && metadata.OnClick != null)
            {
                button.OnClick += parent.GetScript(metadata.OnClick);
            }

            return(button);
        }
Beispiel #29
0
        public object Build(ObjectBuilderContext context, View parent, dynamic metadata)
        {
            var toolBar = new ToolBarElement(parent);

            toolBar.ApplyElementMeatadata((object)metadata);

            var items = context.BuildMany(parent, metadata.Items);

            if (items != null)
            {
                foreach (var item in items)
                {
                    toolBar.AddItem(item);
                }
            }

            return(toolBar);
        }
Beispiel #30
0
        public bool CanProcess(ObjectBuilderContext context)
        {
            if (!context.ResultType.IsGenericType)
            {
                return(false);
            }

            var genericType = context.ResultType.GetGenericTypeDefinition();

            return(genericType == typeof(Tuple <>) ||
                   genericType == typeof(Tuple <,>) ||
                   genericType == typeof(Tuple <, ,>) ||
                   genericType == typeof(Tuple <, , ,>) ||
                   genericType == typeof(Tuple <, , , ,>) ||
                   genericType == typeof(Tuple <, , , , ,>) ||
                   genericType == typeof(Tuple <, , , , , ,>) ||
                   genericType == typeof(Tuple <, , , , , , ,>));
        }