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;
                        }
                    }
                }
            }
        }
Example #2
0
        //public static IModelLayoutViewItem AddItem(this IModelLayoutGroup group, Expression<Func<object, object>> property)
        //{

        //    var mc = (property.Body as UnaryExpression);
        //    var mm = mc.Operand as MemberExpression;
        //    return group.AddItem(mm.Member.Name);
        //}

        public static IModelLayoutViewItem AddItem(this  IModelTabbedGroup tab, string viewItem)
        {
            var item = tab.AddNode <IModelLayoutViewItem>();

            item.ViewItem = item.ViewItems[viewItem];
            return(item);
        }
        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);
        }
        internal static void MapTabbedLayoutGroup(
            IModelTabbedGroup modelTabbedGroup,
            LayoutTabbedGroupItem tabbedGroupItemNode
            )
        {
            modelTabbedGroup.Direction = tabbedGroupItemNode.Direction;

            if (tabbedGroupItemNode.MultiLine is not null)
            {
                modelTabbedGroup.MultiLine =
                    tabbedGroupItemNode.MultiLine ?? modelTabbedGroup.MultiLine;
            }
        }
 private IModelLayoutGroup AddEditorToTabbedGroup(IModelTabbedGroup rootTabNode, string tabId, IModelPropertyEditor editor)
 {
     return(AddEditorToTabbedGroup(rootTabNode, tabId, editor, FlowDirection.Horizontal));
 }