You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
150
mcs/class/referencesource/System.Web/UI/PageThemeParser.cs
Normal file
150
mcs/class/referencesource/System.Web/UI/PageThemeParser.cs
Normal file
@ -0,0 +1,150 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <copyright file="PageThemeParser.cs" company="Microsoft">
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// </copyright>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user