Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / PageThemeParser.cs / 1 / PageThemeParser.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI { using System; using System.Collections; using System.Collections.Specialized; using System.Globalization; using System.IO; using System.Reflection; using System.Text; using System.Web.Compilation; using System.Web.Util; using System.Web.UI; internal class PageThemeParser : BaseTemplateParser { internal const string defaultDirectiveName = "skin"; private bool _mainDirectiveProcessed; private IList _skinFileList; private IList _cssFileList; private ControlBuilder _currentSkinBuilder; private VirtualPath _virtualDirPath; internal VirtualPath VirtualDirPath { get { return _virtualDirPath; } } internal PageThemeParser(VirtualPath virtualDirPath, IList skinFileList, IList cssFileList) { _virtualDirPath = virtualDirPath; _skinFileList = skinFileList; _cssFileList = cssFileList; } internal ICollection CssFileList { get { return _cssFileList; } } internal override Type DefaultBaseType { get { return typeof(PageTheme); } } internal override string DefaultDirectiveName { get { return defaultDirectiveName; } } /* code is not allowed in skin files */ internal override bool IsCodeAllowed { get { return false; } } // The current processing controlbuilder for the ITemplate in the skin file. internal ControlBuilder CurrentSkinBuilder { get { return _currentSkinBuilder; } set { _currentSkinBuilder = value; } } internal override RootBuilder CreateDefaultFileLevelBuilder() { return new FileLevelPageThemeBuilder(); } internal override void ParseInternal() { if (_skinFileList != null) { foreach(string virtualPath in _skinFileList) { ParseFile(null /*physicalPath*/, virtualPath); } } AddSourceDependency(_virtualDirPath); } internal override void ProcessDirective(string directiveName, IDictionary directive) { if (directiveName == null || directiveName.Length == 0 || StringUtil.EqualsIgnoreCase(directiveName, DefaultDirectiveName)) { // Make sure the main directive was not already specified if (_mainDirectiveProcessed) { ProcessError(SR.GetString(SR.Only_one_directive_allowed, DefaultDirectiveName)); return; } ProcessMainDirective(directive); _mainDirectiveProcessed = true; } else if (StringUtil.EqualsIgnoreCase(directiveName, "register")) { base.ProcessDirective(directiveName, directive); } else { ProcessError(SR.GetString(SR.Unknown_directive, directiveName)); return; } } internal override bool ProcessMainDirectiveAttribute(string deviceName, string name, string value, IDictionary parseData) { switch (name) { // Fail on the following unsupported attributes. Note that our base class // TemplateParser does support them, hence the special casing case "classname": case "compilationmode": case "inherits": ProcessError(SR.GetString(SR.Attr_not_supported_in_directive, name, DefaultDirectiveName)); return false; default: // We didn't handle the attribute. Try the base class return base.ProcessMainDirectiveAttribute(deviceName, name, value, parseData); } } } internal class DesignTimePageThemeParser : PageThemeParser { private string _themePhysicalPath; internal DesignTimePageThemeParser(string virtualDirPath) : base(null, null, null) { _themePhysicalPath = virtualDirPath; } internal string ThemePhysicalPath { get { return _themePhysicalPath; } } // Parse the designtime theme content here. internal override void ParseInternal() { if (Text != null) { ParseString(Text, CurrentVirtualPath, Encoding.UTF8); } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CodeGotoStatement.cs
- ReachPageContentSerializer.cs
- TriggerAction.cs
- ResourceManager.cs
- StaticDataManager.cs
- Highlights.cs
- path.cs
- AllowedAudienceUriElementCollection.cs
- EntityFunctions.cs
- MobileControlDesigner.cs
- SystemWebSectionGroup.cs
- _Events.cs
- URLMembershipCondition.cs
- X509AsymmetricSecurityKey.cs
- RectAnimationClockResource.cs
- WindowsRebar.cs
- ErrorHandler.cs
- User.cs
- QilLiteral.cs
- XmlBaseReader.cs
- RawStylusInputCustomData.cs
- ThreadInterruptedException.cs
- ActivityCompletionCallbackWrapper.cs
- TreeNodeBindingCollection.cs
- DataBindingsDialog.cs
- XmlNamedNodeMap.cs
- Selector.cs
- InfoCardBaseException.cs
- HierarchicalDataBoundControlAdapter.cs
- EnvironmentPermission.cs
- XPathAncestorQuery.cs
- ISFClipboardData.cs
- BuildProviderUtils.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- PathSegmentCollection.cs
- FakeModelPropertyImpl.cs
- CancelAsyncOperationRequest.cs
- JapaneseLunisolarCalendar.cs
- FilePrompt.cs
- StylusCaptureWithinProperty.cs
- LineMetrics.cs
- StringConcat.cs
- LambdaValue.cs
- ValidatorUtils.cs
- TemplateKey.cs
- XmlSchemaAttribute.cs
- IISUnsafeMethods.cs
- DateTimePicker.cs
- SimpleExpression.cs
- SimpleHandlerFactory.cs
- UInt16Converter.cs
- FieldMetadata.cs
- DataServiceQueryException.cs
- ReferenceEqualityComparer.cs
- RelationshipDetailsRow.cs
- SchemaElementLookUpTable.cs
- DeviceOverridableAttribute.cs
- AutomationTextAttribute.cs
- XmlLangPropertyAttribute.cs
- LinkLabel.cs
- Typeface.cs
- nulltextnavigator.cs
- StickyNoteContentControl.cs
- SharedUtils.cs
- SafeHandle.cs
- SourceFileBuildProvider.cs
- TreeBuilderXamlTranslator.cs
- VBCodeProvider.cs
- CachedPathData.cs
- Assert.cs
- MultiTrigger.cs
- XmlSchemaDatatype.cs
- PhysicalAddress.cs
- XPathScanner.cs
- VoiceObjectToken.cs
- RadioButton.cs
- TextOnlyOutput.cs
- DelegatingTypeDescriptionProvider.cs
- TextServicesDisplayAttribute.cs
- ToolStripRenderEventArgs.cs
- LateBoundBitmapDecoder.cs
- FontClient.cs
- TextBlock.cs
- XmlSerializerImportOptions.cs
- AutoResizedEvent.cs
- SerializationAttributes.cs
- HtmlFormParameterReader.cs
- ToolStripRenderer.cs
- StorageFunctionMapping.cs
- ItemsControl.cs
- StreamResourceInfo.cs
- ValidatingPropertiesEventArgs.cs
- SimpleTableProvider.cs
- RegexStringValidatorAttribute.cs
- SpecularMaterial.cs
- DataGridSortCommandEventArgs.cs
- BamlRecordHelper.cs
- DesignerActionListCollection.cs
- DesignerActionPanel.cs
- FusionWrap.cs