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
- NativeMethods.cs
- ColorTranslator.cs
- RecommendedAsConfigurableAttribute.cs
- AttachedAnnotation.cs
- Attributes.cs
- GeometryModel3D.cs
- RecordConverter.cs
- ValidationError.cs
- StrokeNodeEnumerator.cs
- Control.cs
- ReadOnlyCollection.cs
- ExtensionQuery.cs
- BitmapVisualManager.cs
- LinearKeyFrames.cs
- QEncodedStream.cs
- WindowsGraphicsWrapper.cs
- XmlSchemaComplexContentExtension.cs
- DoubleLinkList.cs
- NonceToken.cs
- ToolStripHighContrastRenderer.cs
- OdbcReferenceCollection.cs
- ComAdminWrapper.cs
- EncryptedPackage.cs
- MaskedTextBox.cs
- RegexCapture.cs
- _HelperAsyncResults.cs
- GeometryGroup.cs
- TypeExtensionConverter.cs
- SqlCacheDependencyDatabaseCollection.cs
- DockPattern.cs
- ListItemParagraph.cs
- SqlCharStream.cs
- ToolBarOverflowPanel.cs
- NameNode.cs
- ReflectionTypeLoadException.cs
- SafeArrayTypeMismatchException.cs
- SmtpNegotiateAuthenticationModule.cs
- DataGridViewColumnStateChangedEventArgs.cs
- BindingListCollectionView.cs
- ToolStripContentPanel.cs
- UIInitializationException.cs
- InstalledVoice.cs
- Path.cs
- PrintPreviewGraphics.cs
- SelfIssuedAuthProofToken.cs
- CacheChildrenQuery.cs
- Visual3D.cs
- ipaddressinformationcollection.cs
- Attributes.cs
- TextOnlyOutput.cs
- ISCIIEncoding.cs
- Errors.cs
- SizeIndependentAnimationStorage.cs
- ManipulationPivot.cs
- httpapplicationstate.cs
- ObjRef.cs
- DNS.cs
- SoapAttributes.cs
- Viewport3DAutomationPeer.cs
- CommandLibraryHelper.cs
- TextChange.cs
- ProfilePropertyMetadata.cs
- FlowDocument.cs
- HttpResponseBase.cs
- GenericTextProperties.cs
- XmlEventCache.cs
- SafeEventLogWriteHandle.cs
- RunInstallerAttribute.cs
- NotFiniteNumberException.cs
- Lock.cs
- SplashScreenNativeMethods.cs
- EntityDataSourceChangingEventArgs.cs
- EnumUnknown.cs
- UnsafeNativeMethods.cs
- DropShadowBitmapEffect.cs
- FormattedText.cs
- HttpCacheVaryByContentEncodings.cs
- COM2PropertyDescriptor.cs
- RegexBoyerMoore.cs
- CookieParameter.cs
- CodeAttachEventStatement.cs
- XmlBufferedByteStreamReader.cs
- If.cs
- ToolStripTextBox.cs
- ToolStripItemRenderEventArgs.cs
- PingReply.cs
- Compiler.cs
- XmlElementElement.cs
- ButtonBaseDesigner.cs
- AxDesigner.cs
- SqlWriter.cs
- BitmapEncoder.cs
- XmlReaderSettings.cs
- GradientStop.cs
- MarshalByRefObject.cs
- ConnectionProviderAttribute.cs
- TcpDuplicateContext.cs
- AnnotationObservableCollection.cs
- WorkflowMarkupElementEventArgs.cs
- EntityProviderFactory.cs