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); } }
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(); } } }
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); }); }
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); }
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(); } }
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(); } }
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); }
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(); } } }
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)); } }
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(); } } }
public static ModelMapperTestModule Extend(this PredefinedMap map, ModelMapperTestModule testModule = null, Action <ModelMapperConfiguration> configure = null) { testModule ??= new ModelMapperTestModule(); return(new[] { map }.Extend(testModule, configure)); }
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); }
public void Extend_Predefined_PropertyEditorControls(PredefinedMap predefinedMap) { InitializeMapperService($"{nameof(Extend_Predefined_PropertyEditorControls)}{predefinedMap}", predefinedMap.Platform()); Extend_Predefined_ViewItem(predefinedMap, ViewItemService.PropertyEditorControlMapName); }
public void Extend_PredefinedRepositoryItems(PredefinedMap predefinedMap) { InitializeMapperService($"{nameof(Extend_PredefinedRepositoryItems)}{predefinedMap}", predefinedMap.Platform()); Extend_Predefined_ViewItem(predefinedMap, ViewItemService.RepositoryItemsMapName, true); }