public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var schemaDesigner = new DocumentSchemaDesignerElement(parent); schemaDesigner.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) }); } schemaDesigner.SetEditors(editors); } // Привязка к источнику данных представления IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => schemaDesigner.SetValue(a.Value); schemaDesigner.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value); } return(schemaDesigner); }
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 menuDesigner = new MenuDesignerElement(parent); menuDesigner.ApplyElementMeatadata((object)metadata); // Редактор элементов меню var menuItemEditor = context.Build(parent, metadata.Editor); menuDesigner.SetEditor(menuItemEditor); // Привязка к источнику данных представления IElementDataBinding itemsDataBinding = context.Build(parent, metadata.Items); if (itemsDataBinding != null) { itemsDataBinding.OnPropertyValueChanged += (c, a) => menuDesigner.SetItems(a.Value); menuDesigner.OnUpdateItems += (c, a) => itemsDataBinding.SetPropertyValue(a.Value); } return(menuDesigner); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var label = new LabelElement(parent); // Установка формата данных var valueFormat = context.Build(parent, metadata.Format); label.SetFormat(valueFormat); label.ApplyElementMeatadata((object)metadata); label.SetLineCount(Convert.ToInt32(metadata.LineCount)); label.SetHorizontalTextAlignment( (metadata.HorizontalTextAlignment as string).ToEnum(HorizontalTextAlignment.Left)); // Привязка к источнику данных IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => label.SetValue(a.Value); } return(label); }
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); }
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); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var printViewDesigner = new PrintViewDesignerElement(parent); printViewDesigner.ApplyElementMeatadata((object)metadata); // Привязка к источнику данных представления IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => printViewDesigner.SetValue(a.Value); printViewDesigner.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value, force: true); } return(printViewDesigner); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var checkBox = new CheckBoxElement(parent); checkBox.ApplyElementMeatadata((object)metadata); checkBox.SetReadOnly(Convert.ToBoolean(metadata.ReadOnly)); // Привязка к источнику данных IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => checkBox.SetValue(a.Value); checkBox.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value); } return(checkBox); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var element = new ConfigSelectorElement(parent); element.ApplyElementMeatadata((object)metadata); element.SetConfigurationsFunc(GetConfigurations); // Привязка к источнику данных IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => element.SetValue(a.Value); element.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value); } return(element); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var scrollPanel = new ScrollPanelElement(parent); scrollPanel.ApplyElementMeatadata((object)metadata); scrollPanel.SetVerticalScroll(GetScrollVisibility(metadata.VerticalScroll)); scrollPanel.SetHorizontalScroll(GetScrollVisibility(metadata.HorizontalScroll)); var layoutPanel = context.Build(parent, metadata.LayoutPanel); scrollPanel.SetLayoutPanel(layoutPanel); if (parent != null && metadata.OnLoaded != null) { scrollPanel.OnLoaded += parent.GetScript(metadata.OnLoaded); } return(scrollPanel); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var codeEditor = new CodeEditorElement(parent); codeEditor.SetSyntax(BuildSyntax(metadata.Syntax)); codeEditor.SetFormatter(BuildFormatter(metadata.Formatter)); codeEditor.ApplyElementMeatadata((object)metadata); // Привязка к источнику данных IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => codeEditor.SetValue(a.Value); codeEditor.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value); } return(codeEditor); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var element = new ParameterElement(parent); element.SetName(metadata.Name); IElementDataBinding valueBinding = context.Build(parent, metadata.Value); if (valueBinding != null) { valueBinding.OnPropertyValueChanged += (c, a) => element.SetValue(a.Value); element.OnValueChanged += (c, a) => valueBinding.SetPropertyValue(a.Value); } if (metadata.OnValueChanged != null) { element.OnValueChanged += parent.GetScript(metadata.OnValueChanged); } return(element); }
private static void BindParameters(ObjectBuilderContext context, View parentView, View childView, dynamic parameters) { if (parameters != null) { foreach (var parameterLink in parameters) { ParameterElement parameter = childView.GetParameter(parameterLink.Name); if (parameter != null) { IElementDataBinding parameterValueBinding = context.Build(parentView, parameterLink.Value); if (parameterValueBinding != null) { parameterValueBinding.OnPropertyValueChanged += (c, a) => parameter.SetValue(a.Value); parameter.OnValueChanged += (c, a) => parameterValueBinding.SetPropertyValue(a.Value); } } } } }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var action = new BaseItemAction(parent); IElementDataBinding itemsDataBinding = context.Build(parent, metadata.Items); if (itemsDataBinding != null) { itemsDataBinding.OnPropertyValueChanged += (c, a) => action.SetItems(a.Value); action.OnValueChanged += (c, a) => itemsDataBinding.SetPropertyValue(a.Value); var sourceItemsDataBinding = itemsDataBinding as ISourceDataBinding; if (sourceItemsDataBinding != null) { var dataSourceName = sourceItemsDataBinding.GetDataSource(); var propertyName = sourceItemsDataBinding.GetProperty(); // Публикация сообщений в шину при возникновении событий action.NotifyWhenEventAsync(i => i.OnSetSelectedItem, a => { a.DataSource = dataSourceName; a.Property = propertyName; return(true); }); // Подписка на сообщения шины от внешних элементов action.SubscribeOnEvent(OnSetSelectedItem, a => a.DataSource == dataSourceName && a.Property == propertyName); } } action.SetAction(() => ExecuteAction(context, action, metadata)); return(action); }
private static void ExecuteAction(ObjectBuilderContext context, View parent, dynamic metadata) { ViewHelper.ShowView(null, () => context.Build(parent, metadata.View)); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var view = new View(parent); view.SetName(metadata.Name); view.SetImage(metadata.Image); // Прикладные скрипты var scripts = context.BuildScripts(view, (object)metadata.Scripts); if (scripts != null) { foreach (dynamic script in scripts) { view.AddScript(script.Name, script.Action); } } // Параметры var parameters = context.BuildParameters(view, (object)metadata.Parameters); if (parameters != null) { foreach (dynamic parameter in parameters) { view.AddParameter(parameter); } } // Источники данных var dataSources = context.BuildMany(view, metadata.DataSources); if (dataSources != null) { foreach (var dataSource in dataSources) { view.AddDataSource(dataSource); } } // Общие свойства context.BuildOneWayBinding(view, view, "Text", (object)metadata.Text); // Элементы представления var layoutPanel = context.Build(view, metadata.LayoutPanel); view.SetLayoutPanel(layoutPanel); // Обработчики событий if (metadata.OnTextChanged != null) { view.OnTextChanged += view.GetScript(metadata.OnTextChanged); } if (metadata.OnOpening != null) { view.OnOpening += view.GetScript(metadata.OnOpening); } if (metadata.OnOpened != null) { view.OnOpened += view.GetScript(metadata.OnOpened); } if (metadata.OnClosing != null) { view.OnClosing += view.GetScript(metadata.OnClosing); } else { view.OnClosing += (c, a) => OnClosingDefaultHandler(view, a); } if (metadata.OnClosed != null) { view.OnClosed += view.GetScript(metadata.OnClosed); } if (metadata.OnLoaded != null) { view.OnLoaded += view.GetScript(metadata.OnLoaded); } // Публикация сообщений в шину при возникновении событий view.NotifyWhenEventAsync(i => i.OnLoaded); // Подписка на сообщения шины от внешних элементов view.SubscribeOnEvent(OnError); return(view); }
public object Build(ObjectBuilderContext context, View parent, dynamic metadata) { var treeView = new TreeViewElement(parent); treeView.ApplyElementMeatadata((object)metadata); treeView.SetMultiSelect(Convert.ToBoolean(metadata.MultiSelect)); treeView.SetShowNodeImages(Convert.ToBoolean(metadata.ShowNodeImages)); treeView.SetKeyProperty(metadata.KeyProperty); treeView.SetParentProperty(metadata.ParentProperty); treeView.SetImageProperty(metadata.ImageProperty); treeView.SetValueProperty(metadata.ValueProperty); treeView.SetDisplayProperty(metadata.DisplayProperty); // Установка формата отображения элемента var itemFormat = context.Build(parent, metadata.ItemFormat) as DataFormat; if (itemFormat != null) { treeView.OnRenderItem += (c, a) => { a.Display = itemFormat.Format(a.Item); }; } // Установка панели навигации по данным if (metadata.DataNavigation != null && metadata.DataNavigation.DataNavigation != null && metadata.Items != null && metadata.Items.PropertyBinding != null) { metadata.DataNavigation.DataNavigation.DataSource = metadata.Items.PropertyBinding.DataSource; } var navigationPanel = context.Build(parent, metadata.DataNavigation); treeView.SetDataNavigation(navigationPanel); // Установка контекстного меню var contextMenu = context.Build(parent, metadata.ContextMenu); treeView.SetContextMenu(contextMenu); // Привязка к источнику данных списка элементов IElementDataBinding itemsDataBinding = context.Build(parent, metadata.Items); itemsDataBinding.OnPropertyValueChanged += (c, a) => treeView.SetItems(a.Value); // Todo: ReadOnly, Format, Value, OnValueChanged and etc. var sourceItemsDataBinding = itemsDataBinding as ISourceDataBinding; // Если источник данных для списка элементов определен if (sourceItemsDataBinding != null) { var dataSourceName = sourceItemsDataBinding.GetDataSource(); var propertyName = sourceItemsDataBinding.GetProperty(); var dataSource = parent.GetDataSource(dataSourceName); if (dataSource != null) { treeView.SetIdProperty(dataSource.GetIdProperty()); } // Публикация сообщений в шину при возникновении событий treeView.NotifyWhenEventAsync(i => i.OnSetSelectedItem, a => { a.DataSource = dataSourceName; a.Property = propertyName; return(true); }); // Подписка на сообщения шины от внешних элементов Func <dynamic, bool> filter = a => !Equals(a.Source, treeView) && a.DataSource == dataSourceName && a.Property == propertyName; treeView.SubscribeOnEvent(OnItemDeleted, filter); treeView.SubscribeOnEvent(OnSetSelectedItem, filter); } if (metadata.OnDoubleClick != null) { treeView.OnDoubleClick += parent.GetScript(metadata.OnDoubleClick); } return(treeView); }