ScriptReferenceBase.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Extensions / UI / ScriptReferenceBase.cs / 1305376 / ScriptReferenceBase.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Web.UI { 
    using System; 
    using System.ComponentModel;
    using System.Diagnostics.CodeAnalysis; 
    using System.Globalization;
    using System.Web;
    using System.Web.Resources;
    using System.Web.UI.WebControls; 
    using Debug = System.Diagnostics.Debug;
 
    [ 
    DefaultProperty("Path"),
    ] 
    public abstract class ScriptReferenceBase {
        private bool _alwaysLoadBeforeUI;
        private IClientUrlResolver _clientUrlResolver;
        private Control _containingControl; 
        private bool _isStaticReference;
        private bool _notifyScriptLoaded = true; 
        private string _path; 
        private string[] _resourceUICultures;
        private ScriptMode _scriptMode; 

        protected ScriptReferenceBase() {}

        internal bool AlwaysLoadBeforeUI { 
            get {
                return _alwaysLoadBeforeUI; 
            } 
            set {
                _alwaysLoadBeforeUI = value; 
            }
        }

        // Used by ScriptManager to associate a ScriptReference with its url resolver 
        // (i.e. ScriptManager or ScriptManagerProxy)
        internal IClientUrlResolver ClientUrlResolver { 
            get { 
                return _clientUrlResolver;
            } 
            set {
                _clientUrlResolver = value;
            }
        } 

        internal Control ContainingControl { 
            get { 
                return _containingControl;
            } 
            set {
                _containingControl = value;
            }
        } 

        // isStaticReference is true if the reference came from a ScriptManager or ScriptManagerProxy scripts collection, 
        // false if it came from an IScriptControl or ExtenderControl. 
        internal bool IsStaticReference {
            get { 
                return _isStaticReference;
            }
            set {
                _isStaticReference = value; 
            }
        } 
 
        [
        Category("Behavior"), 
        DefaultValue(true),
        NotifyParentProperty(true),
        ResourceDescription("ScriptReference_NotifyScriptLoaded"),
        Obsolete("NotifyScriptLoaded is no longer required in script references.") 
        ]
        public bool NotifyScriptLoaded { 
            get { 
                return _notifyScriptLoaded;
            } 
            set {
                _notifyScriptLoaded = value;
            }
        } 

        [ 
        Category("Behavior"), 
        DefaultValue(""),
        NotifyParentProperty(true), 
        ResourceDescription("ScriptReference_Path"),
        UrlProperty("*.js")
        ]
        public string Path { 
            get {
                return (_path == null) ? String.Empty : _path; 
            } 
            set {
                _path = value; 
            }
        }

        [ 
        ResourceDescription("ScriptReference_ResourceUICultures"),
        DefaultValue(null), 
        Category("Behavior"), 
        MergableProperty(false),
        NotifyParentProperty(true), 
        TypeConverter(typeof(StringArrayConverter)),
        SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays",
            Justification = "String[] has existing TypeConverter support, which we don't want to add for List to the assembly just for this property and at this point in the product cycle.")
        ] 
        public string[] ResourceUICultures {
            get { 
                return _resourceUICultures; 
            }
            set { 
                _resourceUICultures = value;
            }
        }
 
        [
        Category("Behavior"), 
        DefaultValue(ScriptMode.Auto), 
        NotifyParentProperty(true),
        ResourceDescription("ScriptReference_ScriptMode") 
        ]
        public ScriptMode ScriptMode {
            get {
                return _scriptMode; 
            }
            set { 
                if (value < ScriptMode.Auto || value > ScriptMode.Release) { 
                    throw new ArgumentOutOfRangeException("value");
                } 
                _scriptMode = value;
            }
        }
 
        [Obsolete("Use IsAjaxFrameworkScript(ScriptManager)")]
        protected internal abstract bool IsFromSystemWebExtensions(); 
 
        protected internal virtual bool IsAjaxFrameworkScript(ScriptManager scriptManager) {
            return false; 
        }

        // Script path may contain a query string, while script name may not
        // Release: foo.js?key=value 
        // Debug:   foo.debug.js?key=value
        internal static string GetDebugPath(string releasePath) { 
            // Per RFC 3986, the '?' delimits the query, regardless of the protocol.  This overrides 
            // an earlier RFC, which stated that FTP protocol allows '?' as path characters.
            string pathWithoutQuery; 
            string query;
            if (releasePath.IndexOf('?') >= 0) {
                int indexOfQuery = releasePath.IndexOf('?');
                pathWithoutQuery = releasePath.Substring(0, indexOfQuery); 
                query = releasePath.Substring(indexOfQuery);
            } 
            else { 
                pathWithoutQuery = releasePath;
                query = null; 
            }

            if (!pathWithoutQuery.EndsWith(".js", StringComparison.Ordinal)) {
                throw new InvalidOperationException( 
                    String.Format(CultureInfo.CurrentUICulture, AtlasWeb.ScriptReference_InvalidReleaseScriptPath, pathWithoutQuery));
            } 
 
            return ReplaceExtension(pathWithoutQuery) + query;
        } 

        [SuppressMessage("Microsoft.Design", "CA1055", Justification = "Consistent with other URL properties in ASP.NET.")]
        protected internal abstract string GetUrl(ScriptManager scriptManager, bool zip);
 
        // Assumes the input ends with ".js".  Replaces the ".js" at the end of the input
        // with ".debug.js". 
        protected static string ReplaceExtension(string pathOrName) { 
            Debug.Assert(pathOrName.EndsWith(".js", StringComparison.Ordinal));
            return (pathOrName.Substring(0, pathOrName.Length - 2) + "debug.js"); 
        }
    }
}

// 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.ComponentModel;
    using System.Diagnostics.CodeAnalysis; 
    using System.Globalization;
    using System.Web;
    using System.Web.Resources;
    using System.Web.UI.WebControls; 
    using Debug = System.Diagnostics.Debug;
 
    [ 
    DefaultProperty("Path"),
    ] 
    public abstract class ScriptReferenceBase {
        private bool _alwaysLoadBeforeUI;
        private IClientUrlResolver _clientUrlResolver;
        private Control _containingControl; 
        private bool _isStaticReference;
        private bool _notifyScriptLoaded = true; 
        private string _path; 
        private string[] _resourceUICultures;
        private ScriptMode _scriptMode; 

        protected ScriptReferenceBase() {}

        internal bool AlwaysLoadBeforeUI { 
            get {
                return _alwaysLoadBeforeUI; 
            } 
            set {
                _alwaysLoadBeforeUI = value; 
            }
        }

        // Used by ScriptManager to associate a ScriptReference with its url resolver 
        // (i.e. ScriptManager or ScriptManagerProxy)
        internal IClientUrlResolver ClientUrlResolver { 
            get { 
                return _clientUrlResolver;
            } 
            set {
                _clientUrlResolver = value;
            }
        } 

        internal Control ContainingControl { 
            get { 
                return _containingControl;
            } 
            set {
                _containingControl = value;
            }
        } 

        // isStaticReference is true if the reference came from a ScriptManager or ScriptManagerProxy scripts collection, 
        // false if it came from an IScriptControl or ExtenderControl. 
        internal bool IsStaticReference {
            get { 
                return _isStaticReference;
            }
            set {
                _isStaticReference = value; 
            }
        } 
 
        [
        Category("Behavior"), 
        DefaultValue(true),
        NotifyParentProperty(true),
        ResourceDescription("ScriptReference_NotifyScriptLoaded"),
        Obsolete("NotifyScriptLoaded is no longer required in script references.") 
        ]
        public bool NotifyScriptLoaded { 
            get { 
                return _notifyScriptLoaded;
            } 
            set {
                _notifyScriptLoaded = value;
            }
        } 

        [ 
        Category("Behavior"), 
        DefaultValue(""),
        NotifyParentProperty(true), 
        ResourceDescription("ScriptReference_Path"),
        UrlProperty("*.js")
        ]
        public string Path { 
            get {
                return (_path == null) ? String.Empty : _path; 
            } 
            set {
                _path = value; 
            }
        }

        [ 
        ResourceDescription("ScriptReference_ResourceUICultures"),
        DefaultValue(null), 
        Category("Behavior"), 
        MergableProperty(false),
        NotifyParentProperty(true), 
        TypeConverter(typeof(StringArrayConverter)),
        SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays",
            Justification = "String[] has existing TypeConverter support, which we don't want to add for List to the assembly just for this property and at this point in the product cycle.")
        ] 
        public string[] ResourceUICultures {
            get { 
                return _resourceUICultures; 
            }
            set { 
                _resourceUICultures = value;
            }
        }
 
        [
        Category("Behavior"), 
        DefaultValue(ScriptMode.Auto), 
        NotifyParentProperty(true),
        ResourceDescription("ScriptReference_ScriptMode") 
        ]
        public ScriptMode ScriptMode {
            get {
                return _scriptMode; 
            }
            set { 
                if (value < ScriptMode.Auto || value > ScriptMode.Release) { 
                    throw new ArgumentOutOfRangeException("value");
                } 
                _scriptMode = value;
            }
        }
 
        [Obsolete("Use IsAjaxFrameworkScript(ScriptManager)")]
        protected internal abstract bool IsFromSystemWebExtensions(); 
 
        protected internal virtual bool IsAjaxFrameworkScript(ScriptManager scriptManager) {
            return false; 
        }

        // Script path may contain a query string, while script name may not
        // Release: foo.js?key=value 
        // Debug:   foo.debug.js?key=value
        internal static string GetDebugPath(string releasePath) { 
            // Per RFC 3986, the '?' delimits the query, regardless of the protocol.  This overrides 
            // an earlier RFC, which stated that FTP protocol allows '?' as path characters.
            string pathWithoutQuery; 
            string query;
            if (releasePath.IndexOf('?') >= 0) {
                int indexOfQuery = releasePath.IndexOf('?');
                pathWithoutQuery = releasePath.Substring(0, indexOfQuery); 
                query = releasePath.Substring(indexOfQuery);
            } 
            else { 
                pathWithoutQuery = releasePath;
                query = null; 
            }

            if (!pathWithoutQuery.EndsWith(".js", StringComparison.Ordinal)) {
                throw new InvalidOperationException( 
                    String.Format(CultureInfo.CurrentUICulture, AtlasWeb.ScriptReference_InvalidReleaseScriptPath, pathWithoutQuery));
            } 
 
            return ReplaceExtension(pathWithoutQuery) + query;
        } 

        [SuppressMessage("Microsoft.Design", "CA1055", Justification = "Consistent with other URL properties in ASP.NET.")]
        protected internal abstract string GetUrl(ScriptManager scriptManager, bool zip);
 
        // Assumes the input ends with ".js".  Replaces the ".js" at the end of the input
        // with ".debug.js". 
        protected static string ReplaceExtension(string pathOrName) { 
            Debug.Assert(pathOrName.EndsWith(".js", StringComparison.Ordinal));
            return (pathOrName.Substring(0, pathOrName.Length - 2) + "debug.js"); 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK