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; } } } } }
internal static List <IModelLayoutViewItem> AddItems(this IModelLayoutGroup group, object properties) { var list = new List <IModelLayoutViewItem>(); var pts = properties.GetType().GetProperties(); foreach (var item in pts) { var i = group.AddNode <IModelLayoutViewItem>(); list.Add(i); } return(list); }
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); }
public override void UpdateNode(DevExpress.ExpressApp.Model.Core.ModelNode node) { IModelViewLayout layoutNode = (IModelViewLayout)node; IModelLayoutGroup mainGroup = layoutNode.GetNode(ModelDetailViewLayoutNodesGenerator.MainLayoutGroupName) as IModelLayoutGroup; mainGroup.Direction = FlowDirection.Horizontal; IModelLayoutViewItem myItem = mainGroup.AddNode <IModelLayoutViewItem>("Icon"); myItem.Index = int.MinValue; myItem.MaxSize = new System.Drawing.Size(64, 64); myItem.SizeConstraintsType = XafSizeConstraintsType.Custom; myItem.ViewItem = ((IModelCompositeView)layoutNode.Parent).Items.GetNode("Icon") as IModelViewItem; }
public static string Get_Caption(IModelLayoutGroup layoutGroup) { var count = layoutGroup.Count(_ => !(_ is IModelModelMap)); if (count == 1 && layoutGroup[0] is IModelLayoutViewItem) { IModelViewItem layoutItemModel = ((IModelLayoutViewItem)layoutGroup[0]).ViewItem; if (layoutItemModel != null) { return(layoutItemModel.Caption); } } return(layoutGroup.Id); }
private void UpdateLayoutItems(IModelDetailViewLayoutElement element, IModelDetailViewItems items, IMemberInfo member) { IModelLayoutItem item = element as IModelLayoutItem; IModelLayoutGroup group = element as IModelLayoutGroup; if (group != null) { foreach (IModelDetailViewLayoutElement element1 in group) { UpdateLayoutItems(element1, items, member); } } else if (item != null) { RemoveFromGroup(item); // you just need to code this bit of magic } }
internal static void MapLayoutGroup( IModelLayoutGroup modelLayoutGroup, ILayoutGroupItem groupItemNode ) { modelLayoutGroup.Direction = groupItemNode.Direction; if (groupItemNode.ImageName is not null) { modelLayoutGroup.ImageName = groupItemNode.ImageName ?? modelLayoutGroup.ImageName; } if (groupItemNode.IsCollapsibleGroup is not null) { modelLayoutGroup.IsCollapsibleGroup = groupItemNode.IsCollapsibleGroup ?? modelLayoutGroup.IsCollapsibleGroup; } }
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; } }
internal static IModelLayoutGroup AddGroup(this IModelNode view, string id = null, FlowDirection?direction = null, bool?showCaption = null, string caption = null, string imageName = null, int?index = null) { var v = view as IModelNode; IModelLayoutGroup rst = v.AddNode <IModelLayoutGroup>(id); if (direction.HasValue) { rst.Direction = direction.Value; } if (showCaption.HasValue) { rst.ShowCaption = showCaption.Value; rst.Caption = caption; } if (string.IsNullOrEmpty(imageName)) { rst.ImageName = imageName; } if (index.HasValue) { rst.Index = index.Value; } return(rst); }
protected IModelLayoutGroup HGroup <T>(IModelDetailView view, IModelLayoutGroup layout, int index, Expression <Func <T, object> >[] property) { try { //layout.GetNodes<IModelLayoutViewItem>(); var gname = "R" + (layout.Count() + 1); //var ng = (layout.GetNode(gname)); //if (ng != null) //{ //} var group = layout.AddNode <IModelLayoutGroup>(gname); group.Index = index; group.Direction = FlowDirection.Horizontal; var lastIndex = group.NodeCount; foreach (var item in property) { var rst = group.AddNode <IModelLayoutViewItem>("I" + lastIndex); if (item != null) { var name = GetMemberName(item); rst.ViewItem = view.Items[name]; } lastIndex++; rst.Index = lastIndex; } return(group); } catch (Exception ex) { throw ex; } }
private void CreateLayout(DefineLayoutTabsAttribute[] tabs, List <ItemLayoutInfo> items, DefineLayoutGroupAttribute[] groups, string parent, IModelNode parentGroup) { var curr = groups.Where(x => x.Parent == parent).OrderBy(x => x.Index); foreach (var item in curr) { IModelLayoutGroup newNode = parentGroup.AddGroup(item.GroupID, item.Direction, item.ShowCaption, item.Caption, item.ImageName, item.Index); var lis = items.Where(x => x.Group == item.GroupID).OrderBy(x => x.Index).ToArray(); foreach (var li in lis) { newNode.AddItem(li.Item, li.Index); } CreateLayout(tabs, items, groups, item.GroupID, newNode); } var currTabs = tabs.Where(x => x.Parent == parent); foreach (var item in currTabs) { var child = parentGroup.AddTab(item.TabID, item.Index); CreateLayout(tabs, items, groups, item.TabID, child); } }
protected void SetItemsPropertyEditor(IModelLayoutGroup itemsLayoutItem) { itemsLayoutItem.ImageName = "BO_Product_Group"; }