public Controls_PageView(string PageName) { XmlUtil x_util = new XmlUtil(); Util util = new Util(); //get page image Hashtable State = (Hashtable)HttpRuntime.Cache[Session.SessionID]; PageImage.ImageUrl = util.GetAppPageImage(State, State["PageViewAppID"].ToString(), PageName); PageImage.ID = PageName + "_PageImage"; PageImage.Attributes.Add("onclick", "goToPage('" + PageName + "');"); PageImage.Attributes.Add("onmouseover", "this.style.cursor='pointer';"); PageImage.Attributes.Add("onmouseout", "this.style.cursor='arrow';"); if (State["UseFullPageImage"] != null) { PageImage.Width = 320; PageImage.Height = 460; } //get page fields XmlDocument doc = x_util.GetStagingAppXml(State); RadTreeNode PageRoot = new RadTreeNode(PageName); PageRoot.CssClass = "RadTreeView"; PageRoot.ImageUrl = "../images/ascx.gif"; PageRoot.Category = "page"; PageRoot.Font.Size = FontUnit.Point(12); OnePageView.Nodes.Add(PageRoot); //do all fields XmlNode page = doc.SelectSingleNode("//pages/page/name[. ='" + PageName + "']").ParentNode; XmlNode fields = page.SelectSingleNode("fields"); if (fields != null) { //sort fields first SortedList list = new SortedList(); SortableList<StoryBoardField> nameList = new SortableList<StoryBoardField>(); foreach (XmlNode child in fields.ChildNodes) { Hashtable dict = new Hashtable(); dict["field_type"] = child.Name; XmlNode id_node = child.SelectSingleNode("id"); dict["id"] = id_node; string input_field = id_node.InnerText.Trim(); if (child.SelectSingleNode("left") != null) dict["left"] = child.SelectSingleNode("left").InnerText; else dict["left"] = "0"; if (child.SelectSingleNode("top") != null) dict["top"] = child.SelectSingleNode("top").InnerText; else dict["top"] = "0"; dict["width"] = child.SelectSingleNode("width").InnerText; dict["height"] = child.SelectSingleNode("height").InnerText; string field_type = dict["field_type"].ToString(); if (field_type == "button" || field_type == "image_button" || field_type == "table" || field_type == "switch") { if(child.SelectSingleNode("submit") != null) dict["submit"] = child.SelectSingleNode("submit").InnerText; } if (field_type == "table" ) { XmlNodeList sub_fields = child.SelectNodes("table_fields/table_field/name"); ArrayList table_list = new ArrayList(); foreach (XmlNode sub_field in sub_fields) { table_list.Add(sub_field.InnerText); } dict["sub_fields"] = table_list; } else if (field_type == "picker") { XmlNodeList sub_fields = child.SelectNodes("picker_fields/picker_field/name"); ArrayList picker_list = new ArrayList(); foreach (XmlNode sub_field in sub_fields) { picker_list.Add(sub_field.InnerText); } dict["sub_fields"] = picker_list; } list[input_field] = dict; nameList.Add(new StoryBoardField(id_node.InnerText.Trim(), Convert.ToInt32(dict["top"].ToString()), Convert.ToInt32(dict["left"].ToString()))); } nameList.Sort("Top", true); foreach (StoryBoardField input_field in nameList) { Hashtable dict = (Hashtable)list[input_field.FieldName]; string field_type = dict["field_type"].ToString(); RadTreeNode field_node = util.CreateFieldNode(PageRoot, input_field.FieldName, field_type); field_node.Value = "left:" + dict["left"].ToString() + ";top:" + dict["top"].ToString() + ";width:" + dict["width"].ToString() + ";height:" + dict["height"].ToString() ; if (dict["submit"] != null && dict["submit"].ToString().Length > 0 && dict["submit"].ToString() != ";") { field_node.BackColor = Color.PeachPuff; string[] submit = dict["submit"].ToString().Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); string target_page_name = null; //this code is compatible with both old and new syntax if (submit[0].StartsWith("post") && (submit[0].Contains("response_page:") || submit[0].Contains("response_page~"))) { target_page_name = submit[0].Substring(19); field_node.Value += ";next_page:" + target_page_name; } else if (submit[0].StartsWith("next_page")) { if (submit[0].Contains("next_page:page~")) target_page_name = submit[0].Substring(15); else target_page_name = submit[0].Substring(10); field_node.Value += ";next_page:" + target_page_name; } } if (field_type == "table" || field_type == "picker") { ArrayList sub_field_list = (ArrayList)dict["sub_fields"]; foreach (string sub_field_name in sub_field_list) { RadTreeNode sub_field_node = util.CreateFieldNode(field_node, sub_field_name, field_type); } } } } OnePageView.ExpandAllNodes(); OnePageView.OnClientMouseOver = "onPageViewMouseOver"; OnePageView.OnClientMouseOut = "onPageViewMouseOut"; }
protected RadTreeNode CreateDeviceDataFieldNode(RadTreeNode PhoneDataFieldsRoot, string input_field, string field_type, Hashtable input_to_event_map) { Util util = new Util(); RadTreeNode id = util.CreateFieldNode(PhoneDataFieldsRoot, input_field, field_type); if (input_to_event_map.ContainsKey(input_field)) { id.Value = "page:" + PhoneDataFieldsRoot.Text + ";event_field:" + input_to_event_map[input_field].ToString() + ";input_field:" + input_field; } else { id.Value = "page:" + PhoneDataFieldsRoot.Text + ";input_field:" + input_field; } if (field_type == "gps_field" || field_type == "table_field" || field_type == "text_field" || field_type == "label" || field_type == "speech_reco" || field_type == "hidden_field" || field_type == "text_area" || field_type == "picker_field") { id.BackColor = Color.FromArgb(153, 255, 185); //LIGHT GREEN id.Category = "request"; } return id; }
/******************************************* Web Service Functions *************************************/ protected void BuildWebServiceDataTrees(string event_name) { string event_field = event_name; string button_id = event_name; RadComboBoxItem item = WebServiceEvents.Items.FindItemByText(event_name); WebServiceEvents.SelectedIndex = item.Index; if (event_name.Contains("->")) { DataMultiPage.SelectedIndex = 3; return; } Hashtable State = (Hashtable)HttpRuntime.Cache[Session.SessionID]; string app = State["SelectedApp"].ToString(); string[] page_names = item.Value.Split(":".ToCharArray()); string from_page = page_names[0]; string to_page = page_names[1]; if (to_page == "_this_page") to_page = from_page; PhoneRequestTreeView.Nodes.Clear(); WebServiceInputTreeView.Nodes.Clear(); PhoneResponseTreeView.Nodes.Clear(); WebServiceResponseTreeView.Nodes.Clear(); RadTreeNode WebServiceInputRoot = new RadTreeNode(event_field); WebServiceInputRoot.CssClass = "RadTreeView"; WebServiceInputRoot.ImageUrl = "~/images/editor_images/button.png"; WebServiceInputTreeView.Nodes.Add(WebServiceInputRoot); RadTreeNode WebServiceResponseRoot = new RadTreeNode(event_field); WebServiceResponseRoot.CssClass = "RadTreeView"; WebServiceResponseRoot.ImageUrl = "~/images/editor_images/button.png"; WebServiceResponseTreeView.Nodes.Add(WebServiceResponseRoot); Util util = new Util(); XmlUtil x_util = new XmlUtil(); XmlDocument doc = util.GetStagingAppXml(State, app); XmlNode root = doc.SelectSingleNode("app_project"); if (root == null) root = doc.SelectSingleNode("mobiflex_project"); XmlNode phone_data_requests = doc.SelectSingleNode("//phone_data_requests"); bool update_xml = false; if (phone_data_requests == null) { phone_data_requests = x_util.CreateNode(doc, root, "phone_data_requests"); update_xml = true; } XmlNode web_service_data_responses = doc.SelectSingleNode("//web_service_data_responses"); if (web_service_data_responses == null) { web_service_data_responses = x_util.CreateNode(doc, root, "web_service_data_responses"); update_xml = true; } if (update_xml) { State["AppXmlDoc"] = doc; util.UpdateStagingAppXml(State); } Hashtable input_to_event_map = new Hashtable(); XmlNodeList pages = doc.SelectNodes("//pages/page"); foreach (XmlNode page in pages) { XmlNode page_name_node = page.SelectSingleNode("name"); string page_name = page_name_node.InnerText; RadTreeNode PhoneRequestRoot = null; RadTreeNode PhoneResponseRoot = null; if (page_name == from_page || SeeAllPages.Checked) { PhoneRequestRoot = new RadTreeNode(page_name); PhoneRequestRoot.CssClass = "RadTreeView"; PhoneRequestRoot.ImageUrl = "~/images/ascx.gif"; PhoneRequestTreeView.Nodes.Add(PhoneRequestRoot); } if (page_name == to_page || SeeAllPages.Checked) { PhoneResponseRoot = new RadTreeNode(page_name); PhoneResponseRoot.CssClass = "RadTreeView"; PhoneResponseRoot.ImageUrl = "~/images/ascx.gif"; PhoneResponseTreeView.Nodes.Add(PhoneResponseRoot); PhoneResponseRoot.Category = "page"; } if (page_name != from_page && page_name != to_page && !SeeAllPages.Checked) continue; //do inputs from phone XmlNodeList input_nodes = page.SelectNodes("fields/text_area | fields/label | fields/text_field | fields/hidden_field"); foreach (XmlNode input_node in input_nodes) { // phone input field XmlNode id_node = input_node.SelectSingleNode("id"); if (page_name == from_page || SeeAllPages.Checked) { string input_field = id_node.InnerText.Trim(); CreateInputFieldNode(PhoneRequestRoot, input_field, input_node.Name, phone_data_requests, input_to_event_map); } else if (page_name == to_page || SeeAllPages.Checked) { //phone output field RadTreeNode id = util.CreateFieldNode(PhoneResponseRoot, id_node.InnerText, input_node.Name); id.Category = "output"; id.BackColor = Color.FromArgb(250, 252, 156); //yellow CreateWebResponseFieldNode(id, phone_data_requests); AddStatusNodes(id, phone_data_requests, id.Text + "_status"); } } if (page_name == from_page || SeeAllPages.Checked) { XmlNodeList gps_fields = page.SelectNodes("fields/gps"); foreach (XmlNode gps_field in gps_fields) { XmlNode id_node = gps_field.SelectSingleNode("id"); string input_field = id_node.InnerText.Trim(); RadTreeNode gps_node = CreateInputFieldNode(PhoneRequestRoot, input_field, "gps", phone_data_requests, input_to_event_map); XmlNode part_node = gps_field.SelectSingleNode("latitude"); CreateInputFieldNode(gps_node, part_node.InnerText, "gps_field", phone_data_requests, input_to_event_map); part_node = gps_field.SelectSingleNode("longitude"); CreateInputFieldNode(gps_node, part_node.InnerText, "gps_field", phone_data_requests, input_to_event_map); } } XmlNodeList pickers = page.SelectNodes("fields/picker"); foreach (XmlNode picker in pickers) { XmlNode id_node = picker.SelectSingleNode("id"); XmlNode fields = picker.SelectSingleNode("picker_fields"); //picker fields are both inputs and outputs if (page_name == from_page || SeeAllPages.Checked) { string input_field = id_node.InnerText.Trim(); RadTreeNode picker_node = CreateInputFieldNode(PhoneRequestRoot, input_field, "picker", phone_data_requests, input_to_event_map); //picker itself is not an input - the fields are picker_node.BackColor = Color.White; picker_node.Category = ""; if (fields != null) { XmlNodeList field_list = fields.SelectNodes("picker_field"); foreach (XmlNode field_item in field_list) { XmlNode field_name = field_item.SelectSingleNode("name"); //table fields can be inputs too input_field = field_name.InnerText.Trim(); CreateInputFieldNode(picker_node, input_field, "picker_field", phone_data_requests, input_to_event_map); } } else // for time and date types { input_field = id_node.InnerText.Trim(); CreateInputFieldNode(picker_node, input_field, "picker_field", phone_data_requests, input_to_event_map); } } else if (page_name == to_page || SeeAllPages.Checked) { RadTreeNode id = util.CreateFieldNode(PhoneResponseRoot, id_node.InnerText, "picker"); id.Category = "picker"; if (fields != null) { XmlNodeList field_list = fields.SelectNodes("picker_field"); foreach (XmlNode field_item in field_list) { XmlNode field_name = field_item.SelectSingleNode("name"); RadTreeNode name_node = new RadTreeNode(field_name.InnerText); name_node.CssClass = "RadTreeView"; name_node.ImageUrl = "~/images/target.gif"; name_node.Category = "output"; name_node.BackColor = Color.FromArgb(250, 252, 156); //yellow id.Nodes.Add(name_node); CreateWebResponseFieldNode(name_node, phone_data_requests); } } else // for time and date types { RadTreeNode name_node = new RadTreeNode(id_node.InnerText); name_node.CssClass = "RadTreeView"; name_node.ImageUrl = "~/images/target.gif"; name_node.Category = "output"; name_node.BackColor = Color.FromArgb(250, 252, 156); //yellow id.Nodes.Add(name_node); CreateWebResponseFieldNode(name_node, phone_data_requests); } AddStatusNodes(id, phone_data_requests, id.Text + "_status"); } } //do responses to phone XmlNodeList tables = page.SelectNodes("fields/table"); foreach (XmlNode table in tables) { XmlNode id_node = table.SelectSingleNode("id"); XmlNode fields = table.SelectSingleNode("table_fields"); XmlNodeList field_list = fields.SelectNodes("table_field"); //table fields are both inputs and outputs if (page_name == from_page || SeeAllPages.Checked) { string input_field = id_node.InnerText.Trim(); RadTreeNode table_node = CreateInputFieldNode(PhoneRequestRoot, input_field, "table", phone_data_requests, input_to_event_map); //table itself is not an input table_node.BackColor = Color.White; table_node.Category = ""; foreach (XmlNode field_item in field_list) { XmlNode field_name = field_item.SelectSingleNode("name"); //table fields can be inputs too input_field = field_name.InnerText.Trim(); CreateInputFieldNode(table_node, input_field, "table_field", phone_data_requests, input_to_event_map); } } if (page_name == to_page || SeeAllPages.Checked) { RadTreeNode id = util.CreateFieldNode(PhoneResponseRoot, id_node.InnerText, "table"); foreach (XmlNode field_item in field_list) { XmlNode field_name = field_item.SelectSingleNode("name"); RadTreeNode name_node = new RadTreeNode(field_name.InnerText); name_node.CssClass = "RadTreeView"; name_node.ImageUrl = "~/images/target.gif"; name_node.Category = "output"; name_node.BackColor = Color.FromArgb(250, 252, 156); //yellow id.Nodes.Add(name_node); CreateWebResponseFieldNode(name_node, phone_data_requests); } AddStatusNodes(id, phone_data_requests, id.Text + "_status"); } } if (page_name == to_page || SeeAllPages.Checked) { XmlNodeList field_list2 = page.SelectNodes("fields/alert | fields/web_view | fields/image"); foreach (XmlNode field2 in field_list2) { XmlNode id_node = field2.SelectSingleNode("id"); RadTreeNode id = util.CreateFieldNode(PhoneResponseRoot, id_node.InnerText, field2.Name); id.Category = "output"; id.BackColor = Color.FromArgb(250, 252, 156); //yellow CreateWebResponseFieldNode(id, phone_data_requests); AddStatusNodes(id, phone_data_requests, id.Text + "_status"); } } } string node_value = app + "~" + event_field + "~" + button_id; RadTreeNode url_node = new RadTreeNode(); url_node.CssClass = "RadTreeView"; url_node.ImageUrl = "~/images/function_call.gif"; url_node.AllowEdit = true; url_node.Value = node_value; WebServiceInputRoot.Nodes.Add(url_node); if ( State[node_value] == null) { string default_label = "Click here twice to set the Web Service URL"; string mapped_url = null; XmlNodeList mapped_page_requests = phone_data_requests.SelectNodes("//phone_data_request/event_field[.='" + event_field + "']"); if (mapped_page_requests != null) { foreach (XmlNode mapped_page_request in mapped_page_requests) { XmlNode mapped_event_field = mapped_page_request.ParentNode.SelectSingleNode("event_field[.='" + button_id + "']"); if (mapped_event_field != null) { XmlNode web_service = mapped_event_field.ParentNode.SelectSingleNode("web_service"); XmlNode method_node = mapped_event_field.ParentNode.SelectSingleNode("method"); if (web_service != null && method_node != null) { url_node.Text = web_service.InnerText; mapped_url = web_service.InnerText; } else { XmlNode web_service_method = mapped_event_field.ParentNode.SelectSingleNode("web_service_method"); mapped_url = web_service_method.InnerText; url_node.Text = mapped_url.Substring(0, mapped_url.LastIndexOf("/")); } InitWebServiceNodes(doc, event_field, url_node, WebServiceResponseRoot, phone_data_requests); break; } if (mapped_url != null) break; } if (mapped_url == null) url_node.Text = default_label; } else url_node.Text = default_label; } else { url_node.Text = State[node_value].ToString(); InitWebServiceNodes(doc, event_field, url_node, WebServiceResponseRoot, phone_data_requests); } PhoneRequestTreeView.ExpandAllNodes(); WebServiceInputTreeView.ExpandAllNodes(); PhoneResponseTreeView.ExpandAllNodes(); }
protected RadTreeNode CreateInputFieldNode(RadTreeNode PhoneRequestRoot, string input_field, string field_type, XmlNode phone_data_requests, Hashtable input_to_event_map) { bool is_field_mapped = false; Util util = new Util(); XmlNode mapped_node = phone_data_requests.SelectSingleNode("//phone_data_request/event_field[.='" + WebServiceEvents.SelectedItem.Text + "']"); if (mapped_node != null) { mapped_node = mapped_node.ParentNode.SelectSingleNode("input_mapping/input_field[.='" + input_field + "']"); if (mapped_node != null) is_field_mapped = true; } if (!is_field_mapped) { RadTreeNode id = util.CreateFieldNode(PhoneRequestRoot, input_field, field_type); if (input_to_event_map.ContainsKey(input_field)) { id.Value = "page:" + PhoneRequestRoot.Text + ";event_field:" + input_to_event_map[input_field].ToString() + ";input_field:" + input_field; } else { id.Value = "page:" + PhoneRequestRoot.Text + ";input_field:" + input_field; } //id.Style = "background-color:#99ffb9;"; if (field_type == "gps_field" || field_type == "table_field" || field_type == "text_field" || field_type == "label" || field_type == "speech_reco" || field_type == "hidden_field" || field_type == "text_area" || field_type == "picker_field") { id.BackColor = Color.FromArgb(153, 255, 185); //LIGHT GREEN id.Category = "request"; } return id; } else { return null; } }
protected void InitWebServiceNodes(XmlDocument doc, string event_field, RadTreeNode url_node, RadTreeNode WebServiceResponseRoot, XmlNode phone_data_requests) { string url = url_node.Text; url_node.ExpandParentNodes(); url_node.CollapseChildNodes(); Hashtable WebServiceMethodInputs = new Hashtable(); Hashtable State = (Hashtable)HttpRuntime.Cache[Session.SessionID]; State["WebServiceMethodInputs"] = WebServiceMethodInputs; RadTreeNode out_url = new RadTreeNode(url); out_url.CssClass = "RadTreeView"; out_url.ImageUrl = "~/images/dialog.gif"; WebServiceResponseRoot.Nodes.Add(out_url); Util util = new Util(); if (!url.EndsWith("?WSDL")) url += "?WSDL"; string xml = util.GetWebPage(url); if (xml == null) { SaveRequestMessage.Text = "Accessing " + url + " resulted in an error"; return; } XmlDocument WebDoc = new XmlDocument(); WebDoc.LoadXml(xml); XmlNamespaceManager nsmgr = new XmlNamespaceManager(WebDoc.NameTable); nsmgr.AddNamespace("s", "http://www.w3.org/2001/XMLSchema"); XmlNodeList web_methods = WebDoc.SelectNodes("//s:schema/s:element", nsmgr); if (web_methods.Count == 0) { nsmgr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/"); web_methods = WebDoc.SelectNodes("//wsdl:operation", nsmgr); if (web_methods.Count == 0) { SaveRequestMessage.Text = "Could not find any methods with URL: " + url; return; } } Hashtable used_names = new Hashtable(); foreach (XmlNode web_method in web_methods) { //throw out certain methods with <s:any /> if (web_method.InnerXml.Contains("s:any")) continue; string web_method_name = web_method.Attributes["name"].Value; if (used_names.ContainsKey(web_method_name)) continue; used_names[web_method_name] = true; ArrayList MethodInputs = new ArrayList(); string service_url = out_url.Text; if (out_url.Text.ToLower().EndsWith("?wsdl")) service_url = service_url.Remove(url.Length - 5); WebServiceMethodInputs[service_url + "/" + web_method_name] = MethodInputs; RadTreeNode in_method_node = new RadTreeNode(web_method_name); in_method_node.CssClass = "RadTreeView"; in_method_node.ImageUrl = "~/images/forward_nav.gif"; url_node.Nodes.Add(in_method_node); //response web methods XmlNode mapped_node = phone_data_requests.SelectSingleNode("//event_field[.='" + event_field + "']"); RadTreeNode out_method_node = null; if (mapped_node != null && State["WebServiceTestDoc"] != null && State["WebServiceResponseTreeViewNodeText"] != null && State["WebServiceResponseTreeViewNodeText"].ToString() == web_method_name) { //make sure we are in the right event XmlNode method_node = mapped_node.ParentNode.SelectSingleNode("method"); if (method_node != null && method_node.InnerText == web_method_name) { XmlDocument TestDoc = (XmlDocument) State["WebServiceTestDoc"]; out_method_node = new RadTreeNode(web_method_name); State["WebServiceResponseTreeViewMethodText"] = web_method_name; out_method_node.CssClass = "RadTreeView"; out_method_node.ImageUrl = "~/images/backward_nav.gif"; out_method_node.Category = "method"; out_method_node.Value = service_url + ";" + web_method_name + ";"; out_url.Nodes.Add(out_method_node); out_method_node.Value.Remove(out_method_node.Value.Length - 1, 1); WebServiceResponseTreeView.ExpandAllNodes(); XmlToTreeViewNode(TestDoc.FirstChild.NextSibling, out_method_node, web_method_name); out_method_node.ExpandParentNodes(); Session.Remove("WebServiceTestDoc"); } } else if (mapped_node != null) { XmlNode web_service_node = mapped_node.ParentNode.SelectSingleNode("web_service[.='" + service_url + "']"); XmlNode method_node = mapped_node.ParentNode.SelectSingleNode("method[.='" + web_method_name + "']"); if (web_service_node != null && method_node != null) { in_method_node.BackColor = Color.LightCoral; out_method_node = new RadTreeNode(web_method_name); out_method_node.CssClass = "RadTreeView"; out_method_node.ImageUrl = "~/images/backward_nav.gif"; out_method_node.Category = "method"; out_method_node.Value = service_url + ";" + web_method_name + ";"; out_url.Nodes.Add(out_method_node); out_method_node.Value.Remove(out_method_node.Value.Length - 1, 1); WebServiceResponseTreeView.ExpandAllNodes(); } } XmlNodeList parms = web_method.SelectNodes("s:complexType/s:sequence/s:element", nsmgr); foreach (XmlNode parm in parms) { string parm_name = parm.Attributes["name"].Value; MethodInputs.Add(parm_name); if (out_method_node != null) out_method_node.Value += parm_name + ","; RadTreeNode parm_node = new RadTreeNode(parm_name); parm_node.CssClass = "RadTreeView"; parm_node.ImageUrl = "~/images/dot.gif"; parm_node.Category = "input"; parm_node.BackColor = Color.FromArgb(250, 252, 156); in_method_node.Nodes.Add(parm_node); if (mapped_node != null) { XmlNode web_service_node = mapped_node.ParentNode.SelectSingleNode("web_service[.='" + service_url + "']"); XmlNode method_node = mapped_node.ParentNode.SelectSingleNode("method[.='" + web_method_name + "']"); if (web_service_node != null && method_node != null) { XmlNode web_service_method_input_node = mapped_node.ParentNode.SelectSingleNode("input_mapping/web_service_method_input[.='" + parm_name + "']"); if (web_service_method_input_node != null) { XmlNode input_field_node = web_service_method_input_node.ParentNode.SelectSingleNode("input_field"); if (input_field_node != null) { string request_name = input_field_node.InnerText; XmlNode field_node = doc.SelectSingleNode("//id[.='" + request_name + "']"); RadTreeNode request_node = null; if (field_node == null) request_node = util.CreateFieldNode(parm_node, request_name, ""); else request_node = util.CreateFieldNode(parm_node, request_name, field_node.ParentNode.Name); request_node.Text = request_name; request_node.Category = "request"; request_node.BackColor = Color.FromArgb(153, 255, 185); //LIGHT GREEN } } } } } RadTreeNode save_method_node = new RadTreeNode("Save calling this method with 0 or more inputs mapped"); save_method_node.CssClass = "RadTreeView"; save_method_node.ImageUrl = "~/images/save.gif"; save_method_node.Category = "save"; in_method_node.Nodes.Add(save_method_node); RadTreeNode undo_method_inputs_node = new RadTreeNode("Undo mapping of device fields to this method"); undo_method_inputs_node.CssClass = "RadTreeView"; undo_method_inputs_node.ImageUrl = "~/images/cancel.png"; undo_method_inputs_node.Category = "delete"; in_method_node.Nodes.Add(undo_method_inputs_node); in_method_node.ExpandChildNodes(); } }