Common_ContextMenu_CSharp\App_Code\SimpleTaskContextMenu_CSharp.cs
// Copyright 2010 ESRI // // All rights reserved under the copyright laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See the use restrictions. // using System; using System.Collections.Generic; using System.Text; using System.Web.UI; using System.Drawing; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Collections.Specialized; using ESRI.ArcGIS.ADF.Web.UI.WebControls; using System.ComponentModel; namespace SimpleTaskContextMenu { [ToolboxData("<{0}:SimpleTaskContextMenu_CSharp runat=\"server\" Width=\"100px\" BackColor=\"White\" BorderColor=\"Blue\" BorderWidth=\"1px\"> </{0}:SimpleTaskContextMenu_CSharp>")] public class SimpleTaskContextMenu_CSharp : FloatingPanelTask { private TextBox textBox = null; private HtmlInputButton button = null; ContextMenu customContextMenuSimpleResult; TaskResults _taskResults = null; [Browsable(true)] [Category("Appearance")] [DefaultValue("Execute")] [PersistenceMode(PersistenceMode.Attribute)] public string ButtonText { get { object o = StateManager.GetProperty("buttonText"); return (o == null) ? "Execute" : o as string; } set { StateManager.SetProperty("buttonText", value); } } private TaskResults TaskResultsInstance { get { if ((_taskResults == null) && (TaskResultsContainers[0] != null)) _taskResults = Utility.FindControl(TaskResultsContainers[0].Name, Page) as TaskResults; return _taskResults; } } protected override void OnLoad(EventArgs e) { base.OnLoad(e); TaskResultsInstance.NodeClicked += new TreeViewPlusNodeClickedEventHandler(TaskResults_NodeClicked); } // Handle an event on the TaskResults control void TaskResults_NodeClicked(object sender, TreeViewPlusNodeEventArgs args) { string nodeText = args.Node.Text; CallbackResult cr = new CallbackResult(null, null, "javascript", string.Format("window.status = 'Clicked on {0} during millisecond value of {1}'", nodeText, DateTime.Now.Millisecond)); TaskResultsInstance.CallbackResults.Add(cr); } protected override void CreateChildControls() { Controls.Clear(); base.CreateChildControls(); textBox = new TextBox(); textBox.ID = "textBox"; button = new HtmlInputButton(); button.ID = "button"; button.Value = ButtonText; Controls.Add(textBox); Controls.Add(button); string getArgumentJS = string.Format ("'textBoxValue=' + document.getElementById('{0}').value", textBox.ClientID); string onClick = string.Format ("executeTask({0},\"{1}\");", getArgumentJS, CallbackFunctionString); button.Attributes.Add("onclick", onClick); // Setup simple custom context menu customContextMenuSimpleResult = new ContextMenu(); customContextMenuSimpleResult.ID = "ccm"; customContextMenuSimpleResult.BorderColor = System.Drawing.Color.Silver; customContextMenuSimpleResult.BorderStyle = BorderStyle.Solid; customContextMenuSimpleResult.BorderWidth = new Unit(1, UnitType.Pixel); customContextMenuSimpleResult.HoverColor = System.Drawing.Color.Gainsboro; customContextMenuSimpleResult.BackColor = System.Drawing.Color.White; customContextMenuSimpleResult.ForeColor = System.Drawing.Color.Black; customContextMenuSimpleResult.UseDefaultWebResources = true; System.Web.UI.WebControls.FontInfo fontinfo = customContextMenuSimpleResult.Font; fontinfo.Name = "Verdana"; fontinfo.Size = new System.Web.UI.WebControls.FontUnit(8); customContextMenuSimpleResult.ItemClicked += new ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItemClickedEventHandler(customContextMenuSimpleResult_ItemClicked); customContextMenuSimpleResult.Dismissed += new ContextMenuDismissedEventHandler(customContextMenuSimpleResult_Dismissed); ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItem item = new ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItem(); item.Text = "Show Alert"; item.ImageUrl = ""; customContextMenuSimpleResult.Items.Add(item); ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItem item1 = new ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItem(); item1.Text = "Remove"; item1.ImageUrl = ""; customContextMenuSimpleResult.Items.Add(item1); Controls.Add(customContextMenuSimpleResult); } void customContextMenuSimpleResult_Dismissed(object sender, ContextMenuDismissedEventArgs args) { ESRI.ArcGIS.ADF.Web.UI.WebControls.TreeViewPlusNode node = TaskResultsInstance.Nodes.FindByNodeID(args.Context); if (node != null) { // Unselect node in TaskResults customContextMenuSimpleResult.CallbackResults.Add(new ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult(this, "javascript", string.Format("var node=document.getElementById('{0}_textCell');if(node!=null){{node.style.backgroundColor='{1}';}}", node.NodeID, System.Drawing.ColorTranslator.ToHtml(TaskResultsInstance.BackColor)))); } } void customContextMenuSimpleResult_ItemClicked(object sender, ESRI.ArcGIS.ADF.Web.UI.WebControls.ContextMenuItemEventArgs args) { ESRI.ArcGIS.ADF.Web.UI.WebControls.TreeViewPlusNode node = TaskResultsInstance.Nodes.FindByNodeID(args.Context); switch (args.Item.Text) { case "Show Alert": ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult cr = new ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult(null, null, "javascript", string.Format ("alert('Worker process identity: {0}')", System.Security.Principal.WindowsIdentity.GetCurrent().Name.Replace("\\", "\\\\"))); customContextMenuSimpleResult.CallbackResults.Add(cr); break; case "Remove": node.Parent.Nodes.Remove(node); TaskResultsInstance.Refresh(); customContextMenuSimpleResult.CallbackResults.CopyFrom(TaskResultsInstance.CallbackResults); break; } } public override string GetCallbackResult() { NameValueCollection keyValColl = CallbackUtility.ParseStringIntoNameValueCollection(_callbackArg); Input = keyValColl["textBoxValue"]; return base.GetCallbackResult(); } public override void ExecuteTask() { Results = null; if (Input == null) return; string textBoxValue = Input as string; ESRI.ArcGIS.ADF.Web.UI.WebControls.TaskResultNode trNode = new ESRI.ArcGIS.ADF.Web.UI.WebControls.TaskResultNode ("Heading: " + textBoxValue); trNode.Expanded = false; trNode.ClickBehavior = TreeViewPlusNodeClickBehavior.None; ESRI.ArcGIS.ADF.Web.UI.WebControls.TreeViewPlusNode tvpn = new ESRI.ArcGIS.ADF.Web.UI.WebControls.TreeViewPlusNode ("Detail: Server Time is " + DateTime.Now); TaskResultsInstance.SetupContextMenu(customContextMenuSimpleResult, tvpn); tvpn.ShowCheckBox = false; trNode.Nodes.Add(tvpn); tvpn.EnsureVisible(); Results = trNode; } public override void Refresh() { string tmp = Input as string; if (!string.IsNullOrEmpty(tmp)) textBox.Text = tmp; base.Refresh(); } public override List<GISResourceItemDependency> GetGISResourceItemDependencies() { List<GISResourceItemDependency> list = new List<GISResourceItemDependency>(); return list; } } }