Esempio n. 1
0
 private void ConfigureLayoutViewPredefinedMapService(PredefinedMap predefinedMap = PredefinedMap.LayoutView)
 {
     if (new[] { PredefinedMap.LayoutView, PredefinedMap.LayoutViewColumn }.Contains(predefinedMap))
     {
         typeof(PredefinedMapService).Field("_layoutViewListEditorTypeName", Flags.Static | Flags.AnyVisibility).Set(typeof(CustomGridListEditor).FullName);
     }
 }
Esempio n. 2
0
        public void Extend_Existing_ViewItemMap(string platformName, PredefinedMap predefinedMap)
        {
            var platform        = GetPlatform(platformName);
            var mapPropertyName = predefinedMap.IsRepositoryItem()?ViewItemService.RepositoryItemsMapName:ViewItemService.PropertyEditorControlMapName;

            InitializeMapperService(nameof(Extend_Existing_ViewItemMap), platform);
            using (var module = new[] { predefinedMap }.Extend()){
                module.ApplicationModulesManager
                .FirstAsync()
                .SelectMany(_ => _.manager.ExtendMap(predefinedMap))
                .Subscribe(_ => {
                    _.extenders.Add(_.targetInterface, typeof(IModelPredefinedMapExtension));
                });
                using (var application = DefaultModelMapperModule(nameof(Extend_Existing_ViewItemMap), platform, module).Application){
                    var nodeByPath = application.Model.GetNodeByPath(MMDetailViewTestItemNodePath);
                    nodeByPath.ShouldNotBeNull();

                    var listNode = nodeByPath.GetNode(mapPropertyName);
                    listNode.ShouldNotBeNull();
                    var baseType  = listNode.ModelListItemType();
                    var modelType = baseType.ToTypeInfo().Descendants.First().Type;

                    (listNode.AddNode(modelType) is IModelPredefinedMapExtension).ShouldBeTrue();
                }
            }
        }
Esempio n. 3
0
        private void Extend_Predefined_ViewItem(PredefinedMap predefinedMap, string mapPropertyName,
                                                bool checkListViewColumns = false)
        {
            using (var module = predefinedMap.Extend()){
                var connectableObservable = TypeMappingService.MappedTypes.Replay();
                connectableObservable.Connect();
                using (var application =
                           DefaultModelMapperModule($"{nameof(Extend_Predefined_PropertyEditorControls)}-{predefinedMap}",
                                                    predefinedMap.Platform(), module).Application){
                    var typeToMap = predefinedMap.TypeToMap();

                    var modelNode = application.Model.GetNodeByPath(MMDetailViewTestItemNodePath);
                    modelNode.GetNode(mapPropertyName).ShouldNotBeNull();
                    if (checkListViewColumns)
                    {
                        modelNode = application.Model.GetNodeByPath(MMListViewTestItemNodePath);
                        modelNode.GetNode(mapPropertyName).ShouldNotBeNull();
                    }

                    var typeInfo = XafTypesInfo.Instance.FindTypeInfo(typeof(IModelModelMap)).Descendants
                                   .FirstOrDefault(info => info.Name.EndsWith(typeToMap.Name));
                    typeInfo.ShouldNotBeNull();
                    typeInfo.Name.ShouldBe(typeToMap.ModelTypeName());

                    var defaultContext =
                        ((IModelApplicationModelMapper)application.Model).ModelMapper.MapperContexts.GetNode(
                            ModelMapperContextNodeGenerator.Default);
                    defaultContext.ShouldNotBeNull();
                    var modelMapper = defaultContext.GetNode(predefinedMap.DisplayName());
                    modelMapper.ShouldNotBeNull();
                }
            }
        }
        private static void MockListEditor(Platform platform, Type[] controlTypes, XafApplication application,
                                           PredefinedMap predefinedMap, RepositoryItemTextEdit repositoryItemTextEdit)
        {
            application.MockListEditor((view, xafApplication, collectionSource) => {
                ListEditor listEditor;
                if (new[] { PredefinedMap.PivotGridControl, PredefinedMap.ChartControl, PredefinedMap.SchedulerControl, PredefinedMap.TreeList, }.Any(map => map == predefinedMap))
                {
                    listEditor =
                        (ListEditor)Activator.CreateInstance(controlTypes.Last(), view);
                }
                else if (new[] { PredefinedMap.DashboardDesigner, PredefinedMap.SplitContainerControl }.Any(map => map == predefinedMap))
                {
                    return(application.ListEditorMock().Object);
                }
                else
                {
                    listEditor = platform == Platform.Win
                        ? (ListEditor) new CustomGridListEditor(view, controlTypes.First(),
                                                                controlTypes.Skip(1).First(), repositoryItemTextEdit)
                        : new ASPxGridListEditor(view);
                }

                if (listEditor is IComplexListEditor complexListEditor)
                {
                    complexListEditor.Setup(collectionSource, application);
                }

                return(listEditor);
            });
        }
Esempio n. 5
0
 public static IEnumerable <Type> Modules(this PredefinedMap predefinedMap)
 {
     if (predefinedMap == PredefinedMap.DashboardViewer)
     {
         return(new[] { typeof(DashboardsModule), typeof(DashboardsWindowsFormsModule) });
     }
     return(Enumerable.Empty <Type>());
 }
        public void ExtendModel_Predefined_Type(PredefinedMap configuration, Type typeToMap, string platformName, string nodePath)
        {
            var platform = GetPlatform(platformName);

            Assembly.LoadFile(typeToMap.Assembly.Location);
            InitializeMapperService(platform);
            using var module      = configuration.Extend();
            using var application = DefaultModelMapperModule(platform, module).Application;
            AssertExtendedListViewModel(typeToMap, application, nodePath);
        }
        internal void ExtendModel_Predefined_Type(PredefinedMap configuration, Type typeToMap, Platform platform, string nodePath)
        {
            Assembly.LoadFile(typeToMap.Assembly.Location);
            InitializeMapperService($"{nameof(ExtendModel_Predefined_Type)}{configuration}{platform}", platform);

            var module      = configuration.Extend();
            var application = DefaultModelMapperModule(platform, module).Application;

            AssertExtendedListViewModel(typeToMap, application, nodePath);
        }
Esempio n. 8
0
 private static void AssertBandedGridColumn(PredefinedMap configuration, IList <PropertyInfo> propertyInfos)
 {
     if (configuration == PredefinedMap.BandedGridColumn)
     {
         var propertyInfo = propertyInfos.FirstOrDefault(info => info.Name == nameof(BandedGridColumn.ColVIndex));
         propertyInfo.ShouldNotBeNull();
         propertyInfo.Attribute <BrowsableAttribute>().ShouldBeNull();
         propertyInfo = propertyInfos.FirstOrDefault(info => info.Name == nameof(BandedGridColumn.RowIndex));
         propertyInfo.ShouldNotBeNull();
         propertyInfo.Attribute <BrowsableAttribute>().ShouldBeNull();
     }
 }
Esempio n. 9
0
 private void AssertSchedulerControl(PredefinedMap predefinedMap, IList <PropertyInfo> propertyInfos)
 {
     if (predefinedMap == PredefinedMap.SchedulerControl)
     {
         var storageInfo = propertyInfos.FirstOrDefault(info => nameof(SchedulerControl.Storage) == info.Name);
         storageInfo.ShouldNotBeNull();
         var propertyInfo = storageInfo.PropertyType.Property(nameof(SchedulerStorage.Appointments)).PropertyType.Property(nameof(AppointmentStorage.Labels));
         propertyInfo.ShouldNotBeNull();
         var menusPropertyInfo = propertyInfos.FirstOrDefault(info => info.Name == SchedulerControlService.PopupMenusMoelPropertyName);
         menusPropertyInfo.PropertyType.ModelListType().ShouldNotBeNull();
     }
 }
Esempio n. 10
0
        internal async Task Map_Predefined_Configurations(PredefinedMap predefinedMap, Type[] assembliesToLoad, Platform platform, string[] collectionNames)
        {
            InitializeMapperService($"{nameof(Map_Predefined_Configurations)}{predefinedMap}", platform);
            assembliesToLoad.ToObservable().Do(type => Assembly.LoadFile(type.Assembly.Location)).Subscribe();

            var modelType = await predefinedMap.MapToModel().ModelInterfaces().FirstAsync();

            var propertyInfos = modelType.GetProperties();

            AssertPredefinedConfigurationsMap(predefinedMap, collectionNames, modelType, propertyInfos);
            AssertBandedGridColumn(predefinedMap, propertyInfos);

            AssertSchedulerControl(predefinedMap, propertyInfos);
        }
Esempio n. 11
0
        private void AssertPredefinedConfigurationsMap(PredefinedMap predefinedMap, string[] collectionNames, Type modelType, PropertyInfo[] propertyInfos)
        {
            var modelTypeName = predefinedMap.ModelTypeName();

            modelType.Name.ShouldBe(modelTypeName);

            propertyInfos.Length.ShouldBeGreaterThan(15);
            if (new[] { PredefinedMap.ASPxLookupDropDownEdit, PredefinedMap.ASPxLookupFindEdit, }.All(map => map != predefinedMap))
            {
                var descriptionAttribute = propertyInfos.Select(info => info.Attribute <DescriptionAttribute>())
                                           .FirstOrDefault(attribute => attribute != null && attribute.Description.Contains(" "));
                descriptionAttribute.ShouldNotBeNull();
                foreach (var collectionName in collectionNames)
                {
                    propertyInfos.FirstOrDefault(info => info.Name == collectionName).ShouldNotBeNull();
                }
            }
        }
Esempio n. 12
0
        internal async Task Map_Predefined_ChartControl_Configurations(PredefinedMap configuration, Type[] assembliesToLoad, Platform platform, string[] collectionNames)
        {
            InitializeMapperService($"{nameof(Map_Predefined_ChartControl_Configurations)}{configuration}", platform);
            assembliesToLoad.ToObservable().Do(type => Assembly.LoadFile(type.Assembly.Location)).Subscribe();

            var modelType = await configuration.MapToModel().ModelInterfaces();

            var propertyInfos = modelType.GetProperties();

            AssertPredefinedConfigurationsMap(configuration, collectionNames, modelType, propertyInfos);
            if (configuration == PredefinedMap.ChartControl)
            {
                propertyInfos.FirstOrDefault(info => nameof(ChartControl.Diagram) == info.Name).ShouldBeNull();
                var propertyInfo = propertyInfos.FirstOrDefault(info => info.Name == $"{nameof(ChartControl.Diagram)}s");
                propertyInfo.ShouldNotBeNull();
                var type = modelType.Assembly.GetType(typeof(Diagram).ModelTypeName(typeof(ChartControl)));
                propertyInfo.PropertyType.GetInterfaces().ShouldContain(typeof(IModelList <>).MakeGenericType(type));
            }
        }
Esempio n. 13
0
        public void ExtendModel_PredefinedChartDiagram(PredefinedMap configuration, Type typeToMap, string platformName)
        {
            var platform = GetPlatform(platformName);

            InitializeMapperService($"{nameof(ExtendModel_PredefinedChartDiagram)}{configuration}{platform}", platform);

            using (var module = PredefinedMap.ChartControl.Extend()){
                configuration.Extend(module);
                using (var application = DefaultModelMapperModule(nameof(ExtendModel_PredefinedChartDiagram), platform, module).Application){
                    var modelListView = application.Model.Views.OfType <IModelListView>().First();
                    var modelNode     = modelListView.GetNode(PredefinedMap.ChartControl);
                    modelNode = modelNode.GetNode("Diagrams");

                    var diagramType = modelNode.ModelListItemType();
                    var targetType  = diagramType.Assembly.GetType(configuration.ModelTypeName());
                    diagramType.IsAssignableFrom(targetType).ShouldBeTrue();
                }
            }
        }
Esempio n. 14
0
 public static ModelMapperTestModule Extend(this PredefinedMap map, ModelMapperTestModule testModule = null, Action <ModelMapperConfiguration> configure = null)
 {
     testModule ??= new ModelMapperTestModule();
     return(new[] { map }.Extend(testModule, configure));
 }
Esempio n. 15
0
        public static Assembly Assembly(this PredefinedMap predefinedMap)
        {
            Assembly assembly = null;

            if (new[] {
                PredefinedMap.AdvBandedGridView, PredefinedMap.BandedGridColumn, PredefinedMap.GridView,
                PredefinedMap.GridColumn, PredefinedMap.LayoutView, PredefinedMap.LayoutViewColumn
            }.Contains(predefinedMap))
            {
                assembly = typeof(GridView).Assembly;
            }
            else if (new[] {
                PredefinedMap.RepositoryFieldPicker, PredefinedMap.RepositoryItemRtfEditEx,
                PredefinedMap.RepositoryItemLookupEdit, PredefinedMap.RepositoryItemObjectEdit,
                PredefinedMap.RepositoryItemPopupExpressionEdit, PredefinedMap.RepositoryItemPopupCriteriaEdit,
                PredefinedMap.RepositoryItemProtectedContentTextEdit
            }.Contains(predefinedMap) || predefinedMap == PredefinedMap.XafLayoutControl)
            {
                assembly = typeof(SystemWindowsFormsModule).Assembly;
            }
            else if (predefinedMap.IsRepositoryItem())
            {
                assembly = typeof(RepositoryItem).Assembly;
            }
            else if (predefinedMap == PredefinedMap.SplitContainerControl)
            {
                assembly = typeof(SplitContainerControl).Assembly;
            }
            else if (predefinedMap == PredefinedMap.RichEditControl)
            {
                assembly = typeof(RichEditControl).Assembly;
            }
            else if (predefinedMap == PredefinedMap.LabelControl)
            {
                assembly = typeof(LabelControl).Assembly;
            }
            else if (new[] {
                PredefinedMap.ASPxUploadControl, PredefinedMap.ASPxPopupControl, PredefinedMap.ASPxDateEdit,
                PredefinedMap.ASPxHyperLink, PredefinedMap.ASPxSpinEdit, PredefinedMap.ASPxTokenBox,
                PredefinedMap.ASPxComboBox
            }.Any(map => map == predefinedMap))
            {
                assembly = typeof(ASPxComboBox).Assembly;
            }
            else if (new[] { PredefinedMap.ASPxLookupDropDownEdit, PredefinedMap.ASPxLookupFindEdit }.Any(map =>
                                                                                                          map == predefinedMap))
            {
                assembly = typeof(ASPxLookupDropDownEdit).Assembly;
            }
            else if (new[] { PredefinedMap.DashboardDesigner, PredefinedMap.DashboardViewer }.Any(map =>
                                                                                                  map == predefinedMap))
            {
                assembly = typeof(DashboardDesigner).Assembly;
            }
            else if (new[] { PredefinedMap.ASPxDashboard }.Any(map => map == predefinedMap))
            {
                assembly = typeof(ASPxDashboard).Assembly;
            }
            else if (new[] { PredefinedMap.PivotGridControl, PredefinedMap.PivotGridField }.Contains(predefinedMap))
            {
                assembly = typeof(PivotGridControl).Assembly;
            }
            else if (predefinedMap == PredefinedMap.ChartControl || predefinedMap.IsChartControlDiagram())
            {
                assembly = typeof(ChartControl).Assembly;
            }
            else if (predefinedMap == PredefinedMap.SchedulerControl)
            {
                assembly = typeof(SchedulerControl).Assembly;
            }
            else if (predefinedMap == PredefinedMap.ASPxHtmlEditor)
            {
                assembly = typeof(ASPxHtmlEditor).Assembly;
            }
            else if (predefinedMap == PredefinedMap.ASPxScheduler)
            {
                assembly = typeof(ASPxScheduler).Assembly;
            }
            else if (new[] { PredefinedMap.TreeList, PredefinedMap.TreeListColumn }.Any(map => map == predefinedMap))
            {
                assembly = typeof(TreeList).Assembly;
            }
            if (assembly == null)
            {
                throw new NotImplementedException(predefinedMap.ToString());
            }
            return(assembly);
        }
Esempio n. 16
0
 public void Extend_Predefined_PropertyEditorControls(PredefinedMap predefinedMap)
 {
     InitializeMapperService($"{nameof(Extend_Predefined_PropertyEditorControls)}{predefinedMap}", predefinedMap.Platform());
     Extend_Predefined_ViewItem(predefinedMap, ViewItemService.PropertyEditorControlMapName);
 }
Esempio n. 17
0
 public void Extend_PredefinedRepositoryItems(PredefinedMap predefinedMap)
 {
     InitializeMapperService($"{nameof(Extend_PredefinedRepositoryItems)}{predefinedMap}", predefinedMap.Platform());
     Extend_Predefined_ViewItem(predefinedMap, ViewItemService.RepositoryItemsMapName, true);
 }