//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ 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 } }