Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / FilterFactory.cs / 1305376 / FilterFactory.cs
using System.Diagnostics; using System.Globalization; using System.Web.Compilation; using System.Web.Hosting; namespace System.Web.DynamicData { public class FilterFactory { private const string s_defaultFiltersFolder = "Filters"; private const string s_booleanFilter = "Boolean"; private const string s_foreignKeyFilter = "ForeignKey"; private const string s_enumerationFilter = "Enumeration"; private TemplateFactory _templateFactory; public FilterFactory() { _templateFactory = new TemplateFactory(s_defaultFiltersFolder); } // for testing purposes internal FilterFactory(VirtualPathProvider vpp) : this() { _templateFactory.VirtualPathProvider = vpp; } internal string FilterFolderVirtualPath { get { return _templateFactory.TemplateFolderVirtualPath; } set { _templateFactory.TemplateFolderVirtualPath = value; } } internal void Initialize(MetaModel model) { Debug.Assert(model != null); _templateFactory.Model = model; } private string GetDefaultFilterControlName(MetaColumn column) { if (column is MetaForeignKeyColumn) { return s_foreignKeyFilter; } else if (column.ColumnType == typeof(bool)) { return s_booleanFilter; } else if (column.GetEnumType() != null) { return s_enumerationFilter; } else { throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, Resources.DynamicDataResources.FilterFactory_ColumnHasNoDefaultFilter, column.Name, column.Table.Name)); } } public virtual QueryableFilterUserControl CreateFilterControl(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterTemplatePath = GetFilterVirtualPathWithCaching(column, filterUIHint); Debug.Assert(filterTemplatePath != null); QueryableFilterUserControl filter = (QueryableFilterUserControl)BuildManager.CreateInstanceFromVirtualPath( filterTemplatePath, typeof(QueryableFilterUserControl)); return filter; } // internal for unit testing internal string GetFilterVirtualPathWithCaching(MetaColumn column, string filterUIHint) { Debug.Assert(column != null); long cacheKey = Misc.CombineHashCodes(column, filterUIHint); return _templateFactory.GetTemplatePath(cacheKey, delegate() { return GetFilterVirtualPath(column, filterUIHint); }); } public virtual string GetFilterVirtualPath(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterControlName = BuildFilterVirtualPath(column, filterUIHint); string filterTemplatePath = VirtualPathUtility.Combine(FilterFolderVirtualPath, filterControlName + ".ascx"); return filterTemplatePath; } private string BuildFilterVirtualPath(MetaColumn column, string filterUIHint) { string filterControlName = null; if (!String.IsNullOrEmpty(filterUIHint)) { filterControlName = filterUIHint; } else if (!String.IsNullOrEmpty(column.FilterUIHint)) { filterControlName = column.FilterUIHint; } filterControlName = filterControlName ?? GetDefaultFilterControlName(column); return filterControlName; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System.Diagnostics; using System.Globalization; using System.Web.Compilation; using System.Web.Hosting; namespace System.Web.DynamicData { public class FilterFactory { private const string s_defaultFiltersFolder = "Filters"; private const string s_booleanFilter = "Boolean"; private const string s_foreignKeyFilter = "ForeignKey"; private const string s_enumerationFilter = "Enumeration"; private TemplateFactory _templateFactory; public FilterFactory() { _templateFactory = new TemplateFactory(s_defaultFiltersFolder); } // for testing purposes internal FilterFactory(VirtualPathProvider vpp) : this() { _templateFactory.VirtualPathProvider = vpp; } internal string FilterFolderVirtualPath { get { return _templateFactory.TemplateFolderVirtualPath; } set { _templateFactory.TemplateFolderVirtualPath = value; } } internal void Initialize(MetaModel model) { Debug.Assert(model != null); _templateFactory.Model = model; } private string GetDefaultFilterControlName(MetaColumn column) { if (column is MetaForeignKeyColumn) { return s_foreignKeyFilter; } else if (column.ColumnType == typeof(bool)) { return s_booleanFilter; } else if (column.GetEnumType() != null) { return s_enumerationFilter; } else { throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, Resources.DynamicDataResources.FilterFactory_ColumnHasNoDefaultFilter, column.Name, column.Table.Name)); } } public virtual QueryableFilterUserControl CreateFilterControl(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterTemplatePath = GetFilterVirtualPathWithCaching(column, filterUIHint); Debug.Assert(filterTemplatePath != null); QueryableFilterUserControl filter = (QueryableFilterUserControl)BuildManager.CreateInstanceFromVirtualPath( filterTemplatePath, typeof(QueryableFilterUserControl)); return filter; } // internal for unit testing internal string GetFilterVirtualPathWithCaching(MetaColumn column, string filterUIHint) { Debug.Assert(column != null); long cacheKey = Misc.CombineHashCodes(column, filterUIHint); return _templateFactory.GetTemplatePath(cacheKey, delegate() { return GetFilterVirtualPath(column, filterUIHint); }); } public virtual string GetFilterVirtualPath(MetaColumn column, string filterUIHint) { if (column == null) { throw new ArgumentNullException("column"); } string filterControlName = BuildFilterVirtualPath(column, filterUIHint); string filterTemplatePath = VirtualPathUtility.Combine(FilterFolderVirtualPath, filterControlName + ".ascx"); return filterTemplatePath; } private string BuildFilterVirtualPath(MetaColumn column, string filterUIHint) { string filterControlName = null; if (!String.IsNullOrEmpty(filterUIHint)) { filterControlName = filterUIHint; } else if (!String.IsNullOrEmpty(column.FilterUIHint)) { filterControlName = column.FilterUIHint; } filterControlName = filterControlName ?? GetDefaultFilterControlName(column); return filterControlName; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeChecksumPragma.cs
- FastPropertyAccessor.cs
- MultiDataTrigger.cs
- InlineObject.cs
- ComPlusTypeValidator.cs
- ChtmlLinkAdapter.cs
- CuspData.cs
- XmlAttributes.cs
- ObjectListField.cs
- ToolboxControl.cs
- PersonalizationAdministration.cs
- ClientTargetSection.cs
- ExclusiveNamedPipeTransportManager.cs
- HtmlInputFile.cs
- DataControlField.cs
- XmlSchemaObjectTable.cs
- InstanceLockedException.cs
- SqlLiftIndependentRowExpressions.cs
- SchemaImporterExtensionsSection.cs
- ConfigXmlAttribute.cs
- DataServiceRequestException.cs
- XpsImageSerializationService.cs
- XsltException.cs
- CancellationToken.cs
- ErrorRuntimeConfig.cs
- SqlError.cs
- HeaderedContentControl.cs
- HtmlTitle.cs
- SocketAddress.cs
- Constants.cs
- TextDecorationLocationValidation.cs
- HttpVersion.cs
- UnknownBitmapDecoder.cs
- FullTrustAssemblyCollection.cs
- XamlPathDataSerializer.cs
- SqlGatherConsumedAliases.cs
- SiteMapPath.cs
- CqlErrorHelper.cs
- HandlerBase.cs
- HyperLink.cs
- AutomationElementCollection.cs
- ThicknessConverter.cs
- HandoffBehavior.cs
- TextElementAutomationPeer.cs
- DataKeyCollection.cs
- GeneralTransform3DGroup.cs
- DbProviderFactory.cs
- LocalServiceSecuritySettingsElement.cs
- ParallelDesigner.xaml.cs
- SettingsAttributes.cs
- DataGridViewDataConnection.cs
- XmlSecureResolver.cs
- ProviderConnectionPoint.cs
- EdmProviderManifest.cs
- ListMarkerLine.cs
- TextCompositionManager.cs
- ConnectivityStatus.cs
- InvalidPipelineStoreException.cs
- ZipIOCentralDirectoryBlock.cs
- AssemblyName.cs
- AttributeAction.cs
- QilFunction.cs
- SelfSignedCertificate.cs
- InternalDispatchObject.cs
- InvalidWMPVersionException.cs
- DataServiceProcessingPipeline.cs
- SplitContainer.cs
- ElementHostAutomationPeer.cs
- HandlerBase.cs
- DataRowView.cs
- _AutoWebProxyScriptWrapper.cs
- VectorCollectionConverter.cs
- ComplexType.cs
- MachineKeyConverter.cs
- Version.cs
- Vector3DAnimationUsingKeyFrames.cs
- Process.cs
- IisTraceWebEventProvider.cs
- _StreamFramer.cs
- LifetimeServices.cs
- XamlSerializerUtil.cs
- HwndAppCommandInputProvider.cs
- InvalidContentTypeException.cs
- TreeNodeBinding.cs
- Menu.cs
- Container.cs
- ResourceDescriptionAttribute.cs
- MessageEnumerator.cs
- DesignerActionItem.cs
- RadialGradientBrush.cs
- MenuItem.cs
- SmtpClient.cs
- APCustomTypeDescriptor.cs
- FixedSOMTableRow.cs
- _NestedSingleAsyncResult.cs
- EntityDesignerBuildProvider.cs
- UIPropertyMetadata.cs
- GlyphInfoList.cs
- VirtualizedItemPattern.cs
- TextRunProperties.cs