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;
                        }
                    }
                }
            }
        }
예제 #2
0
        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);
        }
예제 #4
0
        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;
        }
예제 #5
0
        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;
            }
        }
예제 #9
0
        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);
        }
예제 #10
0
        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;
            }
        }
예제 #11
0
        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);
            }
        }
예제 #12
0
 protected void SetItemsPropertyEditor(IModelLayoutGroup itemsLayoutItem)
 {
     itemsLayoutItem.ImageName = "BO_Product_Group";
 }