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
- WmiEventSink.cs
- ChtmlTextWriter.cs
- TextPatternIdentifiers.cs
- CodeLabeledStatement.cs
- LostFocusEventManager.cs
- SettingsContext.cs
- FastEncoderWindow.cs
- BitmapEffectInputConnector.cs
- CoreSwitches.cs
- Message.cs
- PropertyStore.cs
- PropertyGridEditorPart.cs
- RotateTransform3D.cs
- UserInitiatedNavigationPermission.cs
- PersonalizationProviderCollection.cs
- UnhandledExceptionEventArgs.cs
- FillRuleValidation.cs
- XmlCharCheckingReader.cs
- DataGridColumn.cs
- PackageRelationship.cs
- InputProcessorProfiles.cs
- TextEffect.cs
- Matrix3DStack.cs
- Point.cs
- QuotedStringWriteStateInfo.cs
- DetailsViewInsertedEventArgs.cs
- XmlSchemaSimpleTypeList.cs
- SystemNetHelpers.cs
- MailAddress.cs
- CodeRegionDirective.cs
- COM2ColorConverter.cs
- TraceListeners.cs
- OdbcConnectionHandle.cs
- CloseSequenceResponse.cs
- PolicyStatement.cs
- ContactManager.cs
- GlobalEventManager.cs
- DirectionalLight.cs
- Serializer.cs
- ProcessRequestArgs.cs
- Calendar.cs
- ContainsRowNumberChecker.cs
- SymmetricKey.cs
- SQLMoneyStorage.cs
- FieldMetadata.cs
- WebPartTracker.cs
- CommentAction.cs
- HtmlMeta.cs
- BitmapSizeOptions.cs
- exports.cs
- HyperLinkColumn.cs
- HMACSHA1.cs
- ApplicationHost.cs
- DataRecord.cs
- BamlTreeMap.cs
- SerializationHelper.cs
- COM2PropertyDescriptor.cs
- _SecureChannel.cs
- DataExpression.cs
- TextSelectionProcessor.cs
- NativeBuffer.cs
- ParameterExpression.cs
- HttpServerVarsCollection.cs
- XPathMessageFilterElementComparer.cs
- RelatedEnd.cs
- HttpVersion.cs
- SafeArrayTypeMismatchException.cs
- DragDrop.cs
- Light.cs
- TargetControlTypeAttribute.cs
- LineSegment.cs
- BasicHttpMessageSecurityElement.cs
- ComNativeDescriptor.cs
- indexingfiltermarshaler.cs
- AdPostCacheSubstitution.cs
- EventWaitHandle.cs
- Int64AnimationBase.cs
- LicenseException.cs
- SingleObjectCollection.cs
- FlowPanelDesigner.cs
- ThreadStartException.cs
- odbcmetadatacolumnnames.cs
- Point3DAnimationUsingKeyFrames.cs
- filewebresponse.cs
- DescendantBaseQuery.cs
- ValidationErrorCollection.cs
- PerfService.cs
- DbConnectionStringBuilder.cs
- HttpModulesSection.cs
- CodeDomDesignerLoader.cs
- SelectionChangedEventArgs.cs
- BitmapCacheBrush.cs
- ConfigurationConverterBase.cs
- StatusStrip.cs
- DiscoveryReferences.cs
- Overlapped.cs
- TraceData.cs
- XsltLoader.cs
- HashHelper.cs
- IntAverageAggregationOperator.cs