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
- CSharpCodeProvider.cs
- StagingAreaInputItem.cs
- BehaviorEditorPart.cs
- SystemThemeKey.cs
- WaitingCursor.cs
- ZipIORawDataFileBlock.cs
- SqlBooleanMismatchVisitor.cs
- WindowsEditBoxRange.cs
- InstanceCreationEditor.cs
- Util.cs
- EntityDataSourceChangedEventArgs.cs
- OleDbException.cs
- WindowPatternIdentifiers.cs
- MDIClient.cs
- BaseTemplateBuildProvider.cs
- TreeViewItem.cs
- FileLogRecordEnumerator.cs
- FragmentNavigationEventArgs.cs
- HttpGetServerProtocol.cs
- ProviderConnectionPoint.cs
- WebConfigurationFileMap.cs
- FolderNameEditor.cs
- ObjectContext.cs
- WebReferencesBuildProvider.cs
- IntPtr.cs
- WizardSideBarListControlItemEventArgs.cs
- QueryGeneratorBase.cs
- StreamProxy.cs
- ValidatedMobileControlConverter.cs
- PrePrepareMethodAttribute.cs
- DelegateSerializationHolder.cs
- MailHeaderInfo.cs
- SerializationStore.cs
- ReferentialConstraint.cs
- UiaCoreTypesApi.cs
- ObjectView.cs
- DataSourceExpressionCollection.cs
- FormViewInsertedEventArgs.cs
- DataRecordObjectView.cs
- MsmqIntegrationProcessProtocolHandler.cs
- PostBackTrigger.cs
- Camera.cs
- SoapFormatterSinks.cs
- BitmapEffectState.cs
- UIAgentAsyncBeginRequest.cs
- MouseButtonEventArgs.cs
- NotifyInputEventArgs.cs
- RightsManagementPermission.cs
- DetailsViewDeletedEventArgs.cs
- DeploymentSectionCache.cs
- GraphicsContext.cs
- ObjectReaderCompiler.cs
- PeerServiceMessageContracts.cs
- TouchFrameEventArgs.cs
- MailAddress.cs
- SqlDesignerDataSourceView.cs
- TimeSpanOrInfiniteConverter.cs
- HttpChannelListener.cs
- XmlValueConverter.cs
- StreamingContext.cs
- MD5HashHelper.cs
- DynamicDataRouteHandler.cs
- Mapping.cs
- RegularExpressionValidator.cs
- NumberSubstitution.cs
- HttpCapabilitiesEvaluator.cs
- InternalConfigSettingsFactory.cs
- IntranetCredentialPolicy.cs
- RegexCharClass.cs
- SchemaCollectionPreprocessor.cs
- DBCommandBuilder.cs
- EntityDataSourceContainerNameItem.cs
- FirewallWrapper.cs
- BooleanConverter.cs
- KeyNotFoundException.cs
- ConfigurationErrorsException.cs
- AnnotationResourceCollection.cs
- DbParameterCollection.cs
- XPathConvert.cs
- EmbeddedMailObjectsCollection.cs
- DbParameterHelper.cs
- OrderedDictionary.cs
- LineUtil.cs
- ListViewDeleteEventArgs.cs
- DataGridCell.cs
- HttpListenerContext.cs
- SqlFacetAttribute.cs
- MatrixAnimationUsingPath.cs
- ComponentManagerBroker.cs
- AuthorizationSection.cs
- FormsAuthenticationEventArgs.cs
- MetaDataInfo.cs
- SmtpClient.cs
- DetailsViewDeletedEventArgs.cs
- CookieParameter.cs
- FactoryGenerator.cs
- ApplicationFileParser.cs
- SqlException.cs
- SafeNativeHandle.cs
- PartialTrustVisibleAssembliesSection.cs