D:/Projects/Anthem/Anthem/WebPartZone.cs

00001 #if V2
00002 
00003 using System;
00004 using System.ComponentModel;
00005 using System.Drawing;
00006 using System.Web.UI;
00007 using ASP = System.Web.UI.WebControls;
00008 using WebParts = System.Web.UI.WebControls.WebParts;
00009 
00010 namespace Anthem
00011 {
00015     [ToolboxBitmap(typeof(WebParts.WebPartZone))]
00016     public class WebPartZone : WebParts.WebPartZone, IUpdatableControl
00017     {
00018         #region Unique Anthem control code
00019 
00023         protected override void OnPreRender(EventArgs e)
00024         {
00025             base.OnPreRender(e);
00026             Page.ClientScript.RegisterStartupScript(
00027                 typeof(WebPartZone),
00028                 "hack",
00029                 @"<script type='text/javascript'>

function WebPartManager_SubmitPage(eventTarget, eventArgument) {
    if ((typeof(this.menu) != 'undefined') && (this.menu != null)) {
        this.menu.Hide();
    }
    Anthem_FireEvent(eventTarget, eventArgument, function() { }, null, true, true);
}

function Zone_AddWebPart(webPartElement, webPartTitleElement, allowZoneChange) {
    var webPart = null;
    var zoneIndex = this.webParts.length;

    for (var i = 0; i < this.webParts.length; ++i) {
        if (this.webParts[i].webPartElement.id == webPartElement.id) {
            zoneIndex = i;
            break;
        }
    }

    if (this.allowLayoutChange && __wpm.IsDragDropEnabled()) {
        webPart = new WebPart(webPartElement, webPartTitleElement, this, zoneIndex, allowZoneChange);
    }
    else {
        webPart = new WebPart(webPartElement, null, this, zoneIndex, allowZoneChange);
    }
    this.webParts[zoneIndex] = webPart;
    return webPart;
}

function ReAddWebParts(zoneID) {
    for (var i = 0; i < __wpm.zones.length; ++i) {
        var zone = __wpm.zones[i];
        if (zone.uniqueID == zoneID) {
            for (var j = 0; j < zone.webParts.length; ++j) {
                var webPartID = zone.webParts[j].webPartElement.id;
                var webPart = document.getElementById(webPartID);
                if (webPart) {
                    zone.AddWebPart(webPart, null, false);
                    var webPartVerbs = document.getElementById(webPartID + 'Verbs');
                    var webPartVerbsPopup = document.getElementById(webPartID + 'VerbsPopup');
                    var webPartVerbsMenu = document.getElementById(webPartID + 'VerbsMenu');
                    var menu = new WebPartMenu(webPartVerbs, webPartVerbsPopup, webPartVerbsMenu);
                    menu.itemStyle = '';
                    menu.itemHoverStyle = '';
                    menu.labelHoverColor = '';
                    menu.labelHoverClassName = '';
                }
            }
            break;
        }
    }
}

</script>");
00030         }
00031 
00036         protected override void MinimizeWebPart(WebParts.WebPart webPart)
00037         {
00038             base.MinimizeWebPart(webPart);
00039             UpdateAndReAddWebParts();
00040         }
00041 
00046         protected override void RestoreWebPart(WebParts.WebPart webPart)
00047         {
00048             base.RestoreWebPart(webPart);
00049             UpdateAndReAddWebParts();
00050         }
00051 
00056         protected override void CloseWebPart(System.Web.UI.WebControls.WebParts.WebPart webPart)
00057         {
00058             base.CloseWebPart(webPart);
00059             UpdateAndReAddWebParts();
00060         }
00061 
00062         private const string parentTagName = "span";
00067         protected override void Render(HtmlTextWriter writer)
00068         {
00069 #if !V2
00070             bool DesignMode = this.Context == null;
00071 #endif
00072             if (!DesignMode)
00073             {
00074                 Anthem.Manager.WriteBeginControlMarker(writer, parentTagName, this);
00075             }
00076             if (Visible)
00077             {
00078                 base.Render(writer);
00079             }
00080             if (!DesignMode)
00081             {
00082                 Anthem.Manager.WriteEndControlMarker(writer, parentTagName, this);
00083             }
00084         }
00085 
00086         #endregion
00087 
00088         #region IUpdatableControl implementation
00089 
00103         [Category("Anthem")]
00104         [DefaultValue(false)]
00105         [Description("True if this control should be updated after each callback.")]
00106         public virtual bool AutoUpdateAfterCallBack
00107         {
00108             get
00109             {
00110                 object obj = this.ViewState["AutoUpdateAfterCallBack"];
00111                 if (obj == null)
00112                     return false;
00113                 else
00114                     return (bool)obj;
00115             }
00116             set
00117             {
00118                 if (value) UpdateAfterCallBack = true;
00119                 ViewState["AutoUpdateAfterCallBack"] = value;
00120             }
00121         }
00122 
00123         private bool _updateAfterCallBack = false;
00124 
00139         [Browsable(false)]
00140         [DefaultValue(false)]
00141         public virtual bool UpdateAfterCallBack
00142         {
00143             get { return _updateAfterCallBack; }
00144             set { _updateAfterCallBack = value; }
00145         }
00146 
00147         #endregion
00148 
00149         #region Common Anthem control code
00150 
00156         protected override void OnLoad(EventArgs e)
00157         {
00158             base.OnLoad(e);
00159             Anthem.Manager.Register(this);
00160         }
00161 
00162 #if V2
00166         public override void RenderControl(HtmlTextWriter writer)
00167         {
00168             base.Visible = true;
00169             base.RenderControl(writer);
00170         }
00171 #endif
00172 
00180         public override bool Visible
00181         {
00182             get
00183             {
00184 #if !V2
00185                 bool DesignMode = this.Context == null;
00186 #endif
00187                 return Anthem.Manager.GetControlVisible(this, ViewState, DesignMode);
00188             }
00189             set { Anthem.Manager.SetControlVisible(ViewState, value); }
00190         }
00191 
00192         #endregion
00193 
00194         #region Private Methods
00195 
00196         private void UpdateAndReAddWebParts()
00197         {
00198             UpdateAfterCallBack = true;
00199             Anthem.Manager.AddScriptForClientSideEval(string.Format("ReAddWebParts('{0}')", ID));
00200         }
00201 
00202         #endregion
00203     }
00204 }
00205 
00206 #endif
00207 

Generated on Wed Mar 14 23:50:39 2007 for Anthem by  doxygen 1.5.1-p1