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
- TailPinnedEventArgs.cs
- StringFunctions.cs
- HebrewNumber.cs
- CompoundFileIOPermission.cs
- XhtmlBasicFormAdapter.cs
- HttpStreamMessage.cs
- SafeFileMappingHandle.cs
- MetadataArtifactLoaderComposite.cs
- TriggerActionCollection.cs
- UrlPropertyAttribute.cs
- TraceData.cs
- EntryPointNotFoundException.cs
- RelationHandler.cs
- SqlTrackingService.cs
- TabControlEvent.cs
- MethodSignatureGenerator.cs
- DbConnectionHelper.cs
- SimpleWebHandlerParser.cs
- CqlLexerHelpers.cs
- WebEventTraceProvider.cs
- PropertyGeneratedEventArgs.cs
- ByteFacetDescriptionElement.cs
- TextElementEnumerator.cs
- IndexOutOfRangeException.cs
- DocumentPageViewAutomationPeer.cs
- VerticalAlignConverter.cs
- ThumbButtonInfoCollection.cs
- JapaneseCalendar.cs
- WorkflowInstanceExtensionManager.cs
- DurableInstanceProvider.cs
- UnsafeNativeMethods.cs
- OutOfProcStateClientManager.cs
- Triangle.cs
- SqlPersonalizationProvider.cs
- FocusManager.cs
- Properties.cs
- odbcmetadatacolumnnames.cs
- PluralizationService.cs
- sitestring.cs
- AspNetSynchronizationContext.cs
- NavigatorInput.cs
- QilUnary.cs
- QuaternionAnimationBase.cs
- StringOutput.cs
- ValidatingReaderNodeData.cs
- OutputScopeManager.cs
- SystemParameters.cs
- SimpleApplicationHost.cs
- ConstraintManager.cs
- UserPreferenceChangedEventArgs.cs
- ProxyManager.cs
- DataSourceSelectArguments.cs
- XamlSerializerUtil.cs
- ScriptHandlerFactory.cs
- Wizard.cs
- ContentTextAutomationPeer.cs
- MetadataSerializer.cs
- TimeoutTimer.cs
- BulletedListEventArgs.cs
- PackageFilter.cs
- SelectionRange.cs
- ContractInstanceProvider.cs
- PaperSize.cs
- UDPClient.cs
- ApplicationCommands.cs
- SiteMap.cs
- Pair.cs
- ListenerAdapterBase.cs
- GraphicsState.cs
- Accessible.cs
- EndGetFileNameFromUserRequest.cs
- ToolStripDropTargetManager.cs
- RecoverInstanceLocksCommand.cs
- RectangleF.cs
- PrintDialog.cs
- TextTreeDeleteContentUndoUnit.cs
- Control.cs
- CanonicalXml.cs
- SpAudioStreamWrapper.cs
- ActivityCodeGenerator.cs
- keycontainerpermission.cs
- WebPartTransformer.cs
- PixelShader.cs
- StorageTypeMapping.cs
- ServiceMemoryGates.cs
- MetadataPropertyvalue.cs
- OutOfProcStateClientManager.cs
- ParentControlDesigner.cs
- RelatedImageListAttribute.cs
- CacheMemory.cs
- NotifyParentPropertyAttribute.cs
- AssemblyBuilderData.cs
- TextureBrush.cs
- ClientSideProviderDescription.cs
- DelegateSerializationHolder.cs
- SingleSelectRootGridEntry.cs
- Transform.cs
- PersonalizationDictionary.cs
- Lookup.cs
- Exception.cs