UpdateProgress.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / Orcas / RTM / ndp / fx / src / xsp / System / Web / Extensions / ui / UpdateProgress.cs / 1 / UpdateProgress.cs

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

namespace System.Web.UI { 
    using System; 
    using System.Collections.Generic;
    using System.ComponentModel; 
    using System.Diagnostics.CodeAnalysis;
    using System.Drawing;
    using System.Globalization;
    using System.Security.Permissions; 
    using System.Text;
    using System.Web; 
    using System.Web.UI; 
    using System.Web.Script;
    using System.Web.Resources; 
    using System.Web.Util;

    [
    AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal), 
    AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal),
    DefaultProperty("AssociatedUpdatePanelID"), 
    Designer("System.Web.UI.Design.UpdateProgressDesigner, " + AssemblyRef.SystemWebExtensionsDesign), 
    ParseChildren(true),
    PersistChildren(false), 
    ToolboxBitmap(typeof(EmbeddedResourceFinder), "System.Web.Resources.UpdateProgress.bmp"),
    ]
    public class UpdateProgress : Control, IScriptControl {
        private ITemplate _progressTemplate; 
        private Control _progressTemplateContainer;
        private int _displayAfter = 500; 
        private bool _dynamicLayout = true; 
        private string _associatedUpdatePanelID;
 
        [
        Category("Behavior"),
        DefaultValue(""),
        IDReferenceProperty(typeof(UpdatePanel)), 
        ResourceDescription("UpdateProgress_AssociatedUpdatePanelID"),
        SuppressMessage("Microsoft.Naming", "CA1706:ShortAcronymsShouldBeUppercase"), 
        TypeConverter("System.Web.UI.Design.UpdateProgressAssociatedUpdatePanelIDConverter") 
        ]
        public string AssociatedUpdatePanelID { 
            get {
                if (_associatedUpdatePanelID == null) {
                    return String.Empty;
                } 
                return _associatedUpdatePanelID;
            } 
            set { 
                _associatedUpdatePanelID = value;
            } 
        }

        [
        DefaultValue(500), 
        ResourceDescription("UpdateProgress_DisplayAfter"),
        Category("Behavior") 
        ] 
        public int DisplayAfter {
            get { 
                return _displayAfter;
            }
            set {
                if (value < 0) { 
                    throw new ArgumentOutOfRangeException(AtlasWeb.UpdateProgress_DisplayAfterInvalid);
                } 
                _displayAfter = value; 
            }
        } 

        [
        Browsable(false),
        PersistenceMode(PersistenceMode.InnerProperty), 
        ResourceDescription("UpdateProgress_ProgressTemplate"),
        ] 
        public ITemplate ProgressTemplate { 
            get {
                return _progressTemplate; 
            }
            set {
                _progressTemplate = value;
            } 
        }
 
        [ 
        DefaultValue(true),
        ResourceDescription("UpdateProgress_DynamicLayout"), 
        Category("Behavior")
        ]
        public bool DynamicLayout {
            get { 
                return _dynamicLayout;
            } 
            set { 
                _dynamicLayout = value;
            } 
        }

        private ScriptManager ScriptManager {
            get { 
                ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
                if (scriptManager == null) { 
                    throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.Common_ScriptManagerRequired, ID)); 
                }
                return scriptManager; 
            }
        }

        [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")] 
        protected internal override void OnPreRender(EventArgs e) {
            base.OnPreRender(e); 
 
            ScriptManager.RegisterScriptControl(this);
 
            // Set up the progress template
            if (_progressTemplate == null) {
                throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.UpdateProgress_TemplateRequired, ID));
            } 
            _progressTemplateContainer = new Control();
            _progressTemplate.InstantiateIn(_progressTemplateContainer); 
            Controls.Add(_progressTemplateContainer); 
        }
 
        protected internal override void Render(HtmlTextWriter writer) {
            writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
            if (_dynamicLayout) {
                writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none"); 
            }
            else { 
                writer.AddStyleAttribute(HtmlTextWriterStyle.Visibility, "hidden"); 
                writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "block");
            } 
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            base.Render(writer);
            writer.RenderEndTag(); // div
 
            if (!DesignMode) {
                ScriptManager.RegisterScriptDescriptors(this); 
            } 
        }
 
        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
            Justification = "Matches IScriptControl interface.")]
        protected virtual IEnumerable GetScriptReferences() {
            yield break; 
        }
 
        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate", 
            Justification = "Matches IScriptControl interface.")]
        protected virtual IEnumerable GetScriptDescriptors() { 
            // Don't render any scripts when partial rendering is not enabled
            if (Page != null && ScriptManager.SupportsPartialRendering && Visible) {
                ScriptControlDescriptor desc = new ScriptControlDescriptor("Sys.UI._UpdateProgress", ClientID);
                string updatePanelClientID = null; 
                if (!String.IsNullOrEmpty(AssociatedUpdatePanelID)) {
                    // Try both the NamingContainer and the Page 
                    UpdatePanel c = ControlUtil.FindTargetControl(AssociatedUpdatePanelID, this, true) as UpdatePanel; 
                    if (c != null)
                        updatePanelClientID = c.ClientID; 
                    else {
                        throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, AtlasWeb.UpdateProgress_NoUpdatePanel, AssociatedUpdatePanelID));
                    }
                } 
                desc.AddProperty("associatedUpdatePanelId", updatePanelClientID);
                desc.AddProperty("dynamicLayout", DynamicLayout); 
                desc.AddProperty("displayAfter", DisplayAfter); 
                yield return desc;
            } 

            yield break;
        }
 
        #region IScriptControl Members
 
        IEnumerable IScriptControl.GetScriptReferences() { 
            return GetScriptReferences();
        } 

        IEnumerable IScriptControl.GetScriptDescriptors() {
            return GetScriptDescriptors();
        } 

        #endregion 
    } 
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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