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
- BatchWriter.cs
- ServiceModelConfigurationSectionGroup.cs
- HttpAsyncResult.cs
- DeferredSelectedIndexReference.cs
- filewebrequest.cs
- APCustomTypeDescriptor.cs
- BitmapEffectGroup.cs
- CustomErrorCollection.cs
- WindowsListViewItemCheckBox.cs
- ComponentResourceKey.cs
- SmtpTransport.cs
- ObjectSpanRewriter.cs
- ControlBuilderAttribute.cs
- PerformanceCounterManager.cs
- TdsParserSafeHandles.cs
- SrgsGrammarCompiler.cs
- TableStyle.cs
- DataObject.cs
- SortedList.cs
- ElapsedEventArgs.cs
- Drawing.cs
- DragDrop.cs
- ReplacementText.cs
- StringOutput.cs
- CollectionTypeElement.cs
- TextCompositionManager.cs
- ScriptBehaviorDescriptor.cs
- ScriptControl.cs
- FontCollection.cs
- NCryptNative.cs
- PathFigureCollection.cs
- TripleDES.cs
- MultiBindingExpression.cs
- RIPEMD160.cs
- HttpFileCollection.cs
- AttributeCollection.cs
- XmlQueryCardinality.cs
- ResourceDescriptionAttribute.cs
- FrameworkElement.cs
- ReadOnlyPropertyMetadata.cs
- ConfigurationSection.cs
- OrthographicCamera.cs
- BidOverLoads.cs
- QuadraticBezierSegment.cs
- TableHeaderCell.cs
- RightsManagementPermission.cs
- MultiAsyncResult.cs
- ServiceHostingEnvironment.cs
- CipherData.cs
- DataGridViewTopRowAccessibleObject.cs
- DocumentSequence.cs
- SqlWebEventProvider.cs
- DictionaryManager.cs
- DataView.cs
- counter.cs
- SelectionProviderWrapper.cs
- MetadataPropertyAttribute.cs
- NumericUpDownAcceleration.cs
- ZipIOExtraField.cs
- AsymmetricKeyExchangeFormatter.cs
- WindowsIdentity.cs
- IisNotInstalledException.cs
- CreateInstanceBinder.cs
- TypeContext.cs
- BufferedConnection.cs
- AddressingProperty.cs
- IteratorDescriptor.cs
- FixedPage.cs
- XmlSchemaComplexContentRestriction.cs
- LogAppendAsyncResult.cs
- CapabilitiesState.cs
- Matrix3D.cs
- ExtendedProperty.cs
- AutomationInteropProvider.cs
- Calendar.cs
- PeerNameRegistration.cs
- PerspectiveCamera.cs
- COMException.cs
- MaterializeFromAtom.cs
- cookie.cs
- Rfc2898DeriveBytes.cs
- EntityWrapperFactory.cs
- TraceFilter.cs
- GroupBoxRenderer.cs
- CounterSampleCalculator.cs
- FontFaceLayoutInfo.cs
- ChannelServices.cs
- SourceElementsCollection.cs
- TextEditorParagraphs.cs
- ProfileService.cs
- KeysConverter.cs
- AccessorTable.cs
- DataServiceContext.cs
- WebControlsSection.cs
- RevocationPoint.cs
- MediaElement.cs
- ZipIOCentralDirectoryFileHeader.cs
- ImageIndexConverter.cs
- RuntimeIdentifierPropertyAttribute.cs
- ItemDragEvent.cs