Exemplo n.º 1
0
        public static IEnumerable <ModelMergedDifferenceInfo> GenerateModelMergedDifferenceInfos(this IModelViews modelViews)
        {
            var modelApplication = modelViews.Application;
            var objects          = modelApplication.BOModel.Select(@class => new { ModelClass = @class, Attributes = @class.TypeInfo.FindAttributes <ModelMergedDifferencesAttribute>(false) }).Where(arg
                                                                                                                                                                                                      => arg.Attributes.Any()).Select(arg => new {
                arg.Attributes, arg.ModelClass, Views = modelApplication.Views.OfType <IModelObjectView>().Where(view
                                                                                                                 => view.ModelClass != arg.ModelClass && arg.ModelClass.TypeInfo.IsAssignableFrom(view.ModelClass.TypeInfo))
            });

            foreach (var o in objects)
            {
                foreach (IModelObjectView view in o.Views)
                {
                    var mergedDifferences  = ((IModelObjectViewMergedDifferences)view);
                    IModelObjectView view1 = view;
                    foreach (var attribute in o.Attributes.Where(attribute => attribute.CloneViewType == CloneViewType.ListView ? view1 is IModelListView : view1 is IModelDetailView))
                    {
                        var modelMergedDifference = mergedDifferences.MergedDifferences.AddNode <IModelMergedDifference>(attribute.Strategy + " from " + o.ModelClass.TypeInfo.Name);
                        modelMergedDifference.Strategy = ((IModelOptionsMergedDifferenceStrategy)modelApplication.Options).MergedDifferenceStrategies.First(strategy
                                                                                                                                                            => strategy.Id() == attribute.Strategy);
                        modelMergedDifference.View = (IModelObjectView)(attribute.CloneViewType == CloneViewType.ListView ? (IModelView)o.ModelClass.DefaultListView : o.ModelClass.DefaultDetailView);
                        yield return(MergedDifferenceInfo(new[] { (ModelApplicationBase)modelApplication })(modelMergedDifference));
                    }
                }
            }
        }
Exemplo n.º 2
0
 void ClearViewAttributes(IModelMergedDifferenceStrategy strategy, IModelObjectView modelObjectView)
 {
     foreach (var valueInfo in GetValuesInfos(modelObjectView, strategy.MergedViewValueInfos))
     {
         modelObjectView.ClearValue(valueInfo.Name);
     }
 }
        void navigationItemCreated(object sender, NavigationItemCreatedEventArgs e)
        {
            ChoiceActionItem navigationItem = e.NavigationItem;
            IModelObjectView viewNode       = ((IModelNavigationItem)e.NavigationItem.Model).View as IModelObjectView;

            if (viewNode != null)
            {
                ITypeInfo objectTypeInfo = XafTypesInfo.Instance.FindTypeInfo(viewNode.ModelClass.Name);
                if (objectTypeInfo != null)
                {
                    CriteriaOperator     docCriteria   = CriteriaOperator.Parse("ObjectType == ?", objectTypeInfo.Type);
                    IObjectSpace         myObjectSpace = Application.CreateObjectSpace(typeof(HelpDocument));
                    IList <HelpDocument> docs          = myObjectSpace.GetObjects <HelpDocument>(docCriteria);
                    if (docs.Count > 0)
                    {
                        ChoiceActionItem docsGroup = new ChoiceActionItem("CustomDocuments", "Task-Based Help", null)
                        {
                            ImageName = "BO_Report"
                        };
                        navigationItem.Items.Add(docsGroup);
                        foreach (HelpDocument doc in docs)
                        {
                            ViewShortcut     shortcut = new ViewShortcut(typeof(HelpDocument), doc.Oid.ToString(), "HelpDocument_DetailView_FewColumns");
                            ChoiceActionItem docItem  = new ChoiceActionItem(doc.Oid.ToString(), doc.Title, shortcut)
                            {
                                ImageName = "Navigation_Item_Report"
                            };
                            docsGroup.Items.Add(docItem);
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
 public void LoadViewInfo(IModelObjectView view)
 {
     this.Name        = view.Id;
     this.Caption     = view.Caption;
     this.AllowDelete = view.AllowDelete;
     this.AllowEdit   = view.AllowEdit;
     this.AllowNew    = view.AllowNew;
 }
Exemplo n.º 5
0
        public static IEnumerable <IModelCommonMemberViewItem> CommonMemberViewItems(this IModelObjectView modelObjectView, string id = null)
        {
            var viewItems = modelObjectView is IModelDetailView modelDetailView
                ? modelDetailView.Items.OfType <IModelCommonMemberViewItem>()
                : ((IModelListView)modelObjectView).Columns;

            return(id != null?viewItems.Cast <IModelNode>().Where(item => item.Id() == id).Cast <IModelCommonMemberViewItem>() : viewItems);
        }
Exemplo n.º 6
0
 object GetObjectByKey(string objectKey, IModelObjectView modelObjectView) {
     if (modelObjectView != null && modelObjectView.ModelClass.TypeInfo.IsPersistent) {
         var typeInfo = modelObjectView.ModelClass.TypeInfo;
         var objectSpace = WebApplication.Instance.CreateObjectSpace(typeInfo.Type);
         var convert = ReflectionHelper.Convert(objectKey, typeInfo.KeyMember.MemberType);
         return objectSpace.GetObjectByKey(typeInfo.Type, convert);
     }
     return null;
 }
 object GetObjectByKey(string objectKey, IModelObjectView modelObjectView)
 {
     if (modelObjectView != null && modelObjectView.ModelClass.TypeInfo.IsPersistent)
     {
         var typeInfo    = modelObjectView.ModelClass.TypeInfo;
         var objectSpace = WebApplication.Instance.CreateObjectSpace(typeInfo.Type);
         var convert     = ReflectionHelper.Convert(objectKey, typeInfo.KeyMember.MemberType);
         return(objectSpace.GetObjectByKey(typeInfo.Type, convert));
     }
     return(null);
 }
 public override void UpdateNode(DevExpress.ExpressApp.Model.Core.ModelNode node)
 {
     foreach (IModelView view in node.Nodes)
     {
         IModelObjectView objectview = view.AsObjectView;
         if (objectview != null && objectview.ModelClass.TypeInfo.Implements <ISingletonBO>())
         {
             view.AllowNew    = false;
             view.AllowDelete = false;
         }
     }
 }
Exemplo n.º 9
0
 void RemoveUnrelatedNodes(IModelObjectView modelObjectView, IModelMergedDifferenceStrategyIncludedNodePath nodePath)
 {
     for (int i = modelObjectView.NodeCount - 1; i >= 0; i--)
     {
         var modelNode = modelObjectView.GetNode(i);
         if (modelNode.Id() == nodePath.NodePath)
         {
             modelNode.Remove();
             break;
         }
     }
 }
Exemplo n.º 10
0
        void RemoveStrategyUnrelatedNodes(IModelObjectView modelObjectView, IModelMergedDifferenceStrategy strategy)
        {
            var nodePaths = new HashSet <string>(GetIncludedNodePaths(modelObjectView, strategy).Select(path => path.NodePath));

            for (int i = modelObjectView.NodeCount - 1; i >= 0; i--)
            {
                var modelNode = modelObjectView.GetNode(i);
                var id        = modelNode.Id();
                if (!nodePaths.Contains(id))
                {
                    modelNode.Remove();
                }
            }
        }
Exemplo n.º 11
0
 void AssignAsDefaultView(CloneViewAttribute cloneViewAttribute, IModelObjectView modelView)
 {
     if (cloneViewAttribute.IsDefault)
     {
         var view = modelView as IModelListView;
         if (view != null)
         {
             view.ModelClass.DefaultListView = view;
         }
         else
         {
             modelView.ModelClass.DefaultDetailView = (IModelDetailView)modelView;
         }
     }
 }
Exemplo n.º 12
0
        void UpdateDetailViewItems(CalculatedModelNodeList <IModelNode> items, IModelObjectView targetObjectView)
        {
            var detailView = targetObjectView as IModelDetailView;

            if (detailView != null)
            {
                for (int index = items.Count - 1; index >= 0; index--)
                {
                    var modelViewItem = items[index];
                    var id            = modelViewItem.Id();
                    var viewItem      = detailView.Items[id];
                    if (viewItem == null)
                    {
                        ModelEditorHelper.AddCloneNode((ModelNode)detailView.Items, (ModelNode)modelViewItem, id);
                    }
                }
            }
        }
        public static string GetImageName(IModelView modelView)
        {
            if (modelView == null)
            {
                return(string.Empty);
            }
            string imageName = modelView.ImageName;

            if (string.IsNullOrEmpty(imageName))
            {
                IModelObjectView view = modelView as IModelObjectView;
                if ((view != null) && (view.ModelClass != null))
                {
                    imageName = view.ModelClass.ImageName;
                }
            }
            return(imageName);
        }
Exemplo n.º 14
0
 void CloneNodes(IModelMergedDifference mergedDifference, IModelObjectView targetObjectView, IModelObjectView sourceObjectView)
 {
     foreach (var nodePath in GetIncludedNodePaths(mergedDifference))
     {
         CalculatedModelNodeList <IModelNode> items = null;
         var needsUpdate = nodePath.NodePath == "Items" || nodePath.NodePath == "Columns";
         if (needsUpdate)
         {
             var modelDetailView = targetObjectView as IModelDetailView;
             var modelNodes      = modelDetailView != null? (IEnumerable <IModelNode>)modelDetailView.Items: ((IModelListView)targetObjectView).Columns;
             items = new CalculatedModelNodeList <IModelNode>(modelNodes);
         }
         RemoveUnrelatedNodes(targetObjectView, nodePath);
         CloneNodes(sourceObjectView, nodePath, targetObjectView);
         if (needsUpdate)
         {
             UpdateDetailViewItems(items, targetObjectView);
             UpdateColumns(items, targetObjectView, mergedDifference.InvisibleListViewColumns);
         }
     }
 }
Exemplo n.º 15
0
 void AssignAsDefaultView(CloneModelViewAttribute cloneModelViewAttribute, IModelObjectView modelView, bool isLookup)
 {
     if (cloneModelViewAttribute.IsDefault)
     {
         if (modelView is IModelListView view)
         {
             if (!isLookup)
             {
                 view.ModelClass.DefaultListView = view;
             }
             else
             {
                 view.ModelClass.DefaultLookupListView = view;
             }
         }
         else
         {
             modelView.ModelClass.DefaultDetailView = (IModelDetailView)modelView;
         }
     }
 }
        private void NavigationController_NavigationItemCreated(object sender, NavigationItemCreatedEventArgs e)
        {
            ChoiceActionItem navigationItem = e.NavigationItem;

            if (navigationItem.Items != null && navigationItem.Items.Count > 0)
            {
                foreach (ChoiceActionItem item in navigationItem.Items)
                {
                    IModelObjectView viewNode = ((IModelNavigationItem)item.Model).View as IModelObjectView;
                    if (viewNode != null)
                    {
                        ITypeInfo objectTypeInfo = XafTypesInfo.Instance.FindTypeInfo(viewNode.ModelClass.Name);
                        var       attr           = objectTypeInfo.FindAttribute <NavigationItemCaptionAttribute>();
                        if (attr != null)
                        {
                            navigationItem.Caption = attr.Caption;
                            break;
                        }
                    }
                }
            }
        }
Exemplo n.º 17
0
        void UpdateColumns(CalculatedModelNodeList <IModelNode> columns, IModelObjectView targetObjectView, bool invisibleListViewColumns)
        {
            var modelListView = targetObjectView as IModelListView;

            if (modelListView != null)
            {
                for (int index = columns.Count - 1; index >= 0; index--)
                {
                    var column   = columns[index];
                    var id       = column.Id();
                    var viewItem = modelListView.Columns[id];
                    if (viewItem == null)
                    {
                        var source    = (ModelNode)column;
                        var cloneNode = ModelEditorHelper.AddCloneNode((ModelNode)modelListView.Columns, source, id);
                        if (invisibleListViewColumns)
                        {
                            cloneNode.Index = -1;
                        }
                    }
                }
            }
        }
 public static IEnumerable <IModelCommonMemberViewItemCloneValue> CloneValueMemberViewItems(this IModelObjectView modelObjectView)
 {
     return((modelObjectView is IModelListView view? view.Columns.Cast <IModelCommonMemberViewItemCloneValue>()
             : ((IModelDetailView)modelObjectView).Items.OfType <IModelCommonMemberViewItemCloneValue>())
            .Where(state => state.CloneValue));
 }
 public static IModelMemberViewItem[] MemberViewItems(this IModelObjectView modelObjectView) => (modelObjectView is IModelListView modelListView ? modelListView.Columns
Exemplo n.º 20
0
 void MergeObjectViewValueInfos(IModelMergedDifferenceStrategy differenceStrategy, IModelView sourceObjectView, IModelObjectView targetObjectView)
 {
     foreach (var valueInfo in GetValuesInfos(sourceObjectView, differenceStrategy.MergedViewValueInfos))
     {
         var sourceValue = sourceObjectView.GetValue(valueInfo.Name, valueInfo.PropertyType);
         var targetValue = targetObjectView.GetValue(valueInfo.Name, valueInfo.PropertyType);
         if (sourceValue != targetValue)
         {
             targetObjectView.SetValue(valueInfo.Name, valueInfo.PropertyType, sourceValue);
         }
     }
 }
Exemplo n.º 21
0
        private static IEnumerable <IModelCommonMemberViewItem> GetModelViewItems(IModelObjectView modelObjectView)
        {
            var modelDetailView = modelObjectView as IModelDetailView;

            return(modelDetailView != null?modelDetailView.Items.OfType <IModelCommonMemberViewItem>() : ((IModelListView)modelObjectView).Columns);
        }
 public static IModelMemberViewItem[] VisibleMemberViewItems(this IModelObjectView modelObjectView) => modelObjectView.MemberViewItems().VisibleMemberViewItems().ToArray();
Exemplo n.º 23
0
 public static void Set_ObjectView(IModelViewItemValueItem itemValueItem, IModelObjectView modelObjectView) =>
 itemValueItem.ObjectViewId = modelObjectView.Id;
Exemplo n.º 24
0
        IEnumerable <IModelMergedDifferenceStrategyIncludedNodePath> GetIncludedNodePaths(IModelObjectView modelObjectView, IModelMergedDifferenceStrategy strategy)
        {
            var viewType = modelObjectView is IModelDetailView ? ViewType.DetailView : ViewType.ListView;

            return(strategy.IncludedNodePaths.Where(path => path.ViewType == viewType || path.ViewType == ViewType.Any));
        }
Exemplo n.º 25
0
 public static IEnumerable <IModelPropertyEditor> PropertyEditorItems(this IModelObjectView modelObjectView, Type propertyEditorType = null) => modelObjectView
 .MemberViewItems(propertyEditorType).OfType <IModelPropertyEditor>();
 public static void Set_ObjectView(IModelObjectViewDependency todoObjectView, IModelObjectView value) => todoObjectView.ObjectViewId = value.Id;
 public static IModelMemberViewItem[] MemberViewItems(this IModelObjectView modelObjectView, System.Type propertyEditorType)
 {
     return(modelObjectView.MemberViewItems()
            .Where(item => propertyEditorType.IsAssignableFrom(item.PropertyEditorType)).ToArray());
 }
 public static IEnumerable <IModelMemberViewItem> MemberViewItems(this IModelObjectView modelObjectView, Type propertyEditorType = null) =>
 (modelObjectView is IModelListView modelListView ? modelListView.Columns : ((IModelDetailView)modelObjectView).Items.OfType <IModelMemberViewItem>())
 public static IModelMemberViewItem[] MemberViewItems(this IModelObjectView modelObjectView)
 {
     return((modelObjectView is IModelListView modelListView ? modelListView.Columns
         : ((IModelDetailView)modelObjectView).Items.OfType <IModelMemberViewItem>()).ToArray());
 }
Exemplo n.º 30
0
 static void AssignAsDefaultView(CloneModelViewAttribute cloneModelViewAttribute, IModelObjectView modelView)
 {
     if (cloneModelViewAttribute.IsDefault)
     {
         if (modelView is IModelListView view)
         {
             if (cloneModelViewAttribute.ViewType != CloneViewType.LookupListView)
             {
                 view.ModelClass.DefaultListView = view;
             }
             else
             {
                 view.ModelClass.DefaultLookupListView = view;
             }
         }
         else
         {
             modelView.ModelClass.DefaultDetailView = (IModelDetailView)modelView;
         }
     }
 }
Exemplo n.º 31
0
 void CloneNodes(IModelView modelView, IModelMergedDifferenceStrategyIncludedNodePath nodePath, IModelObjectView modelObjectView)
 {
     for (int i = 0; i < modelView.NodeCount; i++)
     {
         var modelNode = modelView.GetNode(i);
         var id        = modelNode.Id();
         if (id == nodePath.NodePath)
         {
             ModelEditorHelper.AddCloneNode((ModelNode)modelObjectView, (ModelNode)modelNode, id);
             break;
         }
     }
 }