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)); } } } }
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); } } } } }
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; }
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); }
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; } } }
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; } } }
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(); } } }
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; } } }
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); }
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); } } }
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; } } } } }
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
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); } } }
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();
public static void Set_ObjectView(IModelViewItemValueItem itemValueItem, IModelObjectView modelObjectView) => itemValueItem.ObjectViewId = modelObjectView.Id;
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)); }
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()); }
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; } } }
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; } } }