Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / PageThemeParser.cs / 2 / 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);
}
}
}
}
// 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
- SafeFindHandle.cs
- ClientRoleProvider.cs
- XPathExpr.cs
- RegisterResponseInfo.cs
- UnknownWrapper.cs
- Connector.cs
- SR.cs
- HttpTransportElement.cs
- InitializerFacet.cs
- MethodBody.cs
- _SSPISessionCache.cs
- TreeBuilder.cs
- GestureRecognizer.cs
- ProfileGroupSettingsCollection.cs
- CollectionExtensions.cs
- RequiredAttributeAttribute.cs
- ScaleTransform.cs
- ConfigXmlCDataSection.cs
- httpstaticobjectscollection.cs
- EncryptedKeyHashIdentifierClause.cs
- ExpressionEditorAttribute.cs
- SetterBase.cs
- Semaphore.cs
- RelatedImageListAttribute.cs
- DesignerTextWriter.cs
- StrokeIntersection.cs
- EventArgs.cs
- DecimalMinMaxAggregationOperator.cs
- RIPEMD160Managed.cs
- DataSvcMapFileSerializer.cs
- TreeViewHitTestInfo.cs
- ConnectionManagementSection.cs
- FilterEventArgs.cs
- odbcmetadatacolumnnames.cs
- OdbcConnectionFactory.cs
- ChannelManager.cs
- Visual3D.cs
- MappingMetadataHelper.cs
- RepeaterItem.cs
- FixedTextContainer.cs
- XmlMemberMapping.cs
- FormsAuthenticationModule.cs
- FontSizeConverter.cs
- DbConnectionPool.cs
- DataView.cs
- GraphicsContainer.cs
- MouseGestureValueSerializer.cs
- DBPropSet.cs
- DateTimeUtil.cs
- Trigger.cs
- SortedList.cs
- DataMember.cs
- ReadOnlyObservableCollection.cs
- EntityDataSourceContainerNameConverter.cs
- UnsafeNativeMethods.cs
- EffectiveValueEntry.cs
- UserNameServiceElement.cs
- _ContextAwareResult.cs
- WindowAutomationPeer.cs
- SQLInt32Storage.cs
- PtsCache.cs
- HeaderedContentControl.cs
- PersonalizationAdministration.cs
- CalendarDateRange.cs
- XmlSchemaAny.cs
- WebService.cs
- CancelAsyncOperationRequest.cs
- RelationshipConstraintValidator.cs
- RadioButtonPopupAdapter.cs
- XmlSerializer.cs
- SEHException.cs
- Menu.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- LabelAutomationPeer.cs
- ExpressionValueEditor.cs
- HotSpot.cs
- CompilerError.cs
- FormatConvertedBitmap.cs
- RunWorkerCompletedEventArgs.cs
- SqlDelegatedTransaction.cs
- CrossAppDomainChannel.cs
- EntityDataSourceContainerNameConverter.cs
- WebBrowser.cs
- XamlVector3DCollectionSerializer.cs
- EmissiveMaterial.cs
- ValueTypeFixupInfo.cs
- CollectionsUtil.cs
- SqlInternalConnectionSmi.cs
- XmlHelper.cs
- Timer.cs
- LayoutTableCell.cs
- PeerName.cs
- IPGlobalProperties.cs
- ComplexObject.cs
- DependsOnAttribute.cs
- AbstractSvcMapFileLoader.cs
- Pts.cs
- SemanticBasicElement.cs
- DataKeyArray.cs
- PathFigure.cs