Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartMenu.cs / 1 / WebPartMenu.cs
//------------------------------------------------------------------------------
//
// 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;
using System.Web.Handlers;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Util;
internal sealed class WebPartMenu {
private static string _defaultCheckImageUrl;
private int _cssStyleIndex;
private IWebPartMenuUser _menuUser;
public WebPartMenu(IWebPartMenuUser menuUser) {
_menuUser = menuUser;
}
private static string DefaultCheckImageUrl {
get {
if (_defaultCheckImageUrl == null) {
_defaultCheckImageUrl = AssemblyResourceLoader.GetWebResourceUrl(typeof(WebPartMenu), "WebPartMenu_Check.gif");
}
return _defaultCheckImageUrl;
}
}
private void RegisterStartupScript(string clientID) {
string menuItemStyleCss = String.Empty;
string menuItemHoverStyleCss = String.Empty;
Style itemStyle = _menuUser.ItemStyle;
if (itemStyle != null) {
menuItemStyleCss = itemStyle.GetStyleAttributes(_menuUser.UrlResolver).Value;
}
Style itemHoverStyle = _menuUser.ItemHoverStyle;
if (itemHoverStyle != null) {
menuItemHoverStyleCss = itemHoverStyle.GetStyleAttributes(_menuUser.UrlResolver).Value;
}
string labelHoverColor = String.Empty;
string labelHoverClass = String.Empty;
Style labelHoverStyle = _menuUser.LabelHoverStyle;
if (labelHoverStyle != null) {
Color foreColor = labelHoverStyle.ForeColor;
if (foreColor.IsEmpty == false) {
labelHoverColor = ColorTranslator.ToHtml(foreColor);
}
labelHoverClass = labelHoverStyle.RegisteredCssClass;
}
// Using concatenation instead of String.Format for perf
// (here, the compiler will build an object[] and call String.Concat only once).
string script = @"
";
if (_menuUser.Page != null) {
_menuUser.Page.ClientScript.RegisterStartupScript((Control)_menuUser, typeof(WebPartMenu), clientID, script, false);
IScriptManager scriptManager = _menuUser.Page.ScriptManager;
if ((scriptManager != null) && scriptManager.SupportsPartialRendering) {
scriptManager.RegisterDispose((Control)_menuUser,
"document.getElementById('" + clientID + "').__menu.Dispose();");
}
}
}
private void RegisterStyle(Style style) {
Debug.Assert(_menuUser.Page != null && _menuUser.Page.SupportsStyleSheets);
if (style != null && !style.IsEmpty) {
// The style should not have already been registered
Debug.Assert(style.RegisteredCssClass.Length == 0);
string name = _menuUser.ClientID + "__Menu_" + _cssStyleIndex++.ToString(NumberFormatInfo.InvariantInfo);
_menuUser.Page.Header.StyleSheet.CreateStyleRule(style, _menuUser.UrlResolver, "." + name);
style.SetRegisteredCssClass(name);
}
}
public void RegisterStyles() {
// Assert is fine here as the class is internal
Debug.Assert(_menuUser.Page != null && _menuUser.Page.SupportsStyleSheets);
// Registering the static label style before hover so hover takes precedence
RegisterStyle(_menuUser.LabelStyle);
RegisterStyle(_menuUser.LabelHoverStyle);
}
public void Render(HtmlTextWriter writer, string clientID) {
RenderLabel(writer, clientID, null);
}
#if ORCAS
// We only need this method for the WebPartPageMenu, which is only in Orcas
public void Render(HtmlTextWriter writer, ICollection verbs, string clientID) {
Render(writer, verbs, clientID, null, null);
}
#endif
public void Render(HtmlTextWriter writer, ICollection verbs, string clientID, WebPart associatedWebPart,
WebPartManager webPartManager) {
// This method should only be called when Zone.RenderClientScript is true, which means
// WebPartManager is not null.
Debug.Assert(webPartManager != null);
RegisterStartupScript(clientID);
RenderLabel(writer, clientID, associatedWebPart);
RenderMenuPopup(writer, verbs, clientID, associatedWebPart, webPartManager);
}
private void RenderLabel(HtmlTextWriter writer, string clientID, WebPart associatedWebPart) {
_menuUser.OnBeginRender(writer);
if (associatedWebPart != null) {
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID);
Style labelStyle = _menuUser.LabelStyle;
if (labelStyle != null) {
labelStyle.AddAttributesToRender(writer, _menuUser as WebControl);
}
}
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "hand");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "inline-block");
writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "1px");
writer.AddStyleAttribute(HtmlTextWriterStyle.TextDecoration, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
string labelImageUrl = _menuUser.LabelImageUrl;
string text = _menuUser.LabelText;
if (!String.IsNullOrEmpty(labelImageUrl)) {
writer.AddAttribute(HtmlTextWriterAttribute.Src, labelImageUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Alt,
(!String.IsNullOrEmpty(text) ?
text :
SR.GetString(SR.WebPartMenu_DefaultDropDownAlternateText)),
true);
writer.AddStyleAttribute("vertical-align", "middle");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
writer.Write(" ");
}
if (!String.IsNullOrEmpty(text)) {
writer.Write(text);
writer.Write(" ");
}
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID + "Popup");
string popupImageUrl = _menuUser.PopupImageUrl;
if (!String.IsNullOrEmpty(popupImageUrl)) {
writer.AddAttribute(HtmlTextWriterAttribute.Src, popupImageUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Alt,
(!String.IsNullOrEmpty(text) ?
text :
SR.GetString(SR.WebPartMenu_DefaultDropDownAlternateText)),
true);
writer.AddStyleAttribute("vertical-align", "middle");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
}
else {
// Render down arrow using windows font
writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "Marlett");
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "8pt");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.Write("u");
writer.RenderEndTag();
}
writer.RenderEndTag(); // Span
_menuUser.OnEndRender(writer);
}
private void RenderMenuPopup(HtmlTextWriter writer, ICollection verbs, string clientID, WebPart associatedWebPart,
WebPartManager webPartManager) {
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID + "Menu");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
bool popupSpansFullExtent = true;
WebPartMenuStyle menuStyle = _menuUser.MenuPopupStyle;
if (menuStyle != null) {
menuStyle.AddAttributesToRender(writer, _menuUser as WebControl);
popupSpansFullExtent = menuStyle.Width.IsEmpty;
}
else {
// generate attributes corresponding to defaults on WebPartMenuStyle
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "1");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderCollapse, "collapse");
}
if (popupSpansFullExtent) {
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
}
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddStyleAttribute(HtmlTextWriterStyle.WhiteSpace, "nowrap");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
bool isParentEnabled = associatedWebPart.Zone.IsEnabled;
foreach (WebPartVerb verb in verbs) {
Debug.Assert(verb != null);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
string alt;
if (associatedWebPart != null) {
alt = String.Format(CultureInfo.CurrentCulture, verb.Description, associatedWebPart.DisplayTitle);
}
else {
alt = verb.Description;
}
if (alt.Length != 0) {
writer.AddAttribute(HtmlTextWriterAttribute.Title, alt);
}
bool isEnabled = isParentEnabled && verb.Enabled;
// Special case help, export, etc.
if (verb is WebPartHelpVerb) {
Debug.Assert(associatedWebPart != null);
string resolvedHelpUrl =
((IUrlResolutionService)associatedWebPart).ResolveClientUrl(associatedWebPart.HelpUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
"document.body.__wpm.ShowHelp('" +
Util.QuoteJScriptString(resolvedHelpUrl) +
"', " +
((int)associatedWebPart.HelpMode).ToString(CultureInfo.InvariantCulture) + ")");
}
}
else if (verb is WebPartExportVerb) {
Debug.Assert(associatedWebPart != null);
string exportUrl = webPartManager.GetExportUrl(associatedWebPart);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
"document.body.__wpm.ExportWebPart('" +
Util.QuoteJScriptString(exportUrl) +
((associatedWebPart.ExportMode == WebPartExportMode.All) ?
"', true, false)" :
"', false, false)"));
}
}
else {
string target = _menuUser.PostBackTarget;
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
string eventArgument = verb.EventArgument;
if (associatedWebPart != null) {
eventArgument = verb.GetEventArgument(associatedWebPart.ID);
}
string submitScript = null;
if (!String.IsNullOrEmpty(eventArgument)) {
submitScript = "document.body.__wpm.SubmitPage('" +
Util.QuoteJScriptString(target) +
"', '" +
Util.QuoteJScriptString(eventArgument) +
"');";
_menuUser.Page.ClientScript.RegisterForEventValidation(target, eventArgument);
}
string clientClickScript = null;
if (!String.IsNullOrEmpty(verb.ClientClickHandler)) {
clientClickScript = "document.body.__wpm.Execute('" +
Util.QuoteJScriptString(Util.EnsureEndWithSemiColon(verb.ClientClickHandler)) +
"')";
}
// There must be either an EventArgument or a ClientClickHandler
Debug.Assert(submitScript != null || clientClickScript != null);
string onclick = String.Empty;
if (submitScript != null && clientClickScript != null) {
onclick = "if(" + clientClickScript + "){" + submitScript + "}";
}
else if (submitScript != null) {
onclick = submitScript;
}
else if (clientClickScript != null) {
onclick = clientClickScript;
}
if (verb is WebPartCloseVerb) {
Debug.Assert(associatedWebPart != null);
// PERF: First check if this WebPart even has provider connection points
ProviderConnectionPointCollection connectionPoints =
webPartManager.GetProviderConnectionPoints(associatedWebPart);
if (connectionPoints != null && connectionPoints.Count > 0 &&
webPartManager.Connections.ContainsProvider(associatedWebPart)) {
onclick = "if(document.body.__wpmCloseProviderWarning.length == 0 || " +
"confirm(document.body.__wpmCloseProviderWarning)){" + onclick + "}";
}
}
else if (verb is WebPartDeleteVerb) {
onclick = "if(document.body.__wpmDeleteWarning.length == 0 || " +
"confirm(document.body.__wpmDeleteWarning)){" + onclick + "}";
}
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, onclick);
}
}
writer.AddAttribute(HtmlTextWriterAttribute.Class, "menuItem");
if (verb.Enabled == false) {
writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
writer.RenderBeginTag(HtmlTextWriterTag.A);
string img = verb.ImageUrl;
if (img.Length != 0) {
img = _menuUser.UrlResolver.ResolveClientUrl(img);
}
else {
if (verb.Checked) {
img = _menuUser.CheckImageUrl;
if (img.Length == 0) {
img = DefaultCheckImageUrl;
}
}
else {
img = webPartManager.SpacerImageUrl;
}
}
writer.AddAttribute(HtmlTextWriterAttribute.Src, img);
writer.AddAttribute(HtmlTextWriterAttribute.Alt, alt, true);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "16");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "16");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.AddStyleAttribute("vertical-align", "middle");
if (verb.Checked) {
Style checkImageStyle = _menuUser.CheckImageStyle;
if (checkImageStyle != null) {
checkImageStyle.AddAttributesToRender(writer, _menuUser as WebControl);
}
}
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag(); // Img
writer.Write(" ");
writer.Write(verb.Text);
writer.Write(" ");
writer.RenderEndTag(); // A
writer.RenderEndTag(); // Div
}
writer.RenderEndTag(); // Td
writer.RenderEndTag(); // Tr
writer.RenderEndTag(); // Table
writer.RenderEndTag(); // Div
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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;
using System.Web.Handlers;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Util;
internal sealed class WebPartMenu {
private static string _defaultCheckImageUrl;
private int _cssStyleIndex;
private IWebPartMenuUser _menuUser;
public WebPartMenu(IWebPartMenuUser menuUser) {
_menuUser = menuUser;
}
private static string DefaultCheckImageUrl {
get {
if (_defaultCheckImageUrl == null) {
_defaultCheckImageUrl = AssemblyResourceLoader.GetWebResourceUrl(typeof(WebPartMenu), "WebPartMenu_Check.gif");
}
return _defaultCheckImageUrl;
}
}
private void RegisterStartupScript(string clientID) {
string menuItemStyleCss = String.Empty;
string menuItemHoverStyleCss = String.Empty;
Style itemStyle = _menuUser.ItemStyle;
if (itemStyle != null) {
menuItemStyleCss = itemStyle.GetStyleAttributes(_menuUser.UrlResolver).Value;
}
Style itemHoverStyle = _menuUser.ItemHoverStyle;
if (itemHoverStyle != null) {
menuItemHoverStyleCss = itemHoverStyle.GetStyleAttributes(_menuUser.UrlResolver).Value;
}
string labelHoverColor = String.Empty;
string labelHoverClass = String.Empty;
Style labelHoverStyle = _menuUser.LabelHoverStyle;
if (labelHoverStyle != null) {
Color foreColor = labelHoverStyle.ForeColor;
if (foreColor.IsEmpty == false) {
labelHoverColor = ColorTranslator.ToHtml(foreColor);
}
labelHoverClass = labelHoverStyle.RegisteredCssClass;
}
// Using concatenation instead of String.Format for perf
// (here, the compiler will build an object[] and call String.Concat only once).
string script = @"
";
if (_menuUser.Page != null) {
_menuUser.Page.ClientScript.RegisterStartupScript((Control)_menuUser, typeof(WebPartMenu), clientID, script, false);
IScriptManager scriptManager = _menuUser.Page.ScriptManager;
if ((scriptManager != null) && scriptManager.SupportsPartialRendering) {
scriptManager.RegisterDispose((Control)_menuUser,
"document.getElementById('" + clientID + "').__menu.Dispose();");
}
}
}
private void RegisterStyle(Style style) {
Debug.Assert(_menuUser.Page != null && _menuUser.Page.SupportsStyleSheets);
if (style != null && !style.IsEmpty) {
// The style should not have already been registered
Debug.Assert(style.RegisteredCssClass.Length == 0);
string name = _menuUser.ClientID + "__Menu_" + _cssStyleIndex++.ToString(NumberFormatInfo.InvariantInfo);
_menuUser.Page.Header.StyleSheet.CreateStyleRule(style, _menuUser.UrlResolver, "." + name);
style.SetRegisteredCssClass(name);
}
}
public void RegisterStyles() {
// Assert is fine here as the class is internal
Debug.Assert(_menuUser.Page != null && _menuUser.Page.SupportsStyleSheets);
// Registering the static label style before hover so hover takes precedence
RegisterStyle(_menuUser.LabelStyle);
RegisterStyle(_menuUser.LabelHoverStyle);
}
public void Render(HtmlTextWriter writer, string clientID) {
RenderLabel(writer, clientID, null);
}
#if ORCAS
// We only need this method for the WebPartPageMenu, which is only in Orcas
public void Render(HtmlTextWriter writer, ICollection verbs, string clientID) {
Render(writer, verbs, clientID, null, null);
}
#endif
public void Render(HtmlTextWriter writer, ICollection verbs, string clientID, WebPart associatedWebPart,
WebPartManager webPartManager) {
// This method should only be called when Zone.RenderClientScript is true, which means
// WebPartManager is not null.
Debug.Assert(webPartManager != null);
RegisterStartupScript(clientID);
RenderLabel(writer, clientID, associatedWebPart);
RenderMenuPopup(writer, verbs, clientID, associatedWebPart, webPartManager);
}
private void RenderLabel(HtmlTextWriter writer, string clientID, WebPart associatedWebPart) {
_menuUser.OnBeginRender(writer);
if (associatedWebPart != null) {
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID);
Style labelStyle = _menuUser.LabelStyle;
if (labelStyle != null) {
labelStyle.AddAttributesToRender(writer, _menuUser as WebControl);
}
}
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "hand");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "inline-block");
writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "1px");
writer.AddStyleAttribute(HtmlTextWriterStyle.TextDecoration, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
string labelImageUrl = _menuUser.LabelImageUrl;
string text = _menuUser.LabelText;
if (!String.IsNullOrEmpty(labelImageUrl)) {
writer.AddAttribute(HtmlTextWriterAttribute.Src, labelImageUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Alt,
(!String.IsNullOrEmpty(text) ?
text :
SR.GetString(SR.WebPartMenu_DefaultDropDownAlternateText)),
true);
writer.AddStyleAttribute("vertical-align", "middle");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
writer.Write(" ");
}
if (!String.IsNullOrEmpty(text)) {
writer.Write(text);
writer.Write(" ");
}
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID + "Popup");
string popupImageUrl = _menuUser.PopupImageUrl;
if (!String.IsNullOrEmpty(popupImageUrl)) {
writer.AddAttribute(HtmlTextWriterAttribute.Src, popupImageUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Alt,
(!String.IsNullOrEmpty(text) ?
text :
SR.GetString(SR.WebPartMenu_DefaultDropDownAlternateText)),
true);
writer.AddStyleAttribute("vertical-align", "middle");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();
}
else {
// Render down arrow using windows font
writer.AddStyleAttribute(HtmlTextWriterStyle.FontFamily, "Marlett");
writer.AddStyleAttribute(HtmlTextWriterStyle.FontSize, "8pt");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.Write("u");
writer.RenderEndTag();
}
writer.RenderEndTag(); // Span
_menuUser.OnEndRender(writer);
}
private void RenderMenuPopup(HtmlTextWriter writer, ICollection verbs, string clientID, WebPart associatedWebPart,
WebPartManager webPartManager) {
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID + "Menu");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
bool popupSpansFullExtent = true;
WebPartMenuStyle menuStyle = _menuUser.MenuPopupStyle;
if (menuStyle != null) {
menuStyle.AddAttributesToRender(writer, _menuUser as WebControl);
popupSpansFullExtent = menuStyle.Width.IsEmpty;
}
else {
// generate attributes corresponding to defaults on WebPartMenuStyle
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "1");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderCollapse, "collapse");
}
if (popupSpansFullExtent) {
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
}
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.AddStyleAttribute(HtmlTextWriterStyle.WhiteSpace, "nowrap");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
bool isParentEnabled = associatedWebPart.Zone.IsEnabled;
foreach (WebPartVerb verb in verbs) {
Debug.Assert(verb != null);
writer.RenderBeginTag(HtmlTextWriterTag.Div);
string alt;
if (associatedWebPart != null) {
alt = String.Format(CultureInfo.CurrentCulture, verb.Description, associatedWebPart.DisplayTitle);
}
else {
alt = verb.Description;
}
if (alt.Length != 0) {
writer.AddAttribute(HtmlTextWriterAttribute.Title, alt);
}
bool isEnabled = isParentEnabled && verb.Enabled;
// Special case help, export, etc.
if (verb is WebPartHelpVerb) {
Debug.Assert(associatedWebPart != null);
string resolvedHelpUrl =
((IUrlResolutionService)associatedWebPart).ResolveClientUrl(associatedWebPart.HelpUrl);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
"document.body.__wpm.ShowHelp('" +
Util.QuoteJScriptString(resolvedHelpUrl) +
"', " +
((int)associatedWebPart.HelpMode).ToString(CultureInfo.InvariantCulture) + ")");
}
}
else if (verb is WebPartExportVerb) {
Debug.Assert(associatedWebPart != null);
string exportUrl = webPartManager.GetExportUrl(associatedWebPart);
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,
"document.body.__wpm.ExportWebPart('" +
Util.QuoteJScriptString(exportUrl) +
((associatedWebPart.ExportMode == WebPartExportMode.All) ?
"', true, false)" :
"', false, false)"));
}
}
else {
string target = _menuUser.PostBackTarget;
writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:void(0)");
if (isEnabled) {
string eventArgument = verb.EventArgument;
if (associatedWebPart != null) {
eventArgument = verb.GetEventArgument(associatedWebPart.ID);
}
string submitScript = null;
if (!String.IsNullOrEmpty(eventArgument)) {
submitScript = "document.body.__wpm.SubmitPage('" +
Util.QuoteJScriptString(target) +
"', '" +
Util.QuoteJScriptString(eventArgument) +
"');";
_menuUser.Page.ClientScript.RegisterForEventValidation(target, eventArgument);
}
string clientClickScript = null;
if (!String.IsNullOrEmpty(verb.ClientClickHandler)) {
clientClickScript = "document.body.__wpm.Execute('" +
Util.QuoteJScriptString(Util.EnsureEndWithSemiColon(verb.ClientClickHandler)) +
"')";
}
// There must be either an EventArgument or a ClientClickHandler
Debug.Assert(submitScript != null || clientClickScript != null);
string onclick = String.Empty;
if (submitScript != null && clientClickScript != null) {
onclick = "if(" + clientClickScript + "){" + submitScript + "}";
}
else if (submitScript != null) {
onclick = submitScript;
}
else if (clientClickScript != null) {
onclick = clientClickScript;
}
if (verb is WebPartCloseVerb) {
Debug.Assert(associatedWebPart != null);
// PERF: First check if this WebPart even has provider connection points
ProviderConnectionPointCollection connectionPoints =
webPartManager.GetProviderConnectionPoints(associatedWebPart);
if (connectionPoints != null && connectionPoints.Count > 0 &&
webPartManager.Connections.ContainsProvider(associatedWebPart)) {
onclick = "if(document.body.__wpmCloseProviderWarning.length == 0 || " +
"confirm(document.body.__wpmCloseProviderWarning)){" + onclick + "}";
}
}
else if (verb is WebPartDeleteVerb) {
onclick = "if(document.body.__wpmDeleteWarning.length == 0 || " +
"confirm(document.body.__wpmDeleteWarning)){" + onclick + "}";
}
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, onclick);
}
}
writer.AddAttribute(HtmlTextWriterAttribute.Class, "menuItem");
if (verb.Enabled == false) {
writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
}
writer.RenderBeginTag(HtmlTextWriterTag.A);
string img = verb.ImageUrl;
if (img.Length != 0) {
img = _menuUser.UrlResolver.ResolveClientUrl(img);
}
else {
if (verb.Checked) {
img = _menuUser.CheckImageUrl;
if (img.Length == 0) {
img = DefaultCheckImageUrl;
}
}
else {
img = webPartManager.SpacerImageUrl;
}
}
writer.AddAttribute(HtmlTextWriterAttribute.Src, img);
writer.AddAttribute(HtmlTextWriterAttribute.Alt, alt, true);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "16");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "16");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.AddStyleAttribute("vertical-align", "middle");
if (verb.Checked) {
Style checkImageStyle = _menuUser.CheckImageStyle;
if (checkImageStyle != null) {
checkImageStyle.AddAttributesToRender(writer, _menuUser as WebControl);
}
}
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag(); // Img
writer.Write(" ");
writer.Write(verb.Text);
writer.Write(" ");
writer.RenderEndTag(); // A
writer.RenderEndTag(); // Div
}
writer.RenderEndTag(); // Td
writer.RenderEndTag(); // Tr
writer.RenderEndTag(); // Table
writer.RenderEndTag(); // Div
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- sqlnorm.cs
- FixedSOMContainer.cs
- ListItemConverter.cs
- DataDesignUtil.cs
- ToolStripPanelCell.cs
- ClientApiGenerator.cs
- EnumDataContract.cs
- XmlBufferReader.cs
- OneOfElement.cs
- HttpListenerResponse.cs
- ComponentFactoryHelpers.cs
- DataGridItemCollection.cs
- SafeRightsManagementQueryHandle.cs
- TypeUsage.cs
- ComponentDispatcher.cs
- ObjectConverter.cs
- NameValuePermission.cs
- RecipientInfo.cs
- Wildcard.cs
- XmlArrayItemAttributes.cs
- OleDbErrorCollection.cs
- StylusTouchDevice.cs
- DocumentCollection.cs
- XmlSchemaAttributeGroupRef.cs
- XmlNamespaceDeclarationsAttribute.cs
- Visual3DCollection.cs
- BidOverLoads.cs
- DependencyObjectValidator.cs
- ObjectDataSourceMethodEditor.cs
- SettingsSection.cs
- SqlFunctionAttribute.cs
- FlowDecisionLabelFeature.cs
- InheritanceUI.cs
- AttributeCollection.cs
- DataMisalignedException.cs
- ManualWorkflowSchedulerService.cs
- DataGridViewCellCancelEventArgs.cs
- MemoryMappedViewAccessor.cs
- ObjectQuery_EntitySqlExtensions.cs
- PropertyEmitter.cs
- FieldAccessException.cs
- IndexingContentUnit.cs
- ClientClassGenerator.cs
- RuntimeConfig.cs
- FixedPageProcessor.cs
- SqlWebEventProvider.cs
- UnmanagedMemoryStreamWrapper.cs
- QilBinary.cs
- SmiEventSink.cs
- KnownColorTable.cs
- PersonalizationAdministration.cs
- ResourceReader.cs
- MethodRental.cs
- GCHandleCookieTable.cs
- LoginName.cs
- TypeUtils.cs
- DropDownButton.cs
- OperatorExpressions.cs
- ValidationEventArgs.cs
- HeaderedItemsControl.cs
- DbTransaction.cs
- OracleColumn.cs
- Expression.cs
- XamlValidatingReader.cs
- LineBreakRecord.cs
- StreamUpgradeProvider.cs
- ListMarkerLine.cs
- PenLineCapValidation.cs
- TaskResultSetter.cs
- StylesEditorDialog.cs
- ExtendLockCommand.cs
- ResourceProviderFactory.cs
- ProxyManager.cs
- CellPartitioner.cs
- _TimerThread.cs
- HttpCapabilitiesBase.cs
- HttpProfileGroupBase.cs
- CheckBox.cs
- DataGridDetailsPresenter.cs
- IERequestCache.cs
- PageParserFilter.cs
- PartManifestEntry.cs
- ParameterEditorUserControl.cs
- SmtpLoginAuthenticationModule.cs
- SqlDataSourceCommandEventArgs.cs
- EventLogPermissionEntry.cs
- WebPartConnectVerb.cs
- Hex.cs
- ProfileBuildProvider.cs
- StyleSheetRefUrlEditor.cs
- RuntimeVariableList.cs
- SynchronizationContext.cs
- SqlDataSourceCommandEventArgs.cs
- SystemIPInterfaceStatistics.cs
- EntityContainerAssociationSet.cs
- NavigationPropertyEmitter.cs
- ColorAnimationUsingKeyFrames.cs
- Scripts.cs
- MailBnfHelper.cs
- FontCacheUtil.cs