|
1 <?xml version="1.0"?> |
|
2 <?xml-stylesheet href="chrome://global/skin" type="text/css"?> |
|
3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?> |
|
4 <!-- |
|
5 XUL Widget Test for tree using a custom nsITreeView |
|
6 --> |
|
7 <window title="Tree" onload="init()" |
|
8 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> |
|
9 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> |
|
10 <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> |
|
11 |
|
12 <script src="tree_shared.js"/> |
|
13 |
|
14 <script> |
|
15 <![CDATA[ |
|
16 |
|
17 // This is our custom view, based on the treeview interface |
|
18 var view = |
|
19 { |
|
20 treeData: [["Mary", "206 Garden Avenue"], |
|
21 ["Chris", "19 Marion Street"], |
|
22 ["Sarah", "702 Fern Avenue"], |
|
23 ["John", "99 Westminster Avenue"]], |
|
24 value: "", |
|
25 rowCount: 8, |
|
26 getCellText: function(row, column) { return this.treeData[row % 4][column.index]; }, |
|
27 getCellValue: function(row, column) { return this.value; }, |
|
28 setCellText: function(row, column, val) { this.treeData[row % 4][column.index] = val; }, |
|
29 setCellValue: function(row, column, val) { this.value = val; }, |
|
30 setTree: function(tree) { this.tree = tree; }, |
|
31 isContainer: function(row) { return false; }, |
|
32 isContainerOpen: function(row) { return false; }, |
|
33 isContainerEmpty: function(row) { return false; }, |
|
34 isSeparator: function(row) { return false; }, |
|
35 isSorted: function(row) { return false; }, |
|
36 isSelectable: function(row, column) { return true; }, |
|
37 isEditable: function(row, column) { return row != 2 || column.index != 1; }, |
|
38 getProgressMode: function(row, column) { return Components.interfaces.nsITreeView.PROGRESS_NORMAL; }, |
|
39 getParentIndex: function(row, column) { return -1; }, |
|
40 getLevel: function(row) { return 0; }, |
|
41 hasNextSibling: function(row, column) { return row != this.rowCount - 1; }, |
|
42 getImageSrc: function(row, column) { return ""; }, |
|
43 cycleHeader: function(column) { }, |
|
44 getRowProperties: function(row) { return ""; }, |
|
45 getCellProperties: function(row, column) { return ""; }, |
|
46 getColumnProperties: function(column) |
|
47 { |
|
48 if (!column.index) { |
|
49 return "one two"; |
|
50 } |
|
51 |
|
52 return ""; |
|
53 } |
|
54 } |
|
55 |
|
56 function getCustomTreeViewCellInfo() |
|
57 { |
|
58 var obj = { rows: [] }; |
|
59 |
|
60 for (var row = 0; row < view.rowCount; row++) { |
|
61 var cellInfo = [ ]; |
|
62 for (var column = 0; column < 1; column++) { |
|
63 cellInfo.push({ label: "" + view.treeData[row % 4][column], |
|
64 value: "", |
|
65 properties: "", |
|
66 editable: row != 2 || column.index != 1, |
|
67 selectable: true, |
|
68 image: "", |
|
69 mode: Components.interfaces.nsITreeView.PROGRESS_NORMAL }); |
|
70 } |
|
71 |
|
72 obj.rows.push({ cells: cellInfo, |
|
73 properties: "", |
|
74 container: false, |
|
75 separator: false, |
|
76 children: null, |
|
77 level: 0, |
|
78 parent: -1 }); |
|
79 } |
|
80 |
|
81 return obj; |
|
82 } |
|
83 |
|
84 function init() |
|
85 { |
|
86 var tree = document.getElementById("tree-view"); |
|
87 tree.view = view; |
|
88 tree.treeBoxObject.ensureRowIsVisible(0); |
|
89 is(tree.treeBoxObject.getFirstVisibleRow(), 0, "first visible after ensureRowIsVisible on load"); |
|
90 tree.setAttribute("rows", "4"); |
|
91 |
|
92 setTimeout(testtag_tree, 0, "tree-view", "treechildren-view", "multiple", "simple", "tree view"); |
|
93 } |
|
94 |
|
95 ]]> |
|
96 </script> |
|
97 |
|
98 <tree id="tree-view"> |
|
99 <treecols> |
|
100 <treecol id="name" label="Name" sort="label" flex="1"/> |
|
101 <treecol id="address" label="Address" flex="1"/> |
|
102 </treecols> |
|
103 <treechildren id="treechildren-view"/> |
|
104 </tree> |
|
105 |
|
106 <!-- test results are displayed in the html:body --> |
|
107 <body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/> |
|
108 |
|
109 <!-- test code goes here --> |
|
110 <script type="application/javascript"><![CDATA[ |
|
111 |
|
112 SimpleTest.waitForExplicitFinish(); |
|
113 |
|
114 ]]> |
|
115 </script> |
|
116 |
|
117 </window> |
|
118 |