946 lines · 58.0 KB · C#
RawDownload
//******************************************************************************************************//  ClientSideExtensions.cs - Gbtc////  Copyright © 2012, Grid Protection Alliance.  All Rights Reserved.////  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See//  the NOTICE file distributed with this work for additional information regarding copyright ownership.//  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may//  not use this file except in compliance with the License. You may obtain a copy of the License at:////      http://www.opensource.org/licenses/MIT////  Unless agreed to in writing, the subject software distributed under the License is distributed on an//  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the//  License for the specific language governing permissions and limitations.////  Code Modification History://  ----------------------------------------------------------------------------------------------------//  12/22/2010 - Pinal C. Patel//       Generated original version of source code.//  06/15/2011 - Pinal C. Patel//       Added Refresh(), Show(), ShowDialog(), ShowPopup(), Close() and MsgBox() client-side extensions.//  12/20/2012 - Starlynn Danyelle Gilliam//       Modified Header.////****************************************************************************************************** using System;using System.Text;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls; namespace GSF.Web.UI{    #region [ Enumerations ]     /// <summary>    /// Specifies the buttons to be displayed in a message box.    /// </summary>    [Flags]    public enum MsgBoxStyle    {        /// <summary>        /// OK Button.        /// </summary>        OKOnly = 0,        /// <summary>        /// OK and Cancel buttons.        /// </summary>        OKCancel = 1,        /// <summary>        /// Abort,Retry, and Ignore buttons.        /// </summary>        AbortRetryIgnore = 2,        /// <summary>        /// Yes, No, and Cancel buttons.        /// </summary>        YesNoCancel = 3,        /// <summary>        /// Yes and No buttons.        /// </summary>        YesNo = 4,        /// <summary>        /// Retry and Cancel buttons.        /// </summary>        RetryCancel = 5,        /// <summary>        /// Critical message.        /// </summary>        Critical = 16,        /// <summary>        /// Warning query.        /// </summary>        Question = 32,        /// <summary>        /// Warning message.        /// </summary>        Exclamation = 48,        /// <summary>        /// Information message.        /// </summary>        Information = 64,        /// <summary>        /// First button is default.        /// </summary>        DefaultButton1 = 0,        /// <summary>        /// Second button is default.        /// </summary>        DefaultButton2 = 256,        /// <summary>        /// Third button is default.        /// </summary>        DefaultButton3 = 512,        /// <summary>        /// Fourth button is default.        /// </summary>        DefaultButton4 = 768,        /// <summary>        /// Application modal message box.        /// </summary>        ApplicationModal = 0,        /// <summary>        /// System modal message box.        /// </summary>        SystemModal = 4096,    }     #endregion     /// <summary>    /// Defines javascript client-side extensions for web controls.    /// </summary>    public static class ClientSideExtensions    {        /// <summary>        /// Performs JavaScript encoding on given string.        /// </summary>        /// <param name="text">The string to be encoded.</param>        public static string JavaScriptEncode(ref string text)        {            text = text.Replace("\\", "\\\\");            text = text.Replace("'", "\\'");            text = text.Replace("\"", "\\\"");            text = text.Replace(Convert.ToChar(8), '\b');            text = text.Replace(Convert.ToChar(9), '\t');            text = text.Replace(Convert.ToChar(10), '\r');            text = text.Replace(Convert.ToChar(12), '\f');            text = text.Replace(Convert.ToChar(13), '\n');             return text;        }         /// <summary>        /// Decodes JavaScript characters from given string.        /// </summary>        /// <param name="text">The string to be decoded.</param>        public static string JavaScriptDecode(ref string text)        {            text = text.Replace("\\\\", "\\");            text = text.Replace("\\'", "'");            text = text.Replace("\\\"", "\"");            text = text.Replace('\b', Convert.ToChar(8));            text = text.Replace('\t', Convert.ToChar(9));            text = text.Replace('\r', Convert.ToChar(10));            text = text.Replace('\f', Convert.ToChar(12));            text = text.Replace('\n', Convert.ToChar(13));             return text;        }         /// <summary>        /// Registers a default button to be activated when the ENTER key is pressed inside this <paramref name="textbox"/>.        /// </summary>        /// <param name="textbox"><see cref="TextBox"/> for which the default button is to be registered.</param>        /// <param name="control">Button <see cref="Control"/> to be assigned as the default action handler.</param>        public static void SetDefaultButton(this TextBox textbox, Control control)        {            if (!textbox.Page.ClientScript.IsClientScriptBlockRegistered("DefaultButton"))            {                StringBuilder script = new StringBuilder();                script.Append("<script language=\"javascript\">\r\n");                script.Append("   function DefaultButton(e, controlId)\r\n");                script.Append("   {\r\n");                script.Append("       if (e.keyCode == 13 || e.charCode == 13)\r\n");                script.Append("       {\r\n");                script.Append("           e.returnValue = false;\r\n");                script.Append("           e.cancel = true;\r\n");                script.Append("           if (document.getElementById(controlId) != null)\r\n");                script.Append("           {\r\n");                script.Append("               document.getElementById(controlId).click();\r\n");                script.Append("           }\r\n");                script.Append("       }\r\n");                script.Append("   }\r\n");                script.Append("</script>\r\n");                 textbox.Page.ClientScript.RegisterClientScriptBlock(textbox.Page.GetType(), "DefaultButton", script.ToString());            }             textbox.Attributes.Add("OnKeyDown", "javascript:DefaultButton(event, \'" + control.ClientID + "\')");        }         /// <summary>        /// Registers the <paramref name="button"/> to be disabled after one click to prevent multiple postbacks.        /// </summary>        /// <param name="button"><see cref="Button"/> for which submit once script is to be registered.</param>        public static void SetSubmitOnce(this Button button)        {            StringBuilder script = new StringBuilder();            if (button.CausesValidation)            {                script.Append("if (typeof(Page_ClientValidate) == \'function\') {");                script.Append("if (Page_ClientValidate() == false) { return false; }}");            }            script.Append("this.disabled = true;");            script.AppendFormat("{0};", button.Page.ClientScript.GetPostBackEventReference(button, null));             button.OnClientClick = script.ToString();        }         /// <summary>        /// Brings the <paramref name="page"/>'s browser window to the foreground.        /// </summary>        /// <param name="page"><see cref="Page"/> to be brought to the foreground.</param>        public static void BringToFront(this Page page)        {            if (!page.ClientScript.IsStartupScriptRegistered("BringToFront"))            {                StringBuilder script = new StringBuilder();                script.Append("<script language=\"javascript\">\r\n");                script.Append("   window.focus();\r\n");                script.Append("</script>\r\n");                 page.ClientScript.RegisterStartupScript(page.GetType(), "BringToFront", script.ToString());            }        }         /// <summary>        /// Pushes the <paramref name="page"/>'s browser window to the background.        /// </summary>        /// <param name="page"><see cref="Page"/> to be pushed to the background.</param>        public static void PushToBack(this Page page)        {            if (!page.ClientScript.IsStartupScriptRegistered("PushToBack"))            {                StringBuilder script = new StringBuilder();                script.Append("<script language=\"javascript\">\r\n");                script.Append("   window.blur();\r\n");                script.Append("</script>\r\n");                 page.ClientScript.RegisterStartupScript(page.GetType(), "PushToBack", script.ToString());            }        }         /// <summary>        /// Registers this <paramref name="page"/> to perform a page refresh.        /// </summary>        /// <param name="page"><see cref="Page"/> to refresh.</param>        /// <param name="refreshOnLoad">Refreshes the <paramref name="page"/> after the page content has loaded.</param>        public static void Refresh(this Page page, bool refreshOnLoad = false)        {            if (!page.ClientScript.IsClientScriptBlockRegistered("Refresh"))                page.ClientScript.RegisterClientScriptBlock(page.GetType(), "Refresh", GetRefreshScript());             if (refreshOnLoad)            {                // Refresh page after page load.                if (!page.ClientScript.IsStartupScriptRegistered("RefreshPostLoad"))                {                    StringBuilder script = new StringBuilder();                    script.Append("<script language=\"javascript\">\r\n");                    script.Append("   Refresh();\r\n");                    script.Append("</script>\r\n");                     page.ClientScript.RegisterStartupScript(page.GetType(), "RefreshPostLoad", script.ToString());                }            }            else            {                // Refresh page before page load.                if (!page.ClientScript.IsClientScriptBlockRegistered("RefreshPreLoad"))                {                    StringBuilder script = new StringBuilder();                    script.Append("<script language=\"javascript\">\r\n");                    script.Append("   Refresh();\r\n");                    script.Append("</script>\r\n");                     page.ClientScript.RegisterClientScriptBlock(page.GetType(), "RefreshPreLoad", script.ToString());                }            }        }         /// <summary>        /// Registers the <paramref name="control"/> to perform a page refresh.        /// </summary>        /// <param name="control"><see cref="Control"/> that will perform a page refresh when clicked.</param>        public static void Refresh(this Control control)        {            if (!control.Page.ClientScript.IsClientScriptBlockRegistered("Refresh"))                control.Page.ClientScript.RegisterClientScriptBlock(control.Page.GetType(), "Refresh", GetRefreshScript());             HookupScriptToControl(control, "javascript:return(Refresh())", "OnClick");        }         /// <summary>        /// Shows a modeless popup window for the specified web page <paramref name="url"/> when the <paramref name="page"/> has loaded.        /// </summary>        /// <param name="page"><see name="Page"/> that will show the popup window when loaded.</param>        /// <param name="url">Web page url for which the popup windows is to be shown.</param>        /// <param name="height">Height of the popup window.</param>        /// <param name="width">Width of the popup window.</param>        /// <param name="left">Location of the popup window on X-axis.</param>        /// <param name="top">Location of the popup window on Y-axis.</param>        /// <param name="center">True if the popup window is to be centered, otherwise False.</param>        /// <param name="help">True if help button is to be displayed, otherwise False.</param>        /// <param name="resizable">True if the popup window can be resized, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        public static void Show(this Page page, string url, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool help = false, bool resizable = false, bool status = false)        {            if (!page.ClientScript.IsClientScriptBlockRegistered("Show"))                page.ClientScript.RegisterClientScriptBlock(page.GetType(), "Show", GetShowScript());             if (!page.ClientScript.IsStartupScriptRegistered("Show." + url))            {                StringBuilder script = new StringBuilder();                script.Append("<script language=\"javascript\">\r\n");                script.Append("   Show('" + url + "', " + height + ", " + width + ", " + left + ", " + top + ", " +                                            Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                            Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + ");\r\n");                script.Append("</script>\r\n");                 page.ClientScript.RegisterStartupScript(page.GetType(), "Show." + url, script.ToString());            }        }         /// <summary>        /// Shows a modeless popup window for the specified web page <paramref name="url"/> when the <paramref name="control"/> is clicked.        /// </summary>        /// <param name="control"><see name="Control"/> that will show the popup window when clicked.</param>        /// <param name="url">Web page url for which the popup windows is to be shown.</param>        /// <param name="height">Height of the popup window.</param>        /// <param name="width">Width of the popup window.</param>        /// <param name="left">Location of the popup window on X-axis.</param>        /// <param name="top">Location of the popup window on Y-axis.</param>        /// <param name="center">True if the popup window is to be centered, otherwise False.</param>        /// <param name="help">True if help button is to be displayed, otherwise False.</param>        /// <param name="resizable">True if the popup window can be resized, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        public static void Show(this Control control, string url, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool help = false, bool resizable = false, bool status = false)        {            if (!control.Page.ClientScript.IsClientScriptBlockRegistered("Show"))                control.Page.ClientScript.RegisterClientScriptBlock(control.Page.GetType(), "Show", GetShowScript());             HookupScriptToControl(control, "javascript:return(Show('" + url + "', " + height + ", " + width + ", " + left + ", " +                                            top + ", " + Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                            Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + "))", "OnClick");        }         /// <summary>        /// Shows a modal popup window for the specified web page <paramref name="url"/> when the <paramref name="page"/> has loaded.        /// </summary>        /// <param name="page">Web page that will show the popup window when loaded.</param>        /// <param name="url">Web page url for which the popup windows is to be shown.</param>        /// <param name="dialogResultHolder"><see cref="Control"/> whose text is to updated with the text returned by the web page displayed in the popup window.</param>        /// <param name="height">Height of the popup window.</param>        /// <param name="width">Width of the popup window.</param>        /// <param name="left">Location of the popup window on X-axis.</param>        /// <param name="top">Location of the popup window on Y-axis.</param>        /// <param name="center">True if the popup window is to be centered, otherwise False.</param>        /// <param name="help">True if help button is to be displayed, otherwise False.</param>        /// <param name="resizable">True if the popup window can be resized, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        public static void ShowDialog(this Page page, string url, Control dialogResultHolder = null, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool help = false, bool resizable = false, bool status = false)        {            if (!page.ClientScript.IsClientScriptBlockRegistered("ShowDialog"))                page.ClientScript.RegisterClientScriptBlock(page.GetType(), "ShowDialog", GetShowDialogScript());             if (!page.ClientScript.IsStartupScriptRegistered("ShowDialog." + url))            {                StringBuilder script = new StringBuilder();                script.Append("<input type=\"hidden\" name=\"GSF_EVENT_TARGET\" value=\"\" />\r\n");                script.Append("<input type=\"hidden\" name=\"GSF_EVENT_ARGUMENT\" value=\"\" />\r\n");                script.Append("<script language=\"javascript\">\r\n");                if (dialogResultHolder != null)                {                    script.Append("   ShowDialog('" + url + "', '" + dialogResultHolder.ClientID + "', " + height + ", " + width + ", " +                                                    left + ", " + top + ", " + Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                                    Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + ");\r\n");                }                else                {                    script.Append("   if (ShowDialog('" + url + "', null, " + height + ", " + width + ", " + left + ", " + top + ", " +                                                        Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                                        Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + "))\r\n");                    script.Append("   {\r\n");                    foreach (Control control in page.Controls)                    {                        if (control is HtmlForm)                        {                            script.Append("       " + control.ClientID + ".GSF_EVENT_TARGET.value = 'ShowDialog';\r\n");                            script.Append("       " + control.ClientID + ".GSF_EVENT_ARGUMENT.value = '" + url + "';\r\n");                            script.Append("       document." + control.ClientID + ".submit();\r\n");                            break;                        }                    }                    script.Append("   }\r\n");                }                script.Append("</script>\r\n");                 page.ClientScript.RegisterStartupScript(page.GetType(), "ShowDialog." + url, script.ToString());            }        }         /// <summary>        /// Shows a modal popup window for the specified web page <paramref name="url"/> when the <paramref name="control"/> is clicked.        /// </summary>        /// <param name="control"><see cref="Control"/> that will show the popup window when clicked.</param>        /// <param name="url">Web page url for which the popup windows is to be shown.</param>        /// <param name="dialogResultHolder"><see cref="Control"/> whose text is to updated with the text returned by the web page displayed in the popup window.</param>        /// <param name="height">Height of the popup window.</param>        /// <param name="width">Width of the popup window.</param>        /// <param name="left">Location of the popup window on X-axis.</param>        /// <param name="top">Location of the popup window on Y-axis.</param>        /// <param name="center">True if the popup window is to be centered, otherwise False.</param>        /// <param name="help">True if help button is to be displayed, otherwise False.</param>        /// <param name="resizable">True if the popup window can be resized, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        public static void ShowDialog(this Control control, string url, Control dialogResultHolder = null, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool help = false, bool resizable = false, bool status = false)        {            if (!control.Page.ClientScript.IsClientScriptBlockRegistered("ShowDialog"))                control.Page.ClientScript.RegisterClientScriptBlock(control.Page.GetType(), "ShowDialog", GetShowDialogScript());             if (dialogResultHolder != null)            {                HookupScriptToControl(control, "javascript:return(ShowDialog('" + url + "', '" + dialogResultHolder.ClientID + "', " +                                                                    height + ", " + width + ", " + left + ", " + top + ", " +                                                                    Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                                                    Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + "))", "OnClick");            }            else            {                HookupScriptToControl(control, "javascript:return(ShowDialog('" + url + "', null, " + height + ", " + width + ", " + left + ", " + top + ", " +                                                                                Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(help)) + ", " +                                                                                Math.Abs(Convert.ToInt32(resizable)) + ", " + Math.Abs(Convert.ToInt32(status)) + "))", "OnClick");            }        }         /// <summary>        /// Shows a popup for the specified web page <paramref name="url"/> when the <paramref name="page"/> has loaded.        /// </summary>        /// <param name="page"><see cref="Page"/> that will show the popup when loaded.</param>        /// <param name="url">Web page url for which the popup is to be shown.</param>        /// <param name="height">Height of the popup.</param>        /// <param name="width">Width of the popup.</param>        /// <param name="left">Location of the popup on X-axis.</param>        /// <param name="top">Location of the popup on Y-axis.</param>        /// <param name="center">True if the popup is to be centered, otherwise False.</param>        /// <param name="resizable">True if the popup can be resized, otherwise False.</param>        /// <param name="scrollbars">True is the scrollbars are to be displayed, otherwise False.</param>        /// <param name="toolbar">True if the toolbar is to be displayed, otherwise False.</param>        /// <param name="menubar">True if the menu bar is to be displayed, otherwise False.</param>        /// <param name="location">True if the address bar is to be displayed, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        /// <param name="directories">True if the directories buttons (Netscape only) are to be displayed, otherwise False.</param>        public static void ShowPopup(this Page page, string url, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool resizable = false, bool scrollbars = false, bool toolbar = false, bool menubar = false, bool location = false, bool status = false, bool directories = false)        {            if (!page.ClientScript.IsClientScriptBlockRegistered("ShowPopup"))                page.ClientScript.RegisterClientScriptBlock(page.GetType(), "ShowPopup", GetShowPopupScript());             if (!page.ClientScript.IsStartupScriptRegistered("ShowPopup." + url))            {                StringBuilder script = new StringBuilder();                script.Append("<script language=\"javascript\">\r\n");                script.Append("   ShowPopup('" + url + "', " + height + ", " + width + ", " + left + ", " + top + ", " +                                                Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(resizable)) + ", " +                                                Math.Abs(Convert.ToInt32(scrollbars)) + ", " + Math.Abs(Convert.ToInt32(toolbar)) + ", " +                                                Math.Abs(Convert.ToInt32(menubar)) + ", " + Math.Abs(Convert.ToInt32(location)) + ", " +                                                Math.Abs(Convert.ToInt32(status)) + ", " + Math.Abs(Convert.ToInt32(directories)) + ");\r\n");                script.Append("</script>\r\n");                 page.ClientScript.RegisterStartupScript(page.GetType(), "ShowPopup." + url, script.ToString());            }        }         /// <summary>        /// Shows a popup for the specified web page <paramref name="url"/> when the <paramref name="control"/> is clicked.        /// </summary>        /// <param name="control"><see cref="Control"/> that will show the popup when clicked.</param>        /// <param name="url">Web page url for which the popup is to be shown.</param>        /// <param name="height">Height of the popup.</param>        /// <param name="width">Width of the popup.</param>        /// <param name="left">Location of the popup on X-axis.</param>        /// <param name="top">Location of the popup on Y-axis.</param>        /// <param name="center">True if the popup is to be centered, otherwise False.</param>        /// <param name="resizable">True if the popup can be resized, otherwise False.</param>        /// <param name="scrollbars">True is the scrollbars are to be displayed, otherwise False.</param>        /// <param name="toolbar">True if the toolbar is to be displayed, otherwise False.</param>        /// <param name="menubar">True if the menu bar is to be displayed, otherwise False.</param>        /// <param name="location">True if the address bar is to be displayed, otherwise False.</param>        /// <param name="status">True if the status bar is to be displayed, otherwise False.</param>        /// <param name="directories">True if the directories buttons (Netscape only) are to be displayed, otherwise False.</param>        public static void ShowPopup(this Control control, string url, int height = 400, int width = 600, int left = 0, int top = 0, bool center = true, bool resizable = false, bool scrollbars = false, bool toolbar = false, bool menubar = false, bool location = false, bool status = false, bool directories = false)        {            if (!control.Page.ClientScript.IsClientScriptBlockRegistered("ShowPopup"))                control.Page.ClientScript.RegisterClientScriptBlock(control.Page.GetType(), "ShowPopup", GetShowPopupScript());             HookupScriptToControl(control, "javascript:return(ShowPopup('" + url + "', " + height + ", " + width + ", " + left + ", " + top + ", " +                                                                Math.Abs(Convert.ToInt32(center)) + ", " + Math.Abs(Convert.ToInt32(resizable)) + ", " +                                                                Math.Abs(Convert.ToInt32(scrollbars)) + ", " + Math.Abs(Convert.ToInt32(toolbar)) + ", " +                                                                Math.Abs(Convert.ToInt32(menubar)) + ", " + Math.Abs(Convert.ToInt32(location)) + ", " +                                                                Math.Abs(Convert.ToInt32(status)) + ", " + Math.Abs(Convert.ToInt32(directories)) + "))", "OnClick");        }         /// <summary>        /// Closes the current <paramref name="page"/> when it has finished loading in the browser and returns the specified <paramref name="returnValue"/> to the web page that opened it.        /// </summary>        /// <param name="page"><see cref="Page"/> to be closed.</param>        /// <param name="returnValue">Value to be returned to the parent web page.</param>        public static void Close(this Page page, string returnValue = null)

Lines 1–500 of 946.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t