Example #1
0
        public override void UpdateNode(ModelNode node)
        {
            var modelClasses = node.Application.BOModel.Where(modelClass => modelClass.TypeInfo.FindAttribute <CloneViewAttribute>() != null);

            foreach (var modelClass in modelClasses)
            {
                var cloneViewAttributes = modelClass.TypeInfo.FindAttributes <CloneViewAttribute>(false).OrderBy(viewAttribute => viewAttribute.ViewType);
                foreach (var cloneViewAttribute in cloneViewAttributes)
                {
                    if (node.Application.Views[cloneViewAttribute.ViewId] == null)
                    {
                        var modelView     = GetModelView(modelClass, cloneViewAttribute);
                        var cloneNodeFrom = ((ModelNode)modelView).Clone(cloneViewAttribute.ViewId);
                        AssignAsDefaultView(cloneViewAttribute, (IModelObjectView)cloneNodeFrom);
                        if (modelView is IModelListView && !(string.IsNullOrEmpty(cloneViewAttribute.DetailView)))
                        {
                            CloneViewAttribute attribute = cloneViewAttribute;
                            var modelDetailView          = node.Application.Views.OfType <IModelDetailView>().FirstOrDefault(view
                                                                                                                             => view.Id == attribute.DetailView);
                            if (modelDetailView == null)
                            {
                                throw new NullReferenceException(attribute.DetailView);
                            }
                            ((IModelListView)cloneNodeFrom).DetailView = modelDetailView;
                        }
                    }
                }
            }
        }
Example #2
0
 IModelObjectView GetModelView(IModelClass modelClass, CloneViewAttribute cloneViewAttribute)
 {
     if (cloneViewAttribute.ViewType == CloneViewType.LookupListView)
     {
         return(modelClass.DefaultLookupListView);
     }
     if (cloneViewAttribute.ViewType == CloneViewType.DetailView)
     {
         return(modelClass.DefaultDetailView);
     }
     return(modelClass.DefaultListView);
 }
Example #3
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;
         }
     }
 }