summaryrefslogtreecommitdiff
path: root/mcs/class/System.Web/System.Web.UI.WebControls/TreeView.js
blob: a4f97d191cf8c13ba51d909d8cf4c1ba01f849c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

function TreeView_ToggleExpand (treeId, nodeId, nodeValue, nodeImageUrl, nodeNavigateUrl, nodeTarget) {
	var tree = getTree (treeId);
	if (tree == null)
	    return;
	var spanId = treeId + "_" + nodeId;
	var node = document.getElementById (spanId);
	var expand = node.style.display == "none";
	
	if (tree.populateFromClient && expand && node.populated != true && (node.innerHTML.length == 0 || node.hasError)) {
	    tree.PopulateNode (nodeId, nodeValue, nodeImageUrl, nodeNavigateUrl, nodeTarget);
		return;
	}
	
	if (!node.hasError)
		node.populated = true;
	
	node.style.display = expand ? "block" : "none";
	
	var inputStates = tree.form [treeId + "_ExpandStates"];
	TreeView_SetNodeFlag (inputStates, nodeId, expand);
	
	if (tree.showImage) {
		var image = document.getElementById (spanId + "_img");
		if (expand) image.src = tree.collapseImage;
		else image.src = tree.expandImage;
		var alt;
		if (expand) alt = tree.collapseAlt;
		else alt = tree.expandAlt;

		if (alt.indexOf ("{0}") != -1) {
			var txt = document.getElementById (spanId + "_txt").innerText;
			alt = alt.replace ("{0}", txt);
		}
		image.alt = alt;
	}
}

function TreeView_PopulateNode (uid, treeId, nodeId, nodeValue, nodeImageUrl, nodeNavigateUrl, nodeTarget)
{
    var arg = nodeId + "|" + nodeValue + "|" + nodeImageUrl + "|" + nodeNavigateUrl + "|" + nodeTarget;
    window.WebForm_DoCallback (uid, arg, TreeView_PopulateCallback, treeId + " " + nodeId, TreeView_PopulateCallback, false);
}

function TreeView_SetNodeFlag (flagInput, nodeId, set)
{
	if (!set) flagInput.value = flagInput.value.replace ("|" + nodeId + "|", "|");
	else flagInput.value = flagInput.value + nodeId + "|";
}

function TreeView_PopulateCallback (data, ids)
{
	var idArray = ids.split (" ");
	var tree = getTree (idArray[0]);
	if (tree == null)
	    return;
	var spanId = idArray[0] + "_" + idArray[1];
	var node = document.getElementById (spanId);
	node.populated = true;
	if (data != "*") {
		node.innerHTML = data;
	    TreeView_ToggleExpand (idArray[0], idArray[1]);
	    TreeView_SetNodeFlag (tree.form [idArray[0] + "_PopulatedStates"], idArray[1], true);
	} else {
		if (tree.showImage && tree.noExpandImage != null) {
			var image = document.getElementById (spanId + "_img");
			image.src = tree.noExpandImage;
		}
	}
}

function getTree (treeId) { try { return eval (treeId + "_data"); } catch(e) { return null; } }
function getNodeLink (node) { return node.childNodes[node.childNodes.length - 1]; }

function TreeView_HoverNode (treeId, node)
{
	var tree = getTree (treeId);
	if (tree == null)
	    return;
	if (tree.hoverClass != null) {
	    if (node.normalClass == null)
		    node.normalClass = node.className;
	    node.className = node.normalClass + " " + tree.hoverClass;
    }
	if (tree.hoverLinkClass != null) {
	    var nodeLink = getNodeLink(node);
	    if (nodeLink.normalClass == null)
		    nodeLink.normalClass = nodeLink.className;
	    nodeLink.className = nodeLink.normalClass + " " + tree.hoverLinkClass;
	}
}

function TreeView_UnhoverNode (node) {
	if (node != null && node.normalClass != null)
		node.className = node.normalClass;
	var nodeLink = getNodeLink(node);
	if (nodeLink != null && nodeLink.normalClass != null)
		nodeLink.className = nodeLink.normalClass;
}