private void CollectLayoutItemVisibleCaptions <T>(IList <string> captions, IEnumerable <T> layoutInfo, ViewItemsCollection viewItems, bool recursively)
 {
     foreach (T itemInfo in layoutInfo)
     {
         if (itemInfo is IModelLayoutViewItem)
         {
             IModelLayoutViewItem layoutItemModel = (IModelLayoutViewItem)itemInfo;
             ViewItem             viewItem        = FindViewItem(viewItems, layoutItemModel);
             if (viewItem != null && GetIsLayoutItemCaptionVisible(layoutItemModel, viewItem) && GetIsItemForCaptionCalculation(layoutItemModel, viewItem))
             {
                 MarkRequiredFieldCaptionEventArgs args = new MarkRequiredFieldCaptionEventArgs(viewItem, false);
                 OnMarkRequiredFieldCaption(args);
                 captions.Add(BuildItemCaption(viewItem, args.NeedMarkRequiredField, args.RequiredFieldMark));
             }
         }
         else if (recursively)
         {
             if (itemInfo is IEnumerable <IModelViewLayoutElement> )
             {
                 CollectLayoutItemVisibleCaptions <IModelViewLayoutElement>(captions, (IEnumerable <IModelViewLayoutElement>)itemInfo, viewItems, recursively);
             }
             else if (itemInfo is IEnumerable <IModelLayoutGroup> )
             {
                 CollectLayoutItemVisibleCaptions <IModelLayoutGroup>(captions, (IEnumerable <IModelLayoutGroup>)itemInfo, viewItems, recursively);
             }
         }
     }
 }
        private static ViewItem FindViewItem(ViewItemsCollection viewItems, IModelLayoutViewItem layoutItemModel)
        {
            IModelViewItem viewItem   = layoutItemModel.ViewItem;
            string         viewItemId = viewItem != null ? viewItem.Id : layoutItemModel.Id;

            return(viewItems[viewItemId]);
        }
예제 #3
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;
        }
 private void DetailViewTabCountController_ItemCreated(object sender, ItemCreatedEventArgs e)
 {
     if (e.Item is LayoutGroup layoutGroup && e.ModelLayoutElement.Parent is IModelTabbedGroup)
     {
         foreach (IModelLayoutItem item in ((IModelLayoutGroup)e.ModelLayoutElement))
         {
             IModelLayoutViewItem layoutViewItem = item as IModelLayoutViewItem;
             if (layoutViewItem == null)
             {
                 continue;
             }
             ListPropertyEditor propertyEditor = View.FindItem(layoutViewItem.ViewItem.Id) as ListPropertyEditor;
             if (propertyEditor != null)
             {
                 propertyEditor.Frame.GetController <NestedListViewTabCountController>().Initialize(layoutGroup);
             }
         }
     }
 }
        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;
            }
        }
예제 #6
0
        private void AddStateMachineActionsContainerToDetailViewLayout(DetailView detailView, string actionsContainerId, string caption)
        {
            if (detailView.Model.Items[actionsContainerId] != null)
            {
                return;
            }
            var    containerViewItem1   = detailView.Model.Items.AddNode <IModelActionContainerViewItem>(actionsContainerId);
            var    modelApplicationBase = ( ModelApplicationBase )detailView.Model.Application;
            string currentAspect        = modelApplicationBase.CurrentAspect;

            modelApplicationBase.SetCurrentAspect("");
            containerViewItem1.Caption = caption;
            modelApplicationBase.SetCurrentAspect(currentAspect);
            IModelViewLayoutElement viewLayoutElement   = detailView.Model.Layout.Count > 0 ? detailView.Model.Layout[0] : null;
            IModelLayoutViewItem    modelLayoutViewItem = !(viewLayoutElement is IModelLayoutGroup)
                                                   ? detailView.Model.Layout.AddNode <IModelLayoutViewItem>(containerViewItem1.Id)
                                                   : viewLayoutElement.AddNode <IModelLayoutViewItem>(containerViewItem1.Id);

            modelLayoutViewItem.ViewItem    = containerViewItem1;
            modelLayoutViewItem.ShowCaption = true;
            var containerViewItem2 = ( ActionContainerViewItem )detailView.AddItem(containerViewItem1);
        }
 private DevExpress.Utils.VertAlignment GetCaptionVerticalAlignment(IModelLayoutViewItem layoutItemModel)
 {
     DevExpress.Utils.VertAlignment captionVerticalAlignment = layoutItemModel.CaptionVerticalAlignment;
     return(Equals(captionVerticalAlignment, DevExpress.Utils.VertAlignment.Default) ? DefaultLayoutItemCaptionVerticalAlignment : captionVerticalAlignment);
 }
        private DevExpress.Utils.Locations GetCaptionLocation(IModelLayoutViewItem layoutItemModel)
        {
            Locations captionLocation = layoutItemModel.CaptionLocation;

            return(Equals(captionLocation, Locations.Default) ? DefaultLayoutItemCaptionLocation : (DevExpress.Utils.Locations)captionLocation);
        }
        protected override LayoutItemTemplateContainer LayoutItem(ViewItemsCollection viewItems, IModelLayoutViewItem layoutItemModel)
        {
            LayoutItemTemplateContainer templateContainer = new LayoutItemTemplateContainer(this, viewItems, layoutItemModel);

            templateContainer.Template = LayoutItemTemplate;
            templateContainer.ID       = WebIdHelper.GetCorrectedLayoutItemId(layoutItemModel);
            ViewItem viewItem = FindViewItem(viewItems, layoutItemModel);

            templateContainer.ViewItem = viewItem;
            if (viewItem != null)
            {
                MarkRequiredFieldCaptionEventArgs args = new MarkRequiredFieldCaptionEventArgs(viewItem, false);
                OnMarkRequiredFieldCaption(args);
                templateContainer.Caption = BuildItemCaption(viewItem, args.NeedMarkRequiredField, args.RequiredFieldMark);
            }
            templateContainer.ShowCaption                = GetIsLayoutItemCaptionVisible(layoutItemModel, viewItem);
            templateContainer.CaptionWidth               = CalculateCaptionWidth(viewItem, viewItems, layoutItemModel);
            templateContainer.CaptionLocation            = GetCaptionLocation(layoutItemModel);
            templateContainer.CaptionHorizontalAlignment = GetCaptionHorizontalAlignment(layoutItemModel);
            templateContainer.CaptionVerticalAlignment   = GetCaptionVerticalAlignment(layoutItemModel);
            OnLayoutItemCreatedNew(templateContainer, layoutItemModel, viewItem);
            return(templateContainer);
        }
        private System.Web.UI.WebControls.Unit CalculateCaptionWidth(ViewItem viewItem, ViewItemsCollection viewItems, IModelLayoutViewItem layoutItemModel)
        {
            var item = layoutItemModel as IModelWebLayoutItem;

            if (item != null)
            {
                if (item.TextAlignMode == TextAlignModeItem.AutoSize)
                {
                    return(this.GetMaxStringWidth(new string[] { this.EnsureCaptionColon(viewItem.Caption) }));
                }
                else
                {
                    IModelViewLayoutElement current = layoutItemModel;
                    while (current != null)
                    {
                        var group = current.Parent as IModelWebLayoutGroup;
                        if (group != null)
                        {
                            if (group.TextAlignMode == TextAlignModeGroup.AutoSize)
                            {
                                return(this.GetMaxStringWidth(new string[] { this.EnsureCaptionColon(viewItem.Caption) }));
                            }
                            if (group.TextAlignMode == TextAlignModeGroup.AlignLocal)
                            {
                                return(CalculateLayoutItemCaptionWidthNew((IModelLayoutGroup)group, viewItems, false));
                            }
                            if (group.TextAlignMode == TextAlignModeGroup.AlignWithChildren)
                            {
                                return(CalculateLayoutItemCaptionWidthNew((IModelLayoutGroup)group, viewItems, true));
                            }
                        }
                        current = current.Parent as IModelViewLayoutElement;
                    }
                }
            }
            return(this.LayoutItemCaptionWidth);
        }