File: UI\WebParts\ErrorWebPart.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="ErrorWebPart.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web.UI.WebControls.WebParts {
 
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Globalization;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Util;
 
    [
    ToolboxItem(false)
    ]
    public class ErrorWebPart : ProxyWebPart, ITrackingPersonalizable {
 
        private string _errorMessage;
 
        // No constructor that takes a WebPart, since we ony use the ErrorWebPart when the original
        // WebPart could not be instantiated.
 
        public ErrorWebPart(string originalID, string originalTypeName, string originalPath, string genericWebPartID) :
            base(originalID, originalTypeName, originalPath, genericWebPartID) {
        }
 
        public string ErrorMessage {
            get {
                return (_errorMessage != null) ? _errorMessage : String.Empty;
            }
            set {
                _errorMessage = value;
            }
        }
 
        protected override void AddAttributesToRender(HtmlTextWriter writer) {
            WebPartZoneBase zone = Zone;
            if (zone != null && !zone.ErrorStyle.IsEmpty) {
                zone.ErrorStyle.AddAttributesToRender(writer, this);
            }
 
            base.AddAttributesToRender(writer);
        }
 
        // Can be overridden by derived classes to set properties
        protected virtual void EndLoadPersonalization() {
            // We don't really need to set AllowEdit, since EditorPart.Display has
            // a special case for ErrorWebPart.  However, let's set it to false anyway
            // for consistency.
            AllowEdit = false;
 
            // We want to force the user to see the ErrorWebPart, and we don't want to allow
            // them to hide or minimize it.
            ChromeState = PartChromeState.Normal;
            Hidden = false;
            AllowHide = false;
            AllowMinimize = false;
 
            // There is no reason to allow exporting an ErrorWebPart.
            ExportMode = WebPartExportMode.None;
 
            // We never call IsAuthorized() on ErrorWebParts, so there is no reason for
            // AuthorizationFilter to be set.
            AuthorizationFilter = String.Empty;
        }
 
        protected internal override void RenderContents(HtmlTextWriter writer) {
            string errorMessage = ErrorMessage;
            if (!String.IsNullOrEmpty(errorMessage)) {
                writer.WriteEncodedText(SR.GetString(SR.ErrorWebPart_ErrorText, errorMessage));
            }
        }
 
        #region ITrackingPersonalizable implementation
        // It doesn't really matter what we return from this property, since this codepath will
        // never be reached for the ErrorWebPart.  However, we return true since we will never need
        // the framework to diff our properties.
        bool ITrackingPersonalizable.TracksChanges {
            get {
                return true;
            }
        }
 
        void ITrackingPersonalizable.BeginLoad() {
        }
 
        void ITrackingPersonalizable.BeginSave() {
        }
 
        void ITrackingPersonalizable.EndLoad() {
            EndLoadPersonalization();
        }
 
        void ITrackingPersonalizable.EndSave() {
        }
        #endregion
    }
}