private void GenerateNestedDetailViewLayout(IModelDetailView modelDetailView) { List <IModelViewItem> items = new List <IModelViewItem>(); foreach (IModelViewItem item in modelDetailView.Items) { items.Add(item); } foreach (IModelViewItem itemR in items) { itemR.Remove(); } int index = 0; foreach (string propertyName in CustomLayoutHelper.Instance.GetViewVisibleProperties(modelDetailView.Id)) { IModelPropertyEditor editor = modelDetailView.Items.AddNode <IModelPropertyEditor>(propertyName); editor.ImmediatePostData = true; editor.Index = index++; editor.PropertyName = propertyName; if (string.IsNullOrEmpty(((IModelViewItem)editor).Caption)) { ((IModelViewItem)editor).Caption = CaptionHelper.ConvertCompoundName(propertyName); } } }
private void GenerateTabbedLayout(IModelDetailView detailViewInfo) { if (detailViewInfo.Layout["Main"] != null) { detailViewInfo.Layout["Main"].Remove(); } IModelLayoutGroup main = detailViewInfo.Layout.AddNode <IModelLayoutGroup>(ModelDetailViewLayoutNodesGenerator.MainLayoutGroupName); IModelLayoutGroup generalNode = null; IModelTabbedGroup tabNode = null; IModelLayoutGroup footerNode = null; foreach (IModelViewItem modelViewItem in detailViewInfo.Items) { IModelPropertyEditor editor = modelViewItem as IModelPropertyEditor; if (editor != null) { if (FindModelDefaultAttribute(editor.ModelMember.MemberInfo, CustomDetailViewItemsGenarator.VisiblePropertiesAttribute) != null) { editor.PropertyEditorType = typeof(DetailPropertyEditor);// editor.ModelMember.EditorsInfo[EditorAliases.DetailPropertyEditor].DefaultEditor; } editor.ImmediatePostData = true; IModelMemberExtender item = (IModelMemberExtender)editor; string tabPageName = item.TabPageName; if (string.IsNullOrEmpty(tabPageName)) { if (item.Footer) { if (footerNode == null) { footerNode = main.AddNode <IModelLayoutGroup>(CustomDetailViewItemsGenarator.FooterId); footerNode.Index = 5; } AddLayoutItemNode(footerNode, editor); } else { if (generalNode == null) { generalNode = main.AddNode <IModelLayoutGroup>(CustomDetailViewItemsGenarator.GeneralId); generalNode.Index = editor.Index.HasValue ? editor.Index : 0; } AddLayoutItemNode(generalNode, editor); } } else { if (tabNode == null) { tabNode = main.AddNode <IModelTabbedGroup>(CustomDetailViewItemsGenarator.MainTabId); tabNode.Index = editor.Index.HasValue ? editor.Index : 1; } IModelLayoutGroup group = AddEditorToTabbedGroup(tabNode, tabPageName, editor); if (editor.ModelMember.Index >= 0) { group.Index = editor.ModelMember.Index; } } } } }
private void GenerateCustomLayout(IModelDetailView modelDetailView) { ITypeInfo iTypeInfo = modelDetailView.ModelClass.TypeInfo; HashSet <string> actionContainerNames = new HashSet <string>(); foreach (IModelViewItem item in modelDetailView.Items) { IModelPropertyEditor editorInfo = (IModelPropertyEditor)item; if (CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, VisiblePropertiesAttribute) != null) { editorInfo.PropertyEditorType = typeof(DetailPropertyEditor); } string visiblePropertiesAttributeValue = ((IModelMemberExtender)item).VisibleProperties; if (editorInfo.PropertyEditorType == typeof(DetailPropertyEditor) && !string.IsNullOrEmpty(visiblePropertiesAttributeValue)) { string nestedViewId = iTypeInfo.Name + "_" + editorInfo.PropertyName + "_DetailView"; editorInfo.View = modelDetailView.Application.Views[nestedViewId]; } ModelDefaultAttribute actionsContainerAttribute = CustomLayoutHelper.FindModelDefaultAttribute(editorInfo.ModelMember.MemberInfo, ActionsContainerAttribute); if (actionsContainerAttribute != null) { actionContainerNames.Add(actionsContainerAttribute.PropertyValue); } } foreach (string name in actionContainerNames) { IModelActionContainerViewItem modelActionContainerViewItem = modelDetailView.Items.AddNode <IModelActionContainerViewItem>(name); } }
IAnalysisControl GetAnalysisControl(IModelPropertyEditor modelPropertyEditor) { try { return(AnalysisEditors.Where(@base => @base.PropertyName == modelPropertyEditor.PropertyName).OfType <TAnalysisEditor>().Single().Control); } catch (InvalidOperationException) { throw new UserFriendlyException( new Exception(String.Format("Use {0} as your default property editor for {1}", typeof(TAnalysisEditor).FullName, typeof(IAnalysisInfo).Name))); } }
public static void MockDetailViewEditor(this XafApplication application, IModelPropertyEditor modelPropertyEditor, object controlInstance) { modelPropertyEditor.PropertyEditorType = typeof(CustomPropertyEditor); application.EditorFactory.GetMock().Setup(factory => factory .CreateDetailViewEditor(false, It.IsAny <IModelViewItem>(), modelPropertyEditor.ModelMember.ModelClass.TypeInfo.Type, application, It.IsAny <IObjectSpace>())) .Returns((bool needProtectedContent, IModelMemberViewItem modelViewItem, Type objectType, XafApplication xafApplication, IObjectSpace objectSpace) => { if (modelViewItem == modelPropertyEditor) { return(new CustomPropertyEditor(objectType, modelViewItem, controlInstance)); } return(new EditorsFactory().CreateDetailViewEditor(needProtectedContent, modelViewItem, objectType, application, objectSpace)); }); }
private void AddLayoutItemNode(IModelLayoutGroup layoutGroup, IModelPropertyEditor editor) { ModelDefaultAttribute modelDefaultAttribute = FindModelDefaultAttribute(editor.ModelMember.MemberInfo, CustomDetailViewItemsGenarator.ActionsContainerAttribute); if (modelDefaultAttribute != null) { IModelViewItem container = editor.Parent.GetNode(modelDefaultAttribute.PropertyValue) as IModelViewItem; if ((container != null)) { IModelLayoutViewItem item = layoutGroup.AddNode <IModelLayoutViewItem>(container.Id); item.ViewItem = container; item.Index = editor.Index; } } else { IModelLayoutViewItem item = layoutGroup.AddNode <IModelLayoutViewItem>(editor.PropertyName); item.ViewItem = editor; item.Index = editor.Index; } }
private void CustomizeListPropertyEditor(IModelPropertyEditor propertyEditor) { if (propertyEditor.View is IModelListView listViewModel) { var mi = propertyEditor.ModelMember.MemberInfo; // Update list view column captions listViewModel.UpdateColumnCaptions(); // Remove link and link buttons for compositions // Actually they should be removed automatically after application // of AggregatedAttribute to a property //var prop = mi.Owner.Type.GetProperty(mi.Name); //var compAttr = prop.GetCustomAttributes<CompositionAttribute>(false).FirstOrDefault(); //if (compAttr != null) //{ // listViewModel.AllowLink = false; // listViewModel.AllowUnlink = false; //} } }
public static bool IsLayout(this IModelPropertyEditor modelPropertyEditor) => ((IModelViewItem)modelPropertyEditor).IsLayout();
public static void Set_ContentEditor(IModelDesignTemplateContentEditor contentEditor, IModelPropertyEditor propertyEditor) => contentEditor.ContentEditorId = propertyEditor.Id();
private IModelLayoutGroup AddEditorToTabbedGroup(IModelTabbedGroup rootTabNode, string tabId, IModelPropertyEditor editor, FlowDirection direction) { IModelLayoutGroup rootTabPageNode = (IModelLayoutGroup)rootTabNode[tabId]; if (rootTabPageNode == null) { rootTabPageNode = rootTabNode.AddNode <IModelLayoutGroup>(tabId); rootTabPageNode.Caption = CaptionHelper.ConvertCompoundName(tabId); rootTabPageNode.Direction = direction; } AddLayoutItemNode(rootTabPageNode, editor); return(rootTabPageNode); }
private IModelLayoutGroup AddEditorToTabbedGroup(IModelTabbedGroup rootTabNode, string tabId, IModelPropertyEditor editor) { return(AddEditorToTabbedGroup(rootTabNode, tabId, editor, FlowDirection.Horizontal)); }