Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / UI / DesignTimeTemplateParser.cs / 1 / DesignTimeTemplateParser.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Configuration; using System.IO; using System.Globalization; using System.Security.Permissions; using System.Text; using System.Web; using System.Web.Util; using System.Web.Configuration; ///[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] public static class DesignTimeTemplateParser { public static Control ParseControl(DesignTimeParseData data) { Control[] parsedControls = ParseControlsInternal(data, true); if (parsedControls.Length > 0) { return parsedControls[0]; } return null; } public static Control[] ParseControls(DesignTimeParseData data) { return ParseControlsInternal(data, false); } /// /// Convenience method for parsing one or more controls /// // DesignTimeTemplateParser is only meant for use within the designer [SecurityPermission(SecurityAction.Demand, Unrestricted = true)] internal static Control[] ParseControlsInternal(DesignTimeParseData data, bool returnFirst) { TemplateParser parser = new PageParser(); parser.FInDesigner = true; parser.DesignerHost = data.DesignerHost; parser.DesignTimeDataBindHandler = data.DataBindingHandler; parser.Text = data.ParseText; parser.Parse(); ArrayList parsedControls = new ArrayList(); ArrayList subBuilders = parser.RootBuilder.SubBuilders; if (subBuilders != null) { // Look for the first control builder IEnumerator en = subBuilders.GetEnumerator(); for (int i = 0; en.MoveNext(); i++) { object cur = en.Current; if ((cur is ControlBuilder) && !(cur is CodeBlockBuilder)) { // Instantiate the control ControlBuilder controlBuilder = (ControlBuilder)cur; System.Diagnostics.Debug.Assert(controlBuilder.CurrentFilterResolutionService == null); IServiceProvider builderServiceProvider = null; // If there's a designer host, use it as the service provider if (data.DesignerHost != null) { builderServiceProvider = data.DesignerHost; } // If it doesn't exist, use a default filter resolution service else { ServiceContainer serviceContainer = new ServiceContainer(); serviceContainer.AddService(typeof(IFilterResolutionService), new SimpleDesignTimeFilterResolutionService(data.Filter)); builderServiceProvider = serviceContainer; } controlBuilder.SetServiceProvider(builderServiceProvider); try { Control control = (Control)controlBuilder.BuildObject(data.ShouldApplyTheme); parsedControls.Add(control); } finally { controlBuilder.SetServiceProvider(null); } if (returnFirst) { break; } } // To preserve backwards compatibility, we don't add LiteralControls // to the control collection when parsing for a single control else if (!returnFirst && (cur is string)) { LiteralControl literalControl = new LiteralControl(cur.ToString()); parsedControls.Add(literalControl); } } } data.SetUserControlRegisterEntries(parser.UserControlRegisterEntries, parser.TagRegisterEntries); return (Control[])parsedControls.ToArray(typeof(Control)); } // DesignTimeTemplateParser is only meant for use within the designer [SecurityPermission(SecurityAction.Demand, Unrestricted = true)] public static ITemplate ParseTemplate(DesignTimeParseData data) { TemplateParser parser = new PageParser(); parser.FInDesigner = true; parser.DesignerHost = data.DesignerHost; parser.DesignTimeDataBindHandler = data.DataBindingHandler; parser.Text = data.ParseText; parser.Parse(); // Set the Text property of the TemplateBuilder to the input text parser.RootBuilder.Text = data.ParseText; parser.RootBuilder.SetDesignerHost(data.DesignerHost); return parser.RootBuilder; } public static ControlBuilder ParseTheme(IDesignerHost host, string theme, string themePath) { try { TemplateParser parser = new DesignTimePageThemeParser(themePath); parser.FInDesigner = true; parser.DesignerHost = host; parser.ThrowOnFirstParseError = true; parser.Text = theme; parser.Parse(); return parser.RootBuilder; } catch (Exception e) { throw new Exception(SR.GetString(SR.DesignTimeTemplateParser_ErrorParsingTheme) + " " + e.Message); } } // Implementation of IDeviceFilterTester used at design time private class SimpleDesignTimeFilterResolutionService : IFilterResolutionService { private string _currentFilter; public SimpleDesignTimeFilterResolutionService(string filter) { _currentFilter = filter; } #if ORCAS string IFilterResolutionService.CurrentFilter { get { if (_currentFilter == null) { return String.Empty; } return _currentFilter; } } #endif bool IFilterResolutionService.EvaluateFilter(string filterName) { if (String.IsNullOrEmpty(filterName)) { return true; } if (StringUtil.EqualsIgnoreCase(((_currentFilter == null) ? String.Empty : _currentFilter), filterName)) { return true; } return false; } int IFilterResolutionService.CompareFilters(string filter1, string filter2) { if (String.IsNullOrEmpty(filter1)) { if (!String.IsNullOrEmpty(filter2)) { return 1; } return 0; } if (String.IsNullOrEmpty(filter2)) { return -1; } return 0; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Configuration; using System.IO; using System.Globalization; using System.Security.Permissions; using System.Text; using System.Web; using System.Web.Util; using System.Web.Configuration; ///[AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)] public static class DesignTimeTemplateParser { public static Control ParseControl(DesignTimeParseData data) { Control[] parsedControls = ParseControlsInternal(data, true); if (parsedControls.Length > 0) { return parsedControls[0]; } return null; } public static Control[] ParseControls(DesignTimeParseData data) { return ParseControlsInternal(data, false); } /// /// Convenience method for parsing one or more controls /// // DesignTimeTemplateParser is only meant for use within the designer [SecurityPermission(SecurityAction.Demand, Unrestricted = true)] internal static Control[] ParseControlsInternal(DesignTimeParseData data, bool returnFirst) { TemplateParser parser = new PageParser(); parser.FInDesigner = true; parser.DesignerHost = data.DesignerHost; parser.DesignTimeDataBindHandler = data.DataBindingHandler; parser.Text = data.ParseText; parser.Parse(); ArrayList parsedControls = new ArrayList(); ArrayList subBuilders = parser.RootBuilder.SubBuilders; if (subBuilders != null) { // Look for the first control builder IEnumerator en = subBuilders.GetEnumerator(); for (int i = 0; en.MoveNext(); i++) { object cur = en.Current; if ((cur is ControlBuilder) && !(cur is CodeBlockBuilder)) { // Instantiate the control ControlBuilder controlBuilder = (ControlBuilder)cur; System.Diagnostics.Debug.Assert(controlBuilder.CurrentFilterResolutionService == null); IServiceProvider builderServiceProvider = null; // If there's a designer host, use it as the service provider if (data.DesignerHost != null) { builderServiceProvider = data.DesignerHost; } // If it doesn't exist, use a default filter resolution service else { ServiceContainer serviceContainer = new ServiceContainer(); serviceContainer.AddService(typeof(IFilterResolutionService), new SimpleDesignTimeFilterResolutionService(data.Filter)); builderServiceProvider = serviceContainer; } controlBuilder.SetServiceProvider(builderServiceProvider); try { Control control = (Control)controlBuilder.BuildObject(data.ShouldApplyTheme); parsedControls.Add(control); } finally { controlBuilder.SetServiceProvider(null); } if (returnFirst) { break; } } // To preserve backwards compatibility, we don't add LiteralControls // to the control collection when parsing for a single control else if (!returnFirst && (cur is string)) { LiteralControl literalControl = new LiteralControl(cur.ToString()); parsedControls.Add(literalControl); } } } data.SetUserControlRegisterEntries(parser.UserControlRegisterEntries, parser.TagRegisterEntries); return (Control[])parsedControls.ToArray(typeof(Control)); } // DesignTimeTemplateParser is only meant for use within the designer [SecurityPermission(SecurityAction.Demand, Unrestricted = true)] public static ITemplate ParseTemplate(DesignTimeParseData data) { TemplateParser parser = new PageParser(); parser.FInDesigner = true; parser.DesignerHost = data.DesignerHost; parser.DesignTimeDataBindHandler = data.DataBindingHandler; parser.Text = data.ParseText; parser.Parse(); // Set the Text property of the TemplateBuilder to the input text parser.RootBuilder.Text = data.ParseText; parser.RootBuilder.SetDesignerHost(data.DesignerHost); return parser.RootBuilder; } public static ControlBuilder ParseTheme(IDesignerHost host, string theme, string themePath) { try { TemplateParser parser = new DesignTimePageThemeParser(themePath); parser.FInDesigner = true; parser.DesignerHost = host; parser.ThrowOnFirstParseError = true; parser.Text = theme; parser.Parse(); return parser.RootBuilder; } catch (Exception e) { throw new Exception(SR.GetString(SR.DesignTimeTemplateParser_ErrorParsingTheme) + " " + e.Message); } } // Implementation of IDeviceFilterTester used at design time private class SimpleDesignTimeFilterResolutionService : IFilterResolutionService { private string _currentFilter; public SimpleDesignTimeFilterResolutionService(string filter) { _currentFilter = filter; } #if ORCAS string IFilterResolutionService.CurrentFilter { get { if (_currentFilter == null) { return String.Empty; } return _currentFilter; } } #endif bool IFilterResolutionService.EvaluateFilter(string filterName) { if (String.IsNullOrEmpty(filterName)) { return true; } if (StringUtil.EqualsIgnoreCase(((_currentFilter == null) ? String.Empty : _currentFilter), filterName)) { return true; } return false; } int IFilterResolutionService.CompareFilters(string filter1, string filter2) { if (String.IsNullOrEmpty(filter1)) { if (!String.IsNullOrEmpty(filter2)) { return 1; } return 0; } if (String.IsNullOrEmpty(filter2)) { return -1; } return 0; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataObjectFieldAttribute.cs
- FormViewModeEventArgs.cs
- WindowsGraphicsWrapper.cs
- PathSegmentCollection.cs
- DefaultBinder.cs
- MarshalByValueComponent.cs
- ConfigurationPermission.cs
- _ProxyChain.cs
- ServiceDebugBehavior.cs
- RuleRefElement.cs
- WindowsIPAddress.cs
- srgsitem.cs
- SystemUnicastIPAddressInformation.cs
- UrlPath.cs
- XPathScanner.cs
- TransformProviderWrapper.cs
- ContentPlaceHolderDesigner.cs
- AutomationEventArgs.cs
- Evidence.cs
- SafeRightsManagementPubHandle.cs
- SqlBulkCopyColumnMappingCollection.cs
- HtmlHead.cs
- _BaseOverlappedAsyncResult.cs
- DataObjectPastingEventArgs.cs
- LicenseManager.cs
- FaultPropagationQuery.cs
- CookieHandler.cs
- DayRenderEvent.cs
- ResourceExpressionEditor.cs
- InstanceView.cs
- RemotingSurrogateSelector.cs
- ToolStripLabel.cs
- NetMsmqBindingElement.cs
- TcpClientChannel.cs
- WindowsToolbarAsMenu.cs
- HandledMouseEvent.cs
- XmlNodeReader.cs
- Substitution.cs
- ProxyManager.cs
- ListParaClient.cs
- RtfFormatStack.cs
- SimpleFileLog.cs
- TimeSpanSecondsConverter.cs
- VectorValueSerializer.cs
- DataViewListener.cs
- ImageBrush.cs
- TypeInitializationException.cs
- Substitution.cs
- DependencyObject.cs
- HtmlUtf8RawTextWriter.cs
- DataTransferEventArgs.cs
- designeractionlistschangedeventargs.cs
- ImageEditor.cs
- ThreadStateException.cs
- CompilationUtil.cs
- Stackframe.cs
- TransactionCache.cs
- GeneratedCodeAttribute.cs
- StringFreezingAttribute.cs
- MemberCollection.cs
- Command.cs
- ColumnHeader.cs
- nulltextnavigator.cs
- Scripts.cs
- GC.cs
- UrlRoutingHandler.cs
- MatcherBuilder.cs
- sqlstateclientmanager.cs
- SecurityRuntime.cs
- StaticTextPointer.cs
- ResourceDisplayNameAttribute.cs
- PartBasedPackageProperties.cs
- SizeKeyFrameCollection.cs
- ClientConfigurationHost.cs
- RemoteWebConfigurationHost.cs
- LambdaCompiler.Binary.cs
- PictureBoxDesigner.cs
- DecoderExceptionFallback.cs
- UnhandledExceptionEventArgs.cs
- BaseTemplateParser.cs
- XmlUtil.cs
- WpfGeneratedKnownProperties.cs
- Cell.cs
- DebuggerAttributes.cs
- DocumentApplicationJournalEntry.cs
- ReverseInheritProperty.cs
- TextCompositionManager.cs
- Menu.cs
- EntityModelSchemaGenerator.cs
- TextParagraph.cs
- RelationshipType.cs
- ObjRef.cs
- Filter.cs
- WebBrowsableAttribute.cs
- TextDecorationCollectionConverter.cs
- EventDescriptorCollection.cs
- ClientSettings.cs
- StorageMappingFragment.cs
- WindowsSolidBrush.cs
- XmlElementList.cs