You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			1740 lines
		
	
	
		
			66 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			1740 lines
		
	
	
		
			66 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // <copyright file="WebPartZoneBase.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.Drawing.Design;
 | |
|     using System.Globalization;
 | |
|     using System.Web.Security;
 | |
|     using System.Web;
 | |
|     using System.Web.UI;
 | |
|     using System.Web.UI.WebControls;
 | |
|     using System.Web.Util;
 | |
| 
 | |
|     /// <devdoc>
 | |
|     /// Base class for all zone classes that host WebPart controls.  Inherits from Zone, adding client-side
 | |
|     /// dragging, verbs, and additional styles.  Zones that are database driven should inherit from
 | |
|     /// this class.
 | |
|     /// </devdoc>
 | |
|     [
 | |
|     Designer("System.Web.UI.Design.WebControls.WebParts.WebPartZoneBaseDesigner, " + AssemblyRef.SystemDesign),
 | |
|     ]
 | |
|     public abstract class WebPartZoneBase : WebZone, IPostBackEventHandler, IWebPartMenuUser {
 | |
| 
 | |
|         private static readonly object CreateVerbsEvent = new object();
 | |
| 
 | |
|         internal const string EventArgumentSeparator = ":";
 | |
|         private const char eventArgumentSeparatorChar = ':';
 | |
| 
 | |
|         private const string dragEventArgument = "Drag";
 | |
|         private const string partVerbEventArgument = "partverb";
 | |
|         private const string zoneVerbEventArgument = "zoneverb";
 | |
|         private const string closeEventArgument = "close";
 | |
|         private const string connectEventArgument = "connect";
 | |
|         private const string deleteEventArgument = "delete";
 | |
|         private const string editEventArgument = "edit";
 | |
|         private const string minimizeEventArgument = "minimize";
 | |
|         private const string restoreEventArgument = "restore";
 | |
| 
 | |
|         // PERF: concat the event arg with the separator at compile-time
 | |
|         private const string partVerbEventArgumentWithSeparator = partVerbEventArgument + EventArgumentSeparator;
 | |
|         private const string zoneVerbEventArgumentWithSeparator = zoneVerbEventArgument + EventArgumentSeparator;
 | |
|         private const string connectEventArgumentWithSeparator = connectEventArgument + EventArgumentSeparator;
 | |
|         private const string editEventArgumentWithSeparator = editEventArgument + EventArgumentSeparator;
 | |
|         private const string minimizeEventArgumentWithSeparator = minimizeEventArgument + EventArgumentSeparator;
 | |
|         private const string restoreEventArgumentWithSeparator = restoreEventArgument + EventArgumentSeparator;
 | |
|         private const string closeEventArgumentWithSeparator = closeEventArgument + EventArgumentSeparator;
 | |
|         private const string deleteEventArgumentWithSeparator = deleteEventArgument + EventArgumentSeparator;
 | |
| 
 | |
|         // Indexes into the ViewState array
 | |
|         private const int baseIndex = 0;
 | |
|         private const int selectedPartChromeStyleIndex = 1;
 | |
|         private const int closeVerbIndex = 2;
 | |
|         private const int connectVerbIndex = 3;
 | |
|         private const int deleteVerbIndex = 4;
 | |
|         private const int editVerbIndex = 5;
 | |
|         private const int helpVerbIndex = 6;
 | |
|         private const int minimizeVerbIndex = 7;
 | |
|         private const int restoreVerbIndex = 8;
 | |
|         private const int exportVerbIndex = 9;
 | |
|         private const int menuPopupStyleIndex = 10;
 | |
|         private const int menuLabelStyleIndex = 11;
 | |
|         private const int menuLabelHoverStyleIndex = 12;
 | |
|         private const int menuCheckImageStyleIndex = 13;
 | |
|         private const int menuVerbStyleIndex = 14;
 | |
|         private const int menuVerbHoverStyleIndex = 15;
 | |
|         private const int controlStyleIndex = 16;
 | |
|         private const int titleBarVerbStyleIndex = 17;
 | |
|         private const int viewStateArrayLength = 18;
 | |
| 
 | |
|         private Style _selectedPartChromeStyle;
 | |
|         private WebPartVerb _closeVerb;
 | |
|         private WebPartVerb _connectVerb;
 | |
|         private WebPartVerb _deleteVerb;
 | |
|         private WebPartVerb _editVerb;
 | |
|         private WebPartVerb _exportVerb;
 | |
|         private WebPartVerb _helpVerb;
 | |
|         private WebPartVerb _minimizeVerb;
 | |
|         private WebPartVerb _restoreVerb;
 | |
| 
 | |
|         private WebPartVerbCollection _verbs;
 | |
|         private WebPartMenuStyle _menuPopupStyle;
 | |
|         private Style _menuLabelStyle;
 | |
|         private Style _menuLabelHoverStyle;
 | |
|         private Style _menuCheckImageStyle;
 | |
|         private Style _menuVerbHoverStyle;
 | |
|         private Style _menuVerbStyle;
 | |
|         private Style _titleBarVerbStyle;
 | |
| 
 | |
|         private Color _borderColor;
 | |
|         private BorderStyle _borderStyle;
 | |
|         private Unit _borderWidth;
 | |
| 
 | |
|         private WebPartChrome _webPartChrome;
 | |
|         private WebPartMenu _menu;
 | |
| 
 | |
|         [
 | |
|         DefaultValue(true),
 | |
|         Themeable(false),
 | |
|         WebCategory("Behavior"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_AllowLayoutChange),
 | |
|         ]
 | |
|         public virtual bool AllowLayoutChange {
 | |
|             get {
 | |
|                 object b = ViewState["AllowLayoutChange"];
 | |
|                 return (b != null) ? (bool)b : true;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["AllowLayoutChange"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Overridden to change default value.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(typeof(Color), "Gray"),
 | |
|         ]
 | |
|         public override Color BorderColor {
 | |
|             get {
 | |
|                 if (ControlStyleCreated == false) {
 | |
|                     return Color.Gray;
 | |
|                 }
 | |
|                 return base.BorderColor;
 | |
|             }
 | |
|             set {
 | |
|                 base.BorderColor = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Overridden to change default value.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(BorderStyle.Solid)
 | |
|         ]
 | |
|         public override BorderStyle BorderStyle {
 | |
|             get {
 | |
|                 if (ControlStyleCreated == false) {
 | |
|                     return BorderStyle.Solid;
 | |
|                 }
 | |
|                 return base.BorderStyle;
 | |
|             }
 | |
|             set {
 | |
|                 base.BorderStyle = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Overridden to change default value.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(typeof(Unit), "1")
 | |
|         ]
 | |
|         public override Unit BorderWidth {
 | |
|             get {
 | |
|                 if (ControlStyleCreated == false) {
 | |
|                     return 1;
 | |
|                 }
 | |
|                 return base.BorderWidth;
 | |
|             }
 | |
|             set {
 | |
|                 base.BorderWidth = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_CloseVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb CloseVerb {
 | |
|             get {
 | |
|                 if (_closeVerb == null) {
 | |
|                     _closeVerb = new WebPartCloseVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_closeVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
|                 return _closeVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_ConnectVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb ConnectVerb {
 | |
|             get {
 | |
|                 if (_connectVerb == null) {
 | |
|                     _connectVerb = new WebPartConnectVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_connectVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
|                 return _connectVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_DeleteVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb DeleteVerb {
 | |
|             get {
 | |
|                 if (_deleteVerb == null) {
 | |
|                     _deleteVerb = new WebPartDeleteVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_deleteVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
|                 return _deleteVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// The string displayed to identify the zone.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         Browsable(false),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
 | |
|         ]
 | |
|         public virtual string DisplayTitle {
 | |
|             get {
 | |
|                 string title = HeaderText;
 | |
|                 if (!String.IsNullOrEmpty(title)) {
 | |
|                     return title;
 | |
|                 }
 | |
| 
 | |
|                 string id = ID;
 | |
|                 if (!String.IsNullOrEmpty(id)) {
 | |
|                     return id;
 | |
|                 }
 | |
| 
 | |
|                 // ID is required to be set by WebPartManager.RegisterZone but this is still a good fallback.
 | |
|                 int index = 1;
 | |
|                 if (WebPartManager != null) {
 | |
|                     index = WebPartManager.Zones.IndexOf(this) + 1;
 | |
|                 }
 | |
|                 return SR.GetString(SR.WebPartZoneBase_DisplayTitleFallback,
 | |
|                                                         index.ToString(CultureInfo.CurrentCulture));
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected internal bool DragDropEnabled {
 | |
|             get {
 | |
|                 return (!DesignMode &&
 | |
|                         RenderClientScript &&
 | |
|                         AllowLayoutChange &&
 | |
|                         WebPartManager != null &&
 | |
|                         WebPartManager.DisplayMode.AllowPageDesign);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(typeof(Color), "Blue"),
 | |
|         TypeConverterAttribute(typeof(WebColorConverter)),
 | |
|         WebCategory("Appearance"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_DragHighlightColor),
 | |
|         ]
 | |
|         public virtual Color DragHighlightColor {
 | |
|             get {
 | |
|                 object o = ViewState["DragHighlightColor"];
 | |
|                 if (o != null) {
 | |
|                     Color c = (Color)o;
 | |
|                     if (c.IsEmpty == false) {
 | |
|                         return c;
 | |
|                     }
 | |
|                 }
 | |
|                 return Color.Blue;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["DragHighlightColor"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_EditVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb EditVerb {
 | |
|             get {
 | |
|                 if (_editVerb == null) {
 | |
|                     _editVerb = new WebPartEditVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_editVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
|                 return _editVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         WebSysDefaultValue(SR.WebPartZoneBase_DefaultEmptyZoneText)
 | |
|         ]
 | |
|         public override string EmptyZoneText {
 | |
|             // Must look at viewstate directly instead of the property in the base class,
 | |
|             // so we can distinguish between an unset property and a property set to String.Empty.
 | |
|             get {
 | |
|                 string s = (string)ViewState["EmptyZoneText"];
 | |
|                 return((s == null) ? SR.GetString(SR.WebPartZoneBase_DefaultEmptyZoneText) : s);
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["EmptyZoneText"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_ExportVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb ExportVerb {
 | |
|             get {
 | |
|                 if (_exportVerb == null) {
 | |
|                     _exportVerb = new WebPartExportVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_exportVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _exportVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override bool HasFooter {
 | |
|             get {
 | |
|                 return false;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override bool HasHeader {
 | |
|             get {
 | |
|                 bool hasHeader = false;
 | |
|                 if (DesignMode) {
 | |
|                     hasHeader = true;
 | |
|                 }
 | |
|                 else if (WebPartManager != null) {
 | |
|                     hasHeader = WebPartManager.DisplayMode.AllowPageDesign;
 | |
|                 }
 | |
|                 return hasHeader;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_HelpVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb HelpVerb {
 | |
|             get {
 | |
|                 if (_helpVerb == null) {
 | |
|                     _helpVerb = new WebPartHelpVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_helpVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _helpVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         internal WebPartMenu Menu {
 | |
|             get {
 | |
|                 if (_menu == null) {
 | |
|                     _menu = new WebPartMenu(this);
 | |
|                 }
 | |
|                 return _menu;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuCheckImageStyle)
 | |
|         ]
 | |
|         public Style MenuCheckImageStyle {
 | |
|             get {
 | |
|                 if (_menuCheckImageStyle == null) {
 | |
|                     _menuCheckImageStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuCheckImageStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuCheckImageStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(""),
 | |
|         Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
 | |
|         UrlProperty(),
 | |
|         WebCategory("Appearance"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuCheckImageUrl)
 | |
|         ]
 | |
|         public virtual string MenuCheckImageUrl {
 | |
|             get {
 | |
|                 string s = (string)ViewState["MenuCheckImageUrl"];
 | |
|                 return ((s == null) ? String.Empty : s);
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["MenuCheckImageUrl"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuLabelHoverStyle)
 | |
|         ]
 | |
|         public Style MenuLabelHoverStyle {
 | |
|             get {
 | |
|                 if (_menuLabelHoverStyle == null) {
 | |
|                     _menuLabelHoverStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuLabelHoverStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuLabelHoverStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuLabelStyle)
 | |
|         ]
 | |
|         public Style MenuLabelStyle {
 | |
|             get {
 | |
|                 if (_menuLabelStyle == null) {
 | |
|                     _menuLabelStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuLabelStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuLabelStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(""),
 | |
|         Localizable(true),
 | |
|         WebCategory("Appearance"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuLabelText)
 | |
|         ]
 | |
|         public virtual string MenuLabelText {
 | |
|             get {
 | |
|                 string s = (string)ViewState["MenuLabelText"];
 | |
|                 return ((s == null) ? String.Empty : s);
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["MenuLabelText"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(""),
 | |
|         Editor("System.Web.UI.Design.ImageUrlEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
 | |
|         UrlProperty(),
 | |
|         WebCategory("Appearance"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuPopupImageUrl)
 | |
|         ]
 | |
|         public virtual string MenuPopupImageUrl {
 | |
|             get {
 | |
|                 string s = (string)ViewState["MenuPopupImageUrl"];
 | |
|                 return ((s == null) ? String.Empty : s);
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["MenuPopupImageUrl"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuPopupStyle)
 | |
|         ]
 | |
|         public WebPartMenuStyle MenuPopupStyle {
 | |
|             get {
 | |
|                 if (_menuPopupStyle == null) {
 | |
|                     _menuPopupStyle = new WebPartMenuStyle();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuPopupStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuPopupStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuVerbHoverStyle)
 | |
|         ]
 | |
|         public Style MenuVerbHoverStyle {
 | |
|             get {
 | |
|                 if (_menuVerbHoverStyle == null) {
 | |
|                     _menuVerbHoverStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuVerbHoverStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuVerbHoverStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MenuVerbStyle)
 | |
|         ]
 | |
|         public Style MenuVerbStyle {
 | |
|             get {
 | |
|                 if (_menuVerbStyle == null) {
 | |
|                     _menuVerbStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_menuVerbStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _menuVerbStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_MinimizeVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb MinimizeVerb {
 | |
|             get {
 | |
|                 if (_minimizeVerb == null) {
 | |
|                     _minimizeVerb = new WebPartMinimizeVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_minimizeVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _minimizeVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// The direction in which contained web parts are rendered.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(Orientation.Vertical),
 | |
|         WebCategory("Layout"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_LayoutOrientation),
 | |
|         ]
 | |
|         public virtual Orientation LayoutOrientation {
 | |
|             get {
 | |
|                 object o = ViewState["LayoutOrientation"];
 | |
|                 return (o != null) ? (Orientation)(int)o : Orientation.Vertical;
 | |
|             }
 | |
|             set {
 | |
|                 if ((value < Orientation.Horizontal) || (value > Orientation.Vertical)) {
 | |
|                     throw new ArgumentOutOfRangeException("value");
 | |
|                 }
 | |
| 
 | |
|                 ViewState["LayoutOrientation"] = (int)value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Verbs"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_RestoreVerb),
 | |
|         ]
 | |
|         public virtual WebPartVerb RestoreVerb {
 | |
|             get {
 | |
|                 if (_restoreVerb == null) {
 | |
|                     _restoreVerb = new WebPartRestoreVerb();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_restoreVerb).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _restoreVerb;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         NotifyParentProperty(true),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("WebPart"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_SelectedPartChromeStyle),
 | |
|         ]
 | |
|         public Style SelectedPartChromeStyle {
 | |
|             get {
 | |
|                 if (_selectedPartChromeStyle == null) {
 | |
|                     _selectedPartChromeStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_selectedPartChromeStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _selectedPartChromeStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Shows the icon image in the title bar of a part, if the TitleIconImageUrl is specified for a part.
 | |
|         /// </devdoc>
 | |
|         [
 | |
|         DefaultValue(true),
 | |
|         WebCategory("WebPart"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_ShowTitleIcons),
 | |
|         ]
 | |
|         public virtual bool ShowTitleIcons {
 | |
|             get {
 | |
|                 object b = ViewState["ShowTitleIcons"];
 | |
|                 return (b != null) ? (bool)b : true;
 | |
|             }
 | |
|             set {
 | |
|                 ViewState["ShowTitleIcons"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(ButtonType.Image),
 | |
|         WebCategory("Appearance"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_TitleBarVerbButtonType),
 | |
|         ]
 | |
|         public virtual ButtonType TitleBarVerbButtonType {
 | |
|             get {
 | |
|                 object obj = ViewState["TitleBarVerbButtonType"];
 | |
|                 return (obj == null) ? ButtonType.Image : (ButtonType)obj;
 | |
|             }
 | |
|             set {
 | |
|                 if (value < ButtonType.Button || value > ButtonType.Link) {
 | |
|                     throw new ArgumentOutOfRangeException("value");
 | |
|                 }
 | |
|                 ViewState["TitleBarVerbButtonType"] = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(null),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Content),
 | |
|         NotifyParentProperty(true),
 | |
|         PersistenceMode(PersistenceMode.InnerProperty),
 | |
|         WebCategory("Styles"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_TitleBarVerbStyle)
 | |
|         ]
 | |
|         public Style TitleBarVerbStyle {
 | |
|             get {
 | |
|                 if (_titleBarVerbStyle == null) {
 | |
|                     _titleBarVerbStyle = new Style();
 | |
|                     if (IsTrackingViewState) {
 | |
|                         ((IStateManager)_titleBarVerbStyle).TrackViewState();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return _titleBarVerbStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         Browsable(false),
 | |
|         EditorBrowsable(EditorBrowsableState.Never),
 | |
|         Themeable(false)
 | |
|         ]
 | |
|         public override ButtonType VerbButtonType {
 | |
|             get {
 | |
|                 return base.VerbButtonType;
 | |
|             }
 | |
|             set {
 | |
|                 base.VerbButtonType = value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         Browsable(false),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
 | |
|         ]
 | |
|         public WebPartChrome WebPartChrome {
 | |
|             get {
 | |
|                 if (_webPartChrome == null) {
 | |
|                     _webPartChrome = CreateWebPartChrome();
 | |
|                 }
 | |
|                 return _webPartChrome;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // 
 | |
|         [
 | |
|         Browsable(false),
 | |
|         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
 | |
|         ]
 | |
|         public WebPartCollection WebParts {
 | |
|             get {
 | |
|                 WebPartCollection webParts;
 | |
|                 if (DesignMode) {
 | |
|                     WebPart[] parts = new WebPart[Controls.Count];
 | |
|                     Controls.CopyTo(parts, 0);
 | |
|                     return new WebPartCollection(parts);
 | |
|                 }
 | |
|                 else {
 | |
|                     if (WebPartManager != null) {
 | |
|                         webParts = WebPartManager.GetWebPartsForZone(this);
 | |
|                     }
 | |
|                     else {
 | |
|                         webParts = new WebPartCollection();
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 return webParts;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         DefaultValue(WebPartVerbRenderMode.Menu),
 | |
|         WebCategory("WebPart"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_WebPartVerbRenderMode)
 | |
|         ]
 | |
|         public virtual WebPartVerbRenderMode WebPartVerbRenderMode {
 | |
|             get {
 | |
|                 object o = ViewState["WebPartVerbRenderMode"];
 | |
|                 return (o != null) ? (WebPartVerbRenderMode)(int)o : WebPartVerbRenderMode.Menu;
 | |
|             }
 | |
|             set {
 | |
|                 if ((value < WebPartVerbRenderMode.Menu) || (value > WebPartVerbRenderMode.TitleBar)) {
 | |
|                     throw new ArgumentOutOfRangeException("value");
 | |
|                 }
 | |
|                 ViewState["WebPartVerbRenderMode"] = (int)value;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         [
 | |
|         WebCategory("Action"),
 | |
|         WebSysDescription(SR.WebPartZoneBase_CreateVerbs)
 | |
|         ]
 | |
|         public event WebPartVerbsEventHandler CreateVerbs {
 | |
|             add {
 | |
|                 Events.AddHandler(CreateVerbsEvent, value);
 | |
|             }
 | |
|             remove {
 | |
|                 Events.RemoveHandler(CreateVerbsEvent, value);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected virtual void CloseWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if (WebPartManager != null && webPart.AllowClose && AllowLayoutChange) {
 | |
|                 WebPartManager.CloseWebPart(webPart);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected virtual void ConnectWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if (WebPartManager != null &&
 | |
|                 WebPartManager.DisplayMode == WebPartManager.ConnectDisplayMode &&
 | |
|                 webPart != WebPartManager.SelectedWebPart &&
 | |
|                 webPart.AllowConnect) {
 | |
|                 WebPartManager.BeginWebPartConnecting(webPart);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // 
 | |
|         protected internal override void CreateChildControls() {
 | |
|             if (DesignMode) {
 | |
|                 Controls.Clear();
 | |
| 
 | |
|                 WebPartCollection webParts = GetInitialWebParts();
 | |
|                 foreach (WebPart part in webParts) {
 | |
|                     Controls.Add(part);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <internalonly/>
 | |
|         protected override ControlCollection CreateControlCollection() {
 | |
|             if (DesignMode) {
 | |
|                 return new ControlCollection(this);
 | |
|             }
 | |
|             else {
 | |
|                 return new EmptyControlCollection(this);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override Style CreateControlStyle() {
 | |
|             // We need the ControlStyle to use its own StateBag, since we do not want the
 | |
|             // default values we set here to be saved in ViewState.
 | |
|             Style style = new Style();
 | |
| 
 | |
|             style.BorderColor = Color.Gray;
 | |
|             style.BorderStyle = BorderStyle.Solid;
 | |
|             style.BorderWidth = 1;
 | |
| 
 | |
|             return style;
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Overridden by subclasses to use a different chrome when rendering the WebParts.
 | |
|         /// </devdoc>
 | |
|         protected virtual WebPartChrome CreateWebPartChrome() {
 | |
|             return new WebPartChrome(this, WebPartManager);
 | |
|         }
 | |
| 
 | |
|         protected virtual void DeleteWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if (WebPartManager != null && AllowLayoutChange) {
 | |
|                 WebPartManager.DeleteWebPart(webPart);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected virtual void EditWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if (WebPartManager != null &&
 | |
|                 WebPartManager.DisplayMode == WebPartManager.EditDisplayMode &&
 | |
|                 webPart != WebPartManager.SelectedWebPart) {
 | |
|                 WebPartManager.BeginWebPartEditing(webPart);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// The effective frame type of a part, taking into consideration the PartChromeType
 | |
|         /// of the zone and the DisplayMode of the page.
 | |
|         /// </devdoc>
 | |
|         public override PartChromeType GetEffectiveChromeType(Part part) {
 | |
|             PartChromeType chromeType = base.GetEffectiveChromeType(part);
 | |
| 
 | |
|             // Add title to chromeType if we are in page design mode.  We always want
 | |
|             // to render a title bar when in page design mode. (VSWhidbey 77730)
 | |
|             if ((WebPartManager != null) && (WebPartManager.DisplayMode.AllowPageDesign)) {
 | |
|                 if (chromeType == PartChromeType.None) {
 | |
|                     chromeType = PartChromeType.TitleOnly;
 | |
|                 }
 | |
|                 else if (chromeType == PartChromeType.BorderOnly) {
 | |
|                     chromeType = PartChromeType.TitleAndBorder;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return chromeType;
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Loads the initial web parts from a template, persistence medium, or some other way.
 | |
|         /// These parts may be in a different zone when rendered, since control personalization
 | |
|         /// may change their zone.
 | |
|         /// </devdoc>
 | |
|         protected internal abstract WebPartCollection GetInitialWebParts();
 | |
| 
 | |
|         protected override void LoadViewState(object savedState) {
 | |
|             if (savedState == null) {
 | |
|                 base.LoadViewState(null);
 | |
|             }
 | |
|             else {
 | |
|                 object[] myState = (object[]) savedState;
 | |
|                 if (myState.Length != viewStateArrayLength) {
 | |
|                     throw new ArgumentException(SR.GetString(SR.ViewState_InvalidViewState));
 | |
|                 }
 | |
| 
 | |
|                 base.LoadViewState(myState[baseIndex]);
 | |
|                 if (myState[selectedPartChromeStyleIndex] != null) {
 | |
|                     ((IStateManager) SelectedPartChromeStyle).LoadViewState(myState[selectedPartChromeStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[closeVerbIndex] != null) {
 | |
|                     ((IStateManager) CloseVerb).LoadViewState(myState[closeVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[connectVerbIndex] != null) {
 | |
|                     ((IStateManager) ConnectVerb).LoadViewState(myState[connectVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[deleteVerbIndex] != null) {
 | |
|                     ((IStateManager) DeleteVerb).LoadViewState(myState[deleteVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[editVerbIndex] != null) {
 | |
|                     ((IStateManager) EditVerb).LoadViewState(myState[editVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[helpVerbIndex] != null) {
 | |
|                     ((IStateManager) HelpVerb).LoadViewState(myState[helpVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[minimizeVerbIndex] != null) {
 | |
|                     ((IStateManager) MinimizeVerb).LoadViewState(myState[minimizeVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[restoreVerbIndex] != null) {
 | |
|                     ((IStateManager) RestoreVerb).LoadViewState(myState[restoreVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[exportVerbIndex] != null) {
 | |
|                     ((IStateManager) ExportVerb).LoadViewState(myState[exportVerbIndex]);
 | |
|                 }
 | |
|                 if (myState[menuPopupStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuPopupStyle).LoadViewState(myState[menuPopupStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[menuLabelStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuLabelStyle).LoadViewState(myState[menuLabelStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[menuLabelHoverStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuLabelHoverStyle).LoadViewState(myState[menuLabelHoverStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[menuCheckImageStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuCheckImageStyle).LoadViewState(myState[menuCheckImageStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[menuVerbStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuVerbStyle).LoadViewState(myState[menuVerbStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[menuVerbHoverStyleIndex] != null) {
 | |
|                     ((IStateManager) MenuVerbHoverStyle).LoadViewState(myState[menuVerbHoverStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[controlStyleIndex] != null) {
 | |
|                     ((IStateManager) ControlStyle).LoadViewState(myState[controlStyleIndex]);
 | |
|                 }
 | |
|                 if (myState[titleBarVerbStyleIndex] != null) {
 | |
|                     ((IStateManager) TitleBarVerbStyle).LoadViewState(myState[titleBarVerbStyleIndex]);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <devdoc>
 | |
|         /// Load the verbs defined by the page developer or zone subclass.
 | |
|         /// </devdoc>
 | |
|         private void CreateZoneVerbs() {
 | |
|             WebPartVerbsEventArgs args = new WebPartVerbsEventArgs();
 | |
|             OnCreateVerbs(args);
 | |
|             _verbs = args.Verbs;
 | |
|         }
 | |
| 
 | |
|         private bool IsDefaultVerbEvent(string[] eventArguments) {
 | |
|             return (eventArguments.Length == 2);
 | |
|         }
 | |
| 
 | |
|         private bool IsDragEvent(string[] eventArguments) {
 | |
|             return (eventArguments.Length == 3 &&
 | |
|                     String.Equals(eventArguments[0], dragEventArgument, StringComparison.OrdinalIgnoreCase));
 | |
|         }
 | |
| 
 | |
|         private bool IsPartVerbEvent(string[] eventArguments) {
 | |
|             return (eventArguments.Length == 3 &&
 | |
|                     String.Equals(eventArguments[0], partVerbEventArgument, StringComparison.OrdinalIgnoreCase));
 | |
|         }
 | |
| 
 | |
|         private bool IsZoneVerbEvent(string[] eventArguments) {
 | |
|             return (eventArguments.Length == 3 &&
 | |
|                     String.Equals(eventArguments[0], zoneVerbEventArgument, StringComparison.OrdinalIgnoreCase));
 | |
|         }
 | |
| 
 | |
|         protected virtual void MinimizeWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if (webPart.ChromeState == PartChromeState.Normal &&
 | |
|                 webPart.AllowMinimize &&
 | |
|                 AllowLayoutChange) {
 | |
|                 webPart.ChromeState = PartChromeState.Minimized;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected virtual void OnCreateVerbs(WebPartVerbsEventArgs e) {
 | |
|             WebPartVerbsEventHandler handler = (WebPartVerbsEventHandler)Events[CreateVerbsEvent];
 | |
|             if (handler != null) {
 | |
|                 handler(this, e);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected internal override void OnPreRender(EventArgs e) {
 | |
|             base.OnPreRender(e);
 | |
| 
 | |
|             // The zone verbs may have been loaded in RaisePostBackEvent, but we must load
 | |
|             // them again in case the page developer wants to change the verbs at this time.
 | |
|             CreateZoneVerbs();
 | |
| 
 | |
|             WebPartChrome.PerformPreRender();
 | |
| 
 | |
|             // 
 | |
| 
 | |
|         }
 | |
| 
 | |
|         protected virtual void RaisePostBackEvent(string eventArgument) {
 | |
|             if (String.IsNullOrEmpty(eventArgument)) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             string[] eventArguments = eventArgument.Split(eventArgumentSeparatorChar);
 | |
| 
 | |
|             // We do not register all the possible combinations of drag/drop events because there are
 | |
|             // too many combinations.  So we must not validate them either.  VSWhidbey 492706
 | |
|             if (!IsDragEvent(eventArguments)) {
 | |
|                 ValidateEvent(UniqueID, eventArgument);
 | |
|             }
 | |
| 
 | |
|             if (WebPartManager == null) {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             // Look in collection of all WebParts instead of WebParts for this zone, since
 | |
|             // an admin may have moved the part to a different Zone between postbacks.
 | |
|             WebPartCollection allWebParts = WebPartManager.WebParts;
 | |
|             if (IsDefaultVerbEvent(eventArguments)) {
 | |
|                 // Postback from a default verb
 | |
|                 string verbEventArgument = eventArguments[0];
 | |
|                 string partID = eventArguments[1];
 | |
|                 WebPart part = allWebParts[partID];
 | |
| 
 | |
|                 // Part will be null or closed if the part was present on the previous request,
 | |
|                 // but is missing or closed now.  It may have been deleted or closed by the admin
 | |
|                 // or filtered by roles.
 | |
|                 if (part != null && !part.IsClosed) {
 | |
|                     if (String.Equals(verbEventArgument, closeEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (CloseVerb.Visible && CloseVerb.Enabled) {
 | |
|                             CloseWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                     else if (String.Equals(verbEventArgument, connectEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (ConnectVerb.Visible && ConnectVerb.Enabled) {
 | |
|                             ConnectWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                     else if (String.Equals(verbEventArgument, deleteEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (DeleteVerb.Visible && DeleteVerb.Enabled) {
 | |
|                             DeleteWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                     else if (String.Equals(verbEventArgument, editEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (EditVerb.Visible && EditVerb.Enabled) {
 | |
|                             EditWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                     else if (String.Equals(verbEventArgument, minimizeEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (MinimizeVerb.Visible && MinimizeVerb.Enabled) {
 | |
|                             MinimizeWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                     else if (String.Equals(verbEventArgument, restoreEventArgument, StringComparison.OrdinalIgnoreCase)) {
 | |
|                         if (RestoreVerb.Visible && RestoreVerb.Enabled) {
 | |
|                             RestoreWebPart(part);
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else if (IsDragEvent(eventArguments)) {
 | |
|                 // Postback from a drop event
 | |
| 
 | |
|                 // The eventArgument contains the WholePartID instead of just ID, since we
 | |
|                 // render WholePartID on the table containing the whole part.
 | |
|                 string wholePartID = eventArguments[1];
 | |
| 
 | |
|                 string partID = null;
 | |
|                 if (wholePartID.StartsWith(WebPart.WholePartIDPrefix, StringComparison.Ordinal)) {
 | |
|                     partID = wholePartID.Substring(WebPart.WholePartIDPrefix.Length);
 | |
|                 }
 | |
| 
 | |
|                 int dropPartIndex = Int32.Parse(eventArguments[2], CultureInfo.InvariantCulture);
 | |
|                 WebPart actionPart = allWebParts[partID];
 | |
| 
 | |
|                 // Part will be null or closed if the part was present on the previous request,
 | |
|                 // but is missing or closed now.  It may have been deleted or closed by the admin
 | |
|                 // or filtered by roles.
 | |
|                 if (actionPart != null && !actionPart.IsClosed) {
 | |
|                     // If dragged part to larger index in its current zone, correct drop index
 | |
|                     // by subtracting 1.  Otherwise the part will move 1 position farther than desired.
 | |
|                     if (WebParts.Contains(actionPart) && (actionPart.ZoneIndex < dropPartIndex)) {
 | |
|                         dropPartIndex--;
 | |
|                     }
 | |
| 
 | |
|                     WebPartZoneBase fromZone = actionPart.Zone;
 | |
|                     if (AllowLayoutChange &&
 | |
|                         WebPartManager.DisplayMode.AllowPageDesign &&
 | |
|                         fromZone != null &&
 | |
|                         fromZone.AllowLayoutChange &&
 | |
|                         (actionPart.AllowZoneChange || (fromZone == this))) {
 | |
|                         WebPartManager.MoveWebPart(actionPart, this, dropPartIndex);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else if (IsPartVerbEvent(eventArguments)) {
 | |
|                 // Postback from a part verb
 | |
|                 string verbID = eventArguments[1];
 | |
|                 string partID = eventArguments[2];
 | |
|                 WebPart part = allWebParts[partID];
 | |
| 
 | |
|                 // Part will be null or closed if the part was present on the previous request,
 | |
|                 // but is missing or closed now.  It may have been deleted or closed by the admin
 | |
|                 // or filtered by roles.
 | |
|                 if (part != null && !part.IsClosed) {
 | |
|                     WebPartVerb verb = part.Verbs[verbID];
 | |
|                     if (verb != null && verb.Visible && verb.Enabled) {
 | |
|                         verb.ServerClickHandler(verb, new WebPartEventArgs(part));
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             else if (IsZoneVerbEvent(eventArguments)) {
 | |
|                 // Postback from a zone verb
 | |
|                 CreateZoneVerbs();
 | |
|                 string verbID = eventArguments[1];
 | |
|                 string partID = eventArguments[2];
 | |
|                 WebPart part = allWebParts[partID];
 | |
| 
 | |
|                 // Part will be null or closed if the part was present on the previous request,
 | |
|                 // but is missing or closed now.  It may have been deleted or closed by the admin
 | |
|                 // or filtered by roles.
 | |
|                 if (part != null && !part.IsClosed) {
 | |
|                     WebPartVerb verb = _verbs[verbID];
 | |
|                     if (verb != null && verb.Visible && verb.Enabled) {
 | |
|                         verb.ServerClickHandler(verb, new WebPartEventArgs(part));
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected internal override void Render(HtmlTextWriter writer) {
 | |
|             if (Page != null) {
 | |
|                 Page.VerifyRenderingInServerForm(this);
 | |
|             }
 | |
| 
 | |
|             _borderColor = BorderColor;
 | |
|             _borderStyle = BorderStyle;
 | |
|             _borderWidth = BorderWidth;
 | |
| 
 | |
|             // PERF: If the control style has not been created, we don't need to set these values,
 | |
|             // since no style properties will be rendered
 | |
|             if (ControlStyleCreated) {
 | |
|                 BorderColor = Color.Empty;
 | |
|                 BorderStyle = BorderStyle.NotSet;
 | |
|                 BorderWidth = Unit.Empty;
 | |
|             }
 | |
| 
 | |
|             base.Render(writer);
 | |
| 
 | |
|             if (ControlStyleCreated) {
 | |
|                 BorderColor = _borderColor;
 | |
|                 BorderStyle = _borderStyle;
 | |
|                 BorderWidth = _borderWidth;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override void RenderBody(HtmlTextWriter writer) {
 | |
|             Orientation orientation = LayoutOrientation;
 | |
| 
 | |
|             if (DesignMode || (WebPartManager != null && (WebPartManager.DisplayMode.AllowPageDesign))) {
 | |
|                 if (_borderColor != Color.Empty || _borderStyle != BorderStyle.NotSet || _borderWidth != Unit.Empty) {
 | |
|                     Style s = new Style();
 | |
|                     s.BorderColor = _borderColor;
 | |
|                     s.BorderStyle = _borderStyle;
 | |
|                     s.BorderWidth = _borderWidth;
 | |
|                     s.AddAttributesToRender(writer, this);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             RenderBodyTableBeginTag(writer);
 | |
|             if (DesignMode) {
 | |
|                 RenderDesignerRegionBeginTag(writer, orientation);
 | |
|             }
 | |
| 
 | |
|             if (orientation == Orientation.Horizontal) {
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
|             }
 | |
| 
 | |
|             bool dragDropEnabled = DragDropEnabled;
 | |
|             if (dragDropEnabled) {
 | |
|                 RenderDropCue(writer);
 | |
|             }
 | |
| 
 | |
|             WebPartCollection webParts = WebParts;
 | |
|             if (webParts == null || webParts.Count == 0) {
 | |
|                 RenderEmptyZoneBody(writer);
 | |
|             }
 | |
|             else {
 | |
|                 WebPartChrome chrome = WebPartChrome;
 | |
|                 foreach (WebPart webPart in webParts) {
 | |
|                     // Don't render anything visible for a  minimized part if its effective frame
 | |
|                     // type dictates that a title bar will not be rendered. (VSWhidbey 77730)
 | |
|                     if (webPart.ChromeState == PartChromeState.Minimized) {
 | |
|                         PartChromeType chromeType = GetEffectiveChromeType(webPart);
 | |
|                         if (chromeType == PartChromeType.None || chromeType == PartChromeType.BorderOnly) {
 | |
|                             writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
 | |
|                         }
 | |
|                     }
 | |
| 
 | |
| 
 | |
|                     if (orientation == Orientation.Vertical) {
 | |
|                         writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
|                     }
 | |
|                     else {
 | |
|                         // Mac IE needs height=100% set on <td> instead of <tr>
 | |
|                         writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
 | |
|                         writer.AddAttribute(HtmlTextWriterAttribute.Valign, "top");
 | |
|                     }
 | |
|                     writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
| 
 | |
|                     chrome.RenderWebPart(writer, webPart);
 | |
| 
 | |
|                     writer.RenderEndTag();      // Td
 | |
|                     if (orientation == Orientation.Vertical) {
 | |
|                         writer.RenderEndTag();  // Tr
 | |
|                     }
 | |
| 
 | |
|                     if (dragDropEnabled) {
 | |
|                         RenderDropCue(writer);
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 if (orientation == Orientation.Vertical) {
 | |
|                     // Add an extra row with height of 100%, to Microsoft up any extra space
 | |
|                     // if the height of the zone is larger than its contents
 | |
|                     writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
| 
 | |
|                     // Mozilla renders padding on an empty TD without this attribute
 | |
|                     writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "0");
 | |
| 
 | |
|                     // Mac IE needs height=100% set on <td> instead of <tr>
 | |
|                     writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
 | |
| 
 | |
|                     writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
|                     writer.RenderEndTag(); // Td
 | |
|                     writer.RenderEndTag(); // Tr
 | |
|                 }
 | |
|                 else {
 | |
|                     // Add an extra cell with width of 100%, to Microsoft up any extra space
 | |
|                     // if the width of the zone is larger than its contents.
 | |
|                     writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 | |
| 
 | |
|                     // Mozilla renders padding on an empty TD without this attribute
 | |
|                     writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "0");
 | |
| 
 | |
|                     writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
|                     writer.RenderEndTag(); // Td
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (orientation == Orientation.Horizontal) {
 | |
|                 writer.RenderEndTag();  // Tr
 | |
|             }
 | |
| 
 | |
|             if (DesignMode) {
 | |
|                 RenderDesignerRegionEndTag(writer);
 | |
|             }
 | |
|             RenderBodyTableEndTag(writer);
 | |
|         }
 | |
| 
 | |
|         protected virtual void RenderDropCue(HtmlTextWriter writer) {
 | |
|             if (LayoutOrientation == Orientation.Vertical) {
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingTop, "1");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingBottom, "1");
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
|                 RenderDropCueIBar(writer, Orientation.Horizontal);
 | |
|                 writer.RenderEndTag();  // Td
 | |
|                 writer.RenderEndTag();  // Tr
 | |
|             }
 | |
|             else {
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingLeft, "1");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.PaddingRight, "1");
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
|                 RenderDropCueIBar(writer, Orientation.Vertical);
 | |
|                 writer.RenderEndTag();  // Td
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private void RenderDropCueIBar(HtmlTextWriter writer, Orientation orientation) {
 | |
|             // 10px is the total margin and border width that we have to substract
 | |
|             // (2*2px for the margin, 2*3px for the border)
 | |
|             // Places to touch if we want to change the rendering of the cues:
 | |
|             // WebParts.js (Zone_ToggleDropCues)
 | |
|             // WebPartZoneBase.RenderDropCueIBar
 | |
|             string color = ColorTranslator.ToHtml(DragHighlightColor);
 | |
|             string border = "solid 3px " + color;
 | |
| 
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
 | |
|             if (orientation == Orientation.Horizontal) {
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 | |
|                 writer.AddStyleAttribute("border-left", border);
 | |
|                 writer.AddStyleAttribute("border-right", border);
 | |
|             }
 | |
|             else {
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
 | |
|                 writer.AddStyleAttribute("border-top", border);
 | |
|                 writer.AddStyleAttribute("border-bottom", border);
 | |
|             }
 | |
|             writer.AddStyleAttribute(HtmlTextWriterStyle.Visibility, "hidden");
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Table);
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
| 
 | |
|             if (orientation == Orientation.Vertical) {
 | |
|                 writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
 | |
|             }
 | |
|             writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "0px");
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
| 
 | |
|             if (orientation == Orientation.Horizontal) {
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "2px 0px 2px 0px");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "2px");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 | |
|             }
 | |
|             else {
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Margin, "0px 2px 0px 2px");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "2px");
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
 | |
|             }
 | |
|             writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, color);
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Div);
 | |
| 
 | |
|             writer.RenderEndTag();      // Div
 | |
|             writer.RenderEndTag();      // Td
 | |
|             writer.RenderEndTag();      // Tr
 | |
|             writer.RenderEndTag();      // Table
 | |
|         }
 | |
| 
 | |
|         private void RenderEmptyZoneBody(HtmlTextWriter writer) {
 | |
|             bool vertical = (LayoutOrientation == Orientation.Vertical);
 | |
|             bool horizontal = !vertical;
 | |
|             string emptyZoneText = EmptyZoneText;
 | |
| 
 | |
|             bool renderText = (!DesignMode && AllowLayoutChange && WebPartManager != null &&
 | |
|                                WebPartManager.DisplayMode.AllowPageDesign && !String.IsNullOrEmpty(emptyZoneText));
 | |
| 
 | |
|             if (vertical) {
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
|             }
 | |
| 
 | |
|             if (renderText) {
 | |
|                 writer.AddAttribute(HtmlTextWriterAttribute.Valign, "top");
 | |
|             }
 | |
| 
 | |
|             if (horizontal) {
 | |
|                 // Want drop zone to shrink to size, so take up all width in zone
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 | |
|             }
 | |
|             else {
 | |
|                 // Want drop zone to shrink to size, so take up all height in zone
 | |
|                 // Mac IE needs height=100% set on <td> instead of <tr>
 | |
|                 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
 | |
|             }
 | |
| 
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
| 
 | |
|             if (renderText) {
 | |
|                 Style emptyZoneTextStyle = EmptyZoneTextStyle;
 | |
|                 if (!emptyZoneTextStyle.IsEmpty) {
 | |
|                     emptyZoneTextStyle.AddAttributesToRender(writer, this);
 | |
|                 }
 | |
| 
 | |
|                 writer.RenderBeginTag(HtmlTextWriterTag.Div);
 | |
|                 writer.Write(emptyZoneText);
 | |
|                 writer.RenderEndTag();  // Div
 | |
|             }
 | |
| 
 | |
|             writer.RenderEndTag();  // Td
 | |
|             if (vertical) {
 | |
|                 writer.RenderEndTag();  // Tr
 | |
|             }
 | |
| 
 | |
|             if (renderText) {
 | |
|                 if (DragDropEnabled) {
 | |
|                     // This drop cue will never be activated since there are no web parts, but it
 | |
|                     // reserves space below the text equal to the real drop cue above the text
 | |
|                     RenderDropCue(writer);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override void RenderHeader(HtmlTextWriter writer) {
 | |
| 
 | |
|             // 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|             // Render title bar
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2");
 | |
|             writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
 | |
|             writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
 | |
| 
 | |
|             TitleStyle headerStyle = HeaderStyle;
 | |
|             if (!headerStyle.IsEmpty) {
 | |
|                 // Apply font and forecolor from HeaderStyle to inner table
 | |
|                 Style style = new Style();
 | |
|                 if (!headerStyle.ForeColor.IsEmpty) {
 | |
|                     style.ForeColor = headerStyle.ForeColor;
 | |
|                 }
 | |
|                 style.Font.CopyFrom(headerStyle.Font);
 | |
|                 if (!headerStyle.Font.Size.IsEmpty) {
 | |
|                     // If the font size is specified on the HeaderStyle, force the font size to 100%,
 | |
|                     // so it inherits the font size from its parent in IE compatibility mode. I would
 | |
|                     // think that "1em" would work here as well, but "1em" doesn't work when you change
 | |
|                     // the font size in the browser.
 | |
|                     style.Font.Size = new FontUnit(new Unit(100, UnitType.Percentage));
 | |
|                 }
 | |
|                 if (!style.IsEmpty) {
 | |
|                     style.AddAttributesToRender(writer, this);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Table);
 | |
| 
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 | |
| 
 | |
|             // Copied from Panel.cs
 | |
|             // 
 | |
|             HorizontalAlign hAlign = headerStyle.HorizontalAlign;
 | |
|             if (hAlign != HorizontalAlign.NotSet) {
 | |
|                 TypeConverter hac = TypeDescriptor.GetConverter(typeof(HorizontalAlign));
 | |
|                 writer.AddAttribute(HtmlTextWriterAttribute.Align, hac.ConvertToString(hAlign));
 | |
|             }
 | |
| 
 | |
|             writer.AddStyleAttribute(HtmlTextWriterStyle.WhiteSpace, "nowrap");
 | |
|             writer.RenderBeginTag(HtmlTextWriterTag.Td);
 | |
|             writer.Write(DisplayTitle);
 | |
|             writer.RenderEndTag();  // Td
 | |
| 
 | |
|             writer.RenderEndTag();  // Tr
 | |
|             writer.RenderEndTag();  // Table
 | |
|         }
 | |
| 
 | |
|         protected virtual void RestoreWebPart(WebPart webPart) {
 | |
|             if (webPart == null) {
 | |
|                 throw new ArgumentNullException("webPart");
 | |
|             }
 | |
|             if ((webPart.ChromeState == PartChromeState.Minimized) && AllowLayoutChange) {
 | |
|                 webPart.ChromeState = PartChromeState.Normal;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override object SaveViewState() {
 | |
|             object[] myState = new object[viewStateArrayLength];
 | |
| 
 | |
|             myState[baseIndex] = base.SaveViewState();
 | |
|             myState[selectedPartChromeStyleIndex] = (_selectedPartChromeStyle != null) ? ((IStateManager)_selectedPartChromeStyle).SaveViewState() : null;
 | |
|             myState[closeVerbIndex] = (_closeVerb != null) ? ((IStateManager)_closeVerb).SaveViewState() : null;
 | |
|             myState[connectVerbIndex] = (_connectVerb != null) ? ((IStateManager)_connectVerb).SaveViewState() : null;
 | |
|             myState[deleteVerbIndex] = (_deleteVerb != null) ? ((IStateManager)_deleteVerb).SaveViewState() : null;
 | |
|             myState[editVerbIndex] = (_editVerb != null) ? ((IStateManager)_editVerb).SaveViewState() : null;
 | |
|             myState[helpVerbIndex] = (_helpVerb != null) ? ((IStateManager)_helpVerb).SaveViewState() : null;
 | |
|             myState[minimizeVerbIndex] = (_minimizeVerb != null) ? ((IStateManager)_minimizeVerb).SaveViewState() : null;
 | |
|             myState[restoreVerbIndex] = (_restoreVerb != null) ? ((IStateManager)_restoreVerb).SaveViewState() : null;
 | |
|             myState[exportVerbIndex] = (_exportVerb != null) ? ((IStateManager)_exportVerb).SaveViewState() : null;
 | |
|             myState[menuPopupStyleIndex] = (_menuPopupStyle != null) ? ((IStateManager)_menuPopupStyle).SaveViewState() : null;
 | |
|             myState[menuLabelStyleIndex] = (_menuLabelStyle != null) ? ((IStateManager)_menuLabelStyle).SaveViewState() : null;
 | |
|             myState[menuLabelHoverStyleIndex] = (_menuLabelHoverStyle != null) ? ((IStateManager)_menuLabelHoverStyle).SaveViewState() : null;
 | |
|             myState[menuCheckImageStyleIndex] = (_menuCheckImageStyle != null) ? ((IStateManager)_menuCheckImageStyle).SaveViewState() : null;
 | |
|             myState[menuVerbStyleIndex] = (_menuVerbStyle != null) ? ((IStateManager)_menuVerbStyle).SaveViewState() : null;
 | |
|             myState[menuVerbHoverStyleIndex] = (_menuVerbHoverStyle != null) ? ((IStateManager)_menuVerbHoverStyle).SaveViewState() : null;
 | |
|             myState[controlStyleIndex] = ControlStyleCreated ? ((IStateManager)ControlStyle).SaveViewState() : null;
 | |
|             myState[titleBarVerbStyleIndex] = (_titleBarVerbStyle != null) ? ((IStateManager)_titleBarVerbStyle).SaveViewState() : null;
 | |
| 
 | |
|             for (int i=0; i < viewStateArrayLength; i++) {
 | |
|                 if (myState[i] != null) {
 | |
|                     return myState;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             // More performant to return null than an array of null values
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         protected override void TrackViewState() {
 | |
|             base.TrackViewState();
 | |
| 
 | |
|             if (_selectedPartChromeStyle != null) {
 | |
|                 ((IStateManager) _selectedPartChromeStyle).TrackViewState();
 | |
|             }
 | |
|             if (_closeVerb != null) {
 | |
|                 ((IStateManager) _closeVerb).TrackViewState();
 | |
|             }
 | |
|             if (_connectVerb != null) {
 | |
|                 ((IStateManager) _connectVerb).TrackViewState();
 | |
|             }
 | |
|             if (_deleteVerb != null) {
 | |
|                 ((IStateManager) _deleteVerb).TrackViewState();
 | |
|             }
 | |
|             if (_editVerb != null) {
 | |
|                 ((IStateManager) _editVerb).TrackViewState();
 | |
|             }
 | |
|             if (_helpVerb != null) {
 | |
|                 ((IStateManager) _helpVerb).TrackViewState();
 | |
|             }
 | |
|             if (_minimizeVerb != null) {
 | |
|                 ((IStateManager) _minimizeVerb).TrackViewState();
 | |
|             }
 | |
|             if (_restoreVerb != null) {
 | |
|                 ((IStateManager) _restoreVerb).TrackViewState();
 | |
|             }
 | |
|             if (_exportVerb != null) {
 | |
|                 ((IStateManager) _exportVerb).TrackViewState();
 | |
|             }
 | |
|             if (_menuPopupStyle != null) {
 | |
|                 ((IStateManager) _menuPopupStyle).TrackViewState();
 | |
|             }
 | |
|             if (_menuLabelStyle != null) {
 | |
|                 ((IStateManager) _menuLabelStyle).TrackViewState();
 | |
|             }
 | |
|             if (_menuLabelHoverStyle != null) {
 | |
|                 ((IStateManager) _menuLabelHoverStyle).TrackViewState();
 | |
|             }
 | |
|             if (_menuCheckImageStyle != null) {
 | |
|                 ((IStateManager) _menuCheckImageStyle).TrackViewState();
 | |
|             }
 | |
|             if (_menuVerbStyle != null) {
 | |
|                 ((IStateManager) _menuVerbStyle).TrackViewState();
 | |
|             }
 | |
|             if (_menuVerbHoverStyle != null) {
 | |
|                 ((IStateManager)_menuVerbHoverStyle).TrackViewState();
 | |
|             }
 | |
|             if (ControlStyleCreated) {
 | |
|                 ((IStateManager) ControlStyle).TrackViewState();
 | |
|             }
 | |
|             if (_titleBarVerbStyle != null) {
 | |
|                 ((IStateManager)_titleBarVerbStyle).TrackViewState();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // Called from WebPartChrome and DesignerWebPartChrome.  Can't be passed as argument to
 | |
|         // RenderWebPart, since the WebPartZoneDesigner calls RenderWebPart as well.
 | |
|         internal WebPartVerbCollection VerbsForWebPart(WebPart webPart) {
 | |
|             WebPartVerbCollection verbs = new WebPartVerbCollection();
 | |
| 
 | |
|             WebPartVerbCollection partVerbs = webPart.Verbs;
 | |
|             if (partVerbs != null) {
 | |
|                 foreach (WebPartVerb verb in partVerbs) {
 | |
|                     if (verb.ServerClickHandler != null) {
 | |
|                         verb.SetEventArgumentPrefix(partVerbEventArgumentWithSeparator);
 | |
|                     }
 | |
|                     verbs.Add(verb);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (_verbs != null) {
 | |
|                 foreach (WebPartVerb verb in _verbs) {
 | |
|                     if (verb.ServerClickHandler != null) {
 | |
|                         verb.SetEventArgumentPrefix(zoneVerbEventArgumentWithSeparator);
 | |
|                     }
 | |
|                     verbs.Add(verb);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             WebPartVerb minimizeVerb = MinimizeVerb;
 | |
|             minimizeVerb.SetEventArgumentPrefix(minimizeEventArgumentWithSeparator);
 | |
|             verbs.Add(minimizeVerb);
 | |
| 
 | |
|             WebPartVerb restoreVerb = RestoreVerb;
 | |
|             restoreVerb.SetEventArgumentPrefix(restoreEventArgumentWithSeparator);
 | |
|             verbs.Add(restoreVerb);
 | |
| 
 | |
|             WebPartVerb closeVerb = CloseVerb;
 | |
|             closeVerb.SetEventArgumentPrefix(closeEventArgumentWithSeparator);
 | |
|             verbs.Add(closeVerb);
 | |
| 
 | |
|             WebPartVerb deleteVerb = DeleteVerb;
 | |
|             deleteVerb.SetEventArgumentPrefix(deleteEventArgumentWithSeparator);
 | |
|             verbs.Add(deleteVerb);
 | |
| 
 | |
|             WebPartVerb editVerb = EditVerb;
 | |
|             editVerb.SetEventArgumentPrefix(editEventArgumentWithSeparator);
 | |
|             verbs.Add(editVerb);
 | |
| 
 | |
|             WebPartVerb connectVerb = ConnectVerb;
 | |
|             connectVerb.SetEventArgumentPrefix(connectEventArgumentWithSeparator);
 | |
|             verbs.Add(connectVerb);
 | |
| 
 | |
|             // Export does not post back
 | |
|             verbs.Add(ExportVerb);
 | |
| 
 | |
|             // Help verb does not post back
 | |
|             verbs.Add(HelpVerb);
 | |
| 
 | |
|             return verbs;
 | |
|         }
 | |
| 
 | |
|         #region Implementation of IPostBackEventHandler
 | |
|         /// <internalonly/>
 | |
|         void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) {
 | |
|             RaisePostBackEvent(eventArgument);
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region Implementation of IWebPartMenuUser
 | |
|         Style IWebPartMenuUser.CheckImageStyle {
 | |
|             get {
 | |
|                 return _menuCheckImageStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.CheckImageUrl {
 | |
|             get {
 | |
|                 string s = MenuCheckImageUrl;
 | |
|                 if (!String.IsNullOrEmpty(s)) {
 | |
|                     s = ResolveClientUrl(s);
 | |
|                 }
 | |
|                 return s;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.ClientID {
 | |
|             get {
 | |
|                 return ClientID;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.PopupImageUrl {
 | |
|             get {
 | |
|                 string s = MenuPopupImageUrl;
 | |
|                 if (!String.IsNullOrEmpty(s)) {
 | |
|                     s = ResolveClientUrl(s);
 | |
|                 }
 | |
|                 return s;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         Style IWebPartMenuUser.ItemHoverStyle {
 | |
|             get {
 | |
|                 return _menuVerbHoverStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         Style IWebPartMenuUser.ItemStyle {
 | |
|             get {
 | |
|                 return _menuVerbStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         Style IWebPartMenuUser.LabelHoverStyle {
 | |
|             get {
 | |
|                 return _menuLabelHoverStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.LabelImageUrl {
 | |
|             get {
 | |
|                 return null;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         Style IWebPartMenuUser.LabelStyle {
 | |
|             get {
 | |
|                 return MenuLabelStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.LabelText {
 | |
|             get {
 | |
|                 return MenuLabelText;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         WebPartMenuStyle IWebPartMenuUser.MenuPopupStyle {
 | |
|             get {
 | |
|                 return _menuPopupStyle;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         Page IWebPartMenuUser.Page {
 | |
|             get {
 | |
|                 return Page;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         string IWebPartMenuUser.PostBackTarget {
 | |
|             get {
 | |
|                 return UniqueID;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         IUrlResolutionService IWebPartMenuUser.UrlResolver {
 | |
|             get {
 | |
|                 return this;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         void IWebPartMenuUser.OnBeginRender(HtmlTextWriter writer) {
 | |
|         }
 | |
| 
 | |
|         void IWebPartMenuUser.OnEndRender(HtmlTextWriter writer) {
 | |
|         }
 | |
|         #endregion
 | |
|     }
 | |
| }
 |