8964c31be641b22ff11b4c5bca0e80d2213a267c
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TreeView.js
1
2 function TreeView_ToggleExpand (treeId, nodeId) {
3         var tree = getTree (treeId);
4         if (tree == null)
5             return;
6         var spanId = treeId + "_" + nodeId;
7         var node = document.getElementById (spanId);
8         var expand = node.style.display == "none";
9         
10         if (tree.populateFromClient && expand && node.populated != true && (node.innerHTML.length == 0 || node.hasError)) {
11                 WebForm_DoCallback (treeId, nodeId, TreeView_PopulateCallback, treeId + " " + nodeId, TreeView_ErrorCallback)
12                 return;
13         }
14         
15         if (!node.hasError)
16                 node.populated = true;
17         
18         node.style.display = expand ? "block" : "none";
19         
20         var myForm = WebForm_GetFormFromCtrl (treeId);
21         var inputStates = myForm [treeId + "_ExpandStates"];
22         TreeView_SetNodeFlag (inputStates, nodeId, expand);
23         
24         if (tree.showImage) {
25                 var image = document.getElementById (spanId + "_img");
26                 if (tree.defaultImages) {
27                         if (expand) image.src = image.src.replace ("plus","minus");
28                         else image.src = image.src.replace ("minus","plus");
29                 } else {
30                         if (expand) image.src = tree.collapseImage;
31                         else image.src = tree.expandImage;
32                 }
33                 var alt;
34                 if (expand) alt = tree.collapseAlt;
35                 else alt = tree.expandAlt;
36
37                 if (alt.indexOf ("{0}") != -1) {
38                         var txt = document.getElementById (spanId + "_txt").innerText;
39                         alt = alt.replace ("{0}", txt);
40                 }
41                 image.alt = alt;
42         }
43 }
44
45 function TreeView_SetNodeFlag (flagInput, nodeId, set)
46 {
47         if (!set) flagInput.value = flagInput.value.replace ("|" + nodeId + "|", "|");
48         else flagInput.value = flagInput.value + nodeId + "|";
49 }
50
51 function TreeView_PopulateCallback (data, ids)
52 {
53         var idArray = ids.split (" ");
54         var tree = getTree (idArray[0]);
55         if (tree == null)
56             return;
57         var spanId = idArray[0] + "_" + idArray[1];
58         var node = document.getElementById (spanId);
59         node.populated = true;
60         if (data != "*") {
61                 node.innerHTML = data;
62             TreeView_ToggleExpand (idArray[0], idArray[1]);
63                 var myForm = WebForm_GetFormFromCtrl (treeId);
64             TreeView_SetNodeFlag (myForm [idArray[0] + "_PopulatedStates"], idArray[1], true);
65         } else {
66                 if (tree.showImage && tree.noExpandImage != null) {
67                         var image = document.getElementById (spanId + "_img");
68                         image.src = tree.noExpandImage;
69                 }
70         }
71 }
72
73 function TreeView_ErrorCallback (data, ids)
74 {
75         var idArray = ids.split (" ");
76         var node = document.getElementById (idArray[0] + "_" + idArray[1]);
77         node.innerHTML = data;
78         node.populated = true;
79         TreeView_ToggleExpand (idArray[0], idArray[1]);
80         node.populated = false;
81         node.hasError = true;
82 }
83
84 function getTree (treeId) { try { return eval (treeId + "_data"); } catch(e) { return null; } }
85 function getNodeLink (node) { return node.childNodes[node.childNodes.length - 1]; }
86
87 function TreeView_HoverNode (treeId, node)
88 {
89         var tree = getTree (treeId);
90         if (tree == null)
91             return;
92         if (tree.hoverClass != null) {
93             if (node.normalClass == null)
94                     node.normalClass = node.className;
95             node.className = node.normalClass + " " + tree.hoverClass;
96     }
97         if (tree.hoverLinkClass != null) {
98             var nodeLink = getNodeLink(node);
99             if (nodeLink.normalClass == null)
100                     nodeLink.normalClass = nodeLink.className;
101             nodeLink.className = nodeLink.normalClass + " " + tree.hoverLinkClass;
102         }
103 }
104
105 function TreeView_UnhoverNode (node) {
106         if (node != null && node.normalClass != null)
107                 node.className = node.normalClass;
108         var nodeLink = getNodeLink(node);
109         if (nodeLink != null && nodeLink.normalClass != null)
110                 nodeLink.className = nodeLink.normalClass;
111 }