annotate chrome/content/includes/tree-utils.js @ 4:8aa443d1e395 default tip

revised Makefile
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 02 Dec 2008 20:55:06 +0900
parents 472a16863ecc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
2 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
3 * ***** BEGIN LICENSE BLOCK *****
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
4 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
5 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
6 * The contents of this file are subject to the Mozilla Public License Version
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
7 * 1.1 (the "License"); you may not use this file except in compliance with
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
8 * the License. You may obtain a copy of the License at
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
9 * http://www.mozilla.org/MPL/
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
10 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
11 * Software distributed under the License is distributed on an "AS IS" basis,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
13 * for the specific language governing rights and limitations under the
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
14 * License.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
15 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
16 * The Original Code is The JavaScript Debugger.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
17 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
18 * The Initial Developer of the Original Code is
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
19 * Netscape Communications Corporation.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
20 * Portions created by the Initial Developer are Copyright (C) 1998
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
21 * the Initial Developer. All Rights Reserved.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
22 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
23 * Contributor(s):
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
24 * Robert Ginda, <rginda@netscape.com>, original author
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
25 * Dave Townsend, <mossop@blueprintit.co.uk>, Added cell and row property support
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
26 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
27 * Alternatively, the contents of this file may be used under the terms of
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
28 * either the GNU General Public License Version 2 or later (the "GPL"), or
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
29 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
30 * in which case the provisions of the GPL or the LGPL are applicable instead
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
31 * of those above. If you wish to allow use of your version of this file only
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
32 * under the terms of either the GPL or the LGPL, and not to allow others to
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
33 * use your version of this file under the terms of the MPL, indicate your
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
34 * decision by deleting the provisions above and replace them with the notice
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
35 * and other provisions required by the GPL or the LGPL. If you do not delete
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
36 * the provisions above, a recipient may use your version of this file under
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
37 * the terms of any one of the MPL, the GPL or the LGPL.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
38 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
39 * ***** END LICENSE BLOCK ***** */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
40
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
41 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
42 * BasicOView provides functionality of tree whose elements have no children.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
43 * Usage:
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
44 * var myTree = new BasicOView()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
45 * myTree.setColumnNames (["col 1", "col 2"]);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
46 * myTree.data = [["row 1, col 1", "row 1, col 2"],
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
47 * ["row 2, col 1", "row 2, col 2"]];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
48 * { override get*Properties, etc, as suits your purpose. }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
49 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
50 * treeBoxObject.view = myTree;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
51 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
52 * You'll need to make the appropriate myTree.tree.invalidate calls
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
53 * when myTree.data changes.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
54 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
55
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
56 function BasicOView()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
57 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
58 this.tree = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
59 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
60
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
61 /* functions *you* should call to initialize and maintain the tree state */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
62
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
63 /* scroll the line specified by |line| to the center of the tree */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
64 BasicOView.prototype.centerLine =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
65 function bov_ctrln (line)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
66 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
67 var first = this.tree.getFirstVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
68 var last = this.tree.getLastVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
69 this.scrollToRow(line - (last - first + 1) / 2);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
70 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
71
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
72 /* call this to set the association between column names and data columns */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
73 BasicOView.prototype.setColumnNames =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
74 function bov_setcn (aryNames)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
75 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
76 this.columnNames = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
77 for (var i = 0; i < aryNames.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
78 this.columnNames[aryNames[i]] = i;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
79 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
80
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
81 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
82 * scroll the source so |line| is at either the top, center, or bottom
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
83 * of the view, depending on the value of |align|.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
84 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
85 * line is the one based target line.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
86 * if align is negative, the line will be scrolled to the top, if align is
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
87 * zero the line will be centered, and if align is greater than 0 the line
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
88 * will be scrolled to the bottom. 0 is the default.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
89 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
90 BasicOView.prototype.scrollTo =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
91 function bov_scrollto (line, align)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
92 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
93 if (!this.tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
94 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
95
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
96 var headerRows = 1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
97
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
98 var first = this.tree.getFirstVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
99 var last = this.tree.getLastVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
100 var viz = last - first + 1 - headerRows; /* total number of visible rows */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
101
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
102 /* all rows are visible, nothing to scroll */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
103 if (first == 0 && last >= this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
104 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
105
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
106 /* tree lines are 0 based, we accept one based lines, deal with it */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
107 --line;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
108
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
109 /* safety clamp */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
110 if (line < 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
111 line = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
112 if (line >= this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
113 line = this.rowCount - 1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
114
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
115 if (align < 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
116 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
117 if (line > this.rowCount - viz) /* overscroll, can't put a row from */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
118 line = this.rowCount - viz; /* last page at the top. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
119 this.tree.scrollToRow(line);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
120 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
121 else if (align > 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
122 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
123 if (line < viz) /* underscroll, can't put a row from the first page */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
124 line = 0; /* at the bottom. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
125 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
126 line = line - viz + headerRows;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
127
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
128 this.tree.scrollToRow(line);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
129 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
130 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
131 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
132 var half_viz = viz / 2;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
133 /* lines past this line can't be centered without causing the tree
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
134 * to show more rows than we have. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
135 var lastCenterable = this.rowCount - half_viz;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
136 if (line > half_viz)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
137 line = lastCenterable;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
138 /* lines before this can't be centered without causing the tree
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
139 * to attempt to display negative rows. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
140 else if (line < half_viz)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
141 line = half_viz;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
142 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
143 /* round the vizible rows down to a whole number, or we try to end up
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
144 * on a N + 0.5 row! */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
145 half_viz = Math.floor(half_viz);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
146
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
147 this.tree.scrollToRow(line - half_viz);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
148 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
149 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
150
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
151 BasicOView.prototype.__defineGetter__("selectedIndex", bov_getsel);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
152 function bov_getsel()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
153 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
154 if (!this.tree || this.tree.view.selection.getRangeCount() < 1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
155 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
156
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
157 var min = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
158 this.tree.view.selection.getRangeAt(0, min, {});
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
159 return min.value;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
160 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
161
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
162 BasicOView.prototype.__defineSetter__("selectedIndex", bov_setsel);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
163 function bov_setsel(i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
164 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
165 if (i == -1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
166 this.tree.view.selection.clearSelection();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
167 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
168 this.tree.view.selection.timedSelect (i, 500);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
169 return i;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
170 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
171
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
172 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
173 * functions the tree will call to retrieve the list state (nsITreeView.)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
174 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
175
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
176 BasicOView.prototype.rowCount = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
177
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
178 BasicOView.prototype.getCellProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
179 function bov_cellprops (row, col, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
180 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
181 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
182
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
183 BasicOView.prototype.getColumnProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
184 function bov_colprops (col, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
185 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
186 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
187
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
188 BasicOView.prototype.getRowProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
189 function bov_rowprops (index, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
190 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
191 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
192
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
193 BasicOView.prototype.isContainer =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
194 function bov_isctr (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
195 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
196 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
197 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
198
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
199 BasicOView.prototype.isContainerOpen =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
200 function bov_isctropen (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
201 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
202 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
203 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
204
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
205 BasicOView.prototype.isContainerEmpty =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
206 function bov_isctrempt (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
207 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
208 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
209 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
210
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
211 BasicOView.prototype.isSeparator =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
212 function bov_isseparator (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
213 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
214 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
215 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
216
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
217 BasicOView.prototype.isSorted =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
218 function bov_issorted (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
219 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
220 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
221 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
222
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
223 BasicOView.prototype.canDrop =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
224 function bov_drop (index, orientation)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
225 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
226 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
227 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
228
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
229 BasicOView.prototype.drop =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
230 function bov_drop (index, orientation)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
231 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
232 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
233 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
234
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
235 BasicOView.prototype.getParentIndex =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
236 function bov_getpi (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
237 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
238 if (index < 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
239 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
240
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
241 return 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
242 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
243
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
244 BasicOView.prototype.hasNextSibling =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
245 function bov_hasnxtsib (rowIndex, afterIndex)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
246 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
247 return (afterIndex < (this.rowCount - 1));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
248 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
249
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
250 BasicOView.prototype.getLevel =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
251 function bov_getlvl (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
252 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
253 return 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
254 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
255
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
256 BasicOView.prototype.getImageSrc =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
257 function bov_getimgsrc (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
258 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
259 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
260
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
261 BasicOView.prototype.getProgressMode =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
262 function bov_getprgmode (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
263 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
264 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
265
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
266 BasicOView.prototype.getCellValue =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
267 function bov_getcellval (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
268 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
269 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
270
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
271 BasicOView.prototype.getCellText =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
272 function bov_getcelltxt (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
273 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
274 if (!this.columnNames)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
275 return "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
276
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
277 if (typeof col == "object")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
278 col = col.id;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
279
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
280 var ary = col.match (/:(.*)/);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
281 if (ary)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
282 col = ary[1];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
283
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
284 var colName = this.columnNames[col];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
285
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
286 if (typeof colName == "undefined")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
287 return "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
288
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
289 return this.data[row][colName];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
290 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
291
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
292 BasicOView.prototype.setTree =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
293 function bov_seto (tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
294 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
295 this.tree = tree;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
296 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
297
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
298 BasicOView.prototype.toggleOpenState =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
299 function bov_toggleopen (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
300 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
301 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
302
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
303 BasicOView.prototype.cycleHeader =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
304 function bov_cyclehdr (col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
305 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
306 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
307
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
308 BasicOView.prototype.selectionChanged =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
309 function bov_selchg ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
310 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
311 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
312
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
313 BasicOView.prototype.cycleCell =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
314 function bov_cyclecell (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
315 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
316 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
317
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
318 BasicOView.prototype.isEditable =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
319 function bov_isedit (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
320 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
321 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
322 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
323
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
324 BasicOView.prototype.setCellValue =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
325 function bov_setct (row, col, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
326 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
327 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
328
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
329 BasicOView.prototype.setCellText =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
330 function bov_setct (row, col, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
331 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
332 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
333
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
334 BasicOView.prototype.onRouteFocus =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
335 function bov_rfocus (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
336 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
337 if ("onFocus" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
338 this.onFocus(event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
339 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
340
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
341 BasicOView.prototype.onRouteBlur =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
342 function bov_rblur (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
343 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
344 if ("onBlur" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
345 this.onBlur(event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
346 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
347
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
348 BasicOView.prototype.onRouteDblClick =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
349 function bov_rdblclick (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
350 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
351 if (!("onRowCommand" in this) || event.target.localName != "treechildren")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
352 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
353
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
354 var rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
355 if (rowIndex == -1 || rowIndex > this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
356 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
357 var rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
358 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
359 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
360 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
361 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
362 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
363
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
364 this.onRowCommand(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
365 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
366
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
367 BasicOView.prototype.onRouteKeyPress =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
368 function bov_rkeypress (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
369 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
370 var rec;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
371 var rowIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
372
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
373 if ("onRowCommand" in this && (event.keyCode == 13 || event.charCode == 32))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
374 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
375 if (!this.selection)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
376 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
377
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
378 rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
379 if (rowIndex == -1 || rowIndex > this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
380 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
381 rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
382 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
383 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
384 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
385 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
386 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
387
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
388 this.onRowCommand(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
389 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
390 else if ("onKeyPress" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
391 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
392 rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
393 if (rowIndex != -1 && rowIndex < this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
394 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
395 rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
396 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
397 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
398 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
399 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
400 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
401 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
402 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
403 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
404 rec = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
405 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
406
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
407 this.onKeyPress(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
408 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
409 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
410
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
411 BasicOView.prototype.performAction =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
412 function bov_pact (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
413 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
414 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
415
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
416 BasicOView.prototype.performActionOnRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
417 function bov_pactrow (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
418 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
419 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
420
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
421 BasicOView.prototype.performActionOnCell =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
422 function bov_pactcell (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
423 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
424 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
425
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
426 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
427 * record for the XULTreeView. these things take care of keeping the
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
428 * XULTreeView properly informed of changes in value and child count. you
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
429 * shouldn't have to maintain tree state at all.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
430 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
431 * |share| should be an otherwise empty object to store cache data.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
432 * you should use the same object as the |share| for the XULTreeView that you
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
433 * indend to contain these records.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
434 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
435 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
436 function XULTreeViewRecord(share)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
437 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
438 this._share = share;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
439 this.visualFootprint = 1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
440 this.isHidden = true; /* records are considered hidden until they are
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
441 * inserted into a live tree */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
442 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
443
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
444 XULTreeViewRecord.prototype.properties = "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
445
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
446 XULTreeViewRecord.prototype.isContainerOpen = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
447
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
448 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
449 * walk the parent tree to find our tree container. return null if there is
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
450 * none
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
451 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
452 XULTreeViewRecord.prototype.findContainerTree =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
453 function xtvr_gettree ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
454 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
455 if (!("parentRecord" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
456 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
457 var parent = this.parentRecord;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
458
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
459 while (parent)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
460 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
461 if ("_treeView" in parent)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
462 return parent._treeView;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
463 if ("parentRecord" in parent)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
464 parent = parent.parentRecord;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
465 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
466 parent = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
467 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
468
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
469 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
470 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
471
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
472 XULTreeViewRecord.prototype.__defineGetter__("childIndex", xtvr_getChildIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
473 function xtvr_getChildIndex ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
474 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
475 //dd ("getChildIndex {");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
476
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
477 if (!("parentRecord" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
478 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
479 delete this._childIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
480 //dd ("} -1");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
481 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
482 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
483
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
484 if ("_childIndex" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
485 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
486 if ("childData" in this && this._childIndex in this.childData &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
487 this.childData[this._childIndex] == this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
488 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
489 //dd ("} " + this._childIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
490 return this._childIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
491 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
492 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
493
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
494 var childData = this.parentRecord.childData;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
495 var len = childData.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
496 for (var i = 0; i < len; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
497 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
498 if (childData[i] == this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
499 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
500 this._childIndex = i;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
501 //dd ("} " + this._childIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
502 return i;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
503 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
504 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
505
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
506 delete this._childIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
507 //dd ("} -1");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
508 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
509 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
510
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
511 XULTreeViewRecord.prototype.__defineSetter__("childIndex", xtvr_setChildIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
512 function xtvr_setChildIndex ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
513 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
514 dd("xtvr: childIndex is read only, ignore attempt to write to it\n");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
515 if (typeof getStackTrace == "function")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
516 dd(getStackTrace());
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
517 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
518
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
519 /* count the number of parents, not including the root node */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
520 XULTreeViewRecord.prototype.__defineGetter__("level", xtvr_getLevel);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
521 function xtvr_getLevel ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
522 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
523 if (!("parentRecord" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
524 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
525
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
526 var rv = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
527 var parentRecord = this.parentRecord;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
528 while ("parentRecord" in parentRecord &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
529 (parentRecord = parentRecord.parentRecord)) ++rv;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
530 return rv;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
531 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
532
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
533 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
534 * associates a property name on this record, with a column in the tree. This
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
535 * method will set up a get/set pair for the property name you specify which
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
536 * will take care of updating the tree when the value changes. DO NOT try
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
537 * to change your mind later. Do not attach a different name to the same colID,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
538 * and do not rename the colID. You have been warned.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
539 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
540 XULTreeViewRecord.prototype.setColumnPropertyName =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
541 function xtvr_setcol (colID, propertyName)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
542 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
543 function xtvr_getValueShim ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
544 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
545 return this._colValues[colID];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
546 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
547 function xtvr_setValueShim (newValue)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
548 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
549 this._colValues[colID] = newValue;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
550 return newValue;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
551 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
552
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
553 if (!("_colValues" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
554 this._colValues = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
555 if (!("_colProperties" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
556 this._colProperties = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
557
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
558 if (typeof propertyName == "function")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
559 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
560 this._colValues.__defineGetter__(colID, propertyName);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
561 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
562 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
563 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
564 this.__defineGetter__(propertyName, xtvr_getValueShim);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
565 this.__defineSetter__(propertyName, xtvr_setValueShim);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
566 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
567 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
568
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
569 XULTreeViewRecord.prototype.setColumnPropertyValue =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
570 function xtvr_setcolv (colID, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
571 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
572 this._colValues[colID] = value;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
573 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
574
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
575 XULTreeViewRecord.prototype.setColumnProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
576 function xtvr_setcolp (colID, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
577 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
578 this._colProperties[colID] = value;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
579 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
580
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
581 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
582 * set the default sort column and reSort.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
583 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
584 XULTreeViewRecord.prototype.setSortColumn =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
585 function xtvr_setcol (colID, dir)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
586 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
587 //dd ("setting sort column to " + colID);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
588 this._share.sortColumn = colID;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
589 this._share.sortDirection = (typeof dir == "undefined") ? 1 : dir;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
590 this.reSort();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
591 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
592
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
593 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
594 * set the default sort direction. 1 is ascending, -1 is descending, 0 is no
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
595 * sort. setting this to 0 will *not* recover the natural insertion order,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
596 * it will only affect newly added items.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
597 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
598 XULTreeViewRecord.prototype.setSortDirection =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
599 function xtvr_setdir (dir)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
600 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
601 this._share.sortDirection = dir;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
602 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
603
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
604 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
605 * invalidate this row in the tree
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
606 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
607 XULTreeViewRecord.prototype.invalidate =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
608 function xtvr_invalidate()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
609 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
610 var tree = this.findContainerTree();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
611 if (tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
612 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
613 var row = this.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
614 if (row != -1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
615 tree.tree.invalidateRow(row);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
616 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
617 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
618
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
619 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
620 * invalidate any data in the cache.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
621 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
622 XULTreeViewRecord.prototype.invalidateCache =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
623 function xtvr_killcache()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
624 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
625 this._share.rowCache = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
626 this._share.lastComputedIndex = -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
627 this._share.lastIndexOwner = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
628 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
629
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
630 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
631 * default comparator function for sorts. if you want a custom sort, override
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
632 * this method. We declare xtvr_sortcmp as a top level function, instead of
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
633 * a function expression so we can refer to it later.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
634 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
635 XULTreeViewRecord.prototype.sortCompare = xtvr_sortcmp;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
636 function xtvr_sortcmp (a, b)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
637 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
638 var sc = a._share.sortColumn;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
639 var sd = a._share.sortDirection;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
640
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
641 a = a[sc];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
642 b = b[sc];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
643
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
644 if (a < b)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
645 return -1 * sd;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
646
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
647 if (a > b)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
648 return 1 * sd;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
649
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
650 return 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
651 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
652
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
653 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
654 * this method will cause all child records to be reSorted. any records
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
655 * with the default sortCompare method will be sorted by the colID passed to
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
656 * setSortColumn.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
657 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
658 * the local parameter is used internally to control whether or not the
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
659 * sorted rows are invalidated. don't use it yourself.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
660 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
661 XULTreeViewRecord.prototype.reSort =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
662 function xtvr_resort (leafSort)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
663 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
664 if (!("childData" in this) || this.childData.length < 1 ||
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
665 (this.childData[0].sortCompare == xtvr_sortcmp &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
666 !("sortColumn" in this._share) || this._share.sortDirection == 0))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
667 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
668 /* if we have no children, or we have the default sort compare and no
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
669 * sort flags, then just exit */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
670 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
671 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
672
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
673 this.childData.sort(this.childData[0].sortCompare);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
674
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
675 for (var i = 0; i < this.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
676 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
677 if ("isContainerOpen" in this.childData[i] &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
678 this.childData[i].isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
679 this.childData[i].reSort(true);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
680 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
681 this.childData[i].sortIsInvalid = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
682 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
683
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
684 if (!leafSort)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
685 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
686 this.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
687 var tree = this.findContainerTree();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
688 if (tree && tree.tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
689 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
690 var rowIndex = this.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
691 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
692 dd ("invalidating " + rowIndex + " - " +
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
693 (rowIndex + this.visualFootprint - 1));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
694 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
695 tree.tree.invalidateRange (rowIndex,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
696 rowIndex + this.visualFootprint - 1);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
697 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
698 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
699 delete this.sortIsInvalid;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
700 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
701
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
702 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
703 * call this to indicate that this node may have children at one point. make
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
704 * sure to call it before adding your first child.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
705 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
706 XULTreeViewRecord.prototype.reserveChildren =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
707 function xtvr_rkids (always)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
708 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
709 if (!("childData" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
710 this.childData = new Array();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
711 if (!("isContainerOpen" in this))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
712 this.isContainerOpen = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
713 if (always)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
714 this.alwaysHasChildren = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
715 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
716 delete this.alwaysHasChildren;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
717 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
718
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
719 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
720 * add a child to the end of the child list for this record. takes care of
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
721 * updating the tree as well.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
722 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
723 XULTreeViewRecord.prototype.appendChild =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
724 function xtvr_appchild (child)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
725 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
726 if (!(child instanceof XULTreeViewRecord))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
727 throw Components.results.NS_ERROR_INVALID_ARG;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
728
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
729 child.isHidden = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
730 child.parentRecord = this;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
731 this.childData.push(child);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
732
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
733 if ("isContainerOpen" in this && this.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
734 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
735 //dd ("appendChild: " + xtv_formatRecord(child, ""));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
736 if (this.calculateVisualRow() >= 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
737 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
738 var tree = this.findContainerTree();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
739 if (tree && tree.frozen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
740 this.needsReSort = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
741 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
742 this.reSort(true); /* reSort, don't invalidate. we're going
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
743 * to do that in the
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
744 * onVisualFootprintChanged call. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
745 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
746 this.onVisualFootprintChanged(child.calculateVisualRow(),
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
747 child.visualFootprint);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
748 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
749 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
750
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
751 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
752 * add a list of children to the end of the child list for this record.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
753 * faster than multiple appendChild() calls.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
754 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
755 XULTreeViewRecord.prototype.appendChildren =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
756 function xtvr_appchild (children)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
757 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
758 var idx = this.childData.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
759 var delta = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
760 var len = children.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
761 for (var i = 0; i < len; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
762 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
763 var child = children[i];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
764 child.isHidden = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
765 child.parentRecord = this;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
766 this.childData.push(child);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
767 delta += child.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
768 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
769
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
770 if ("isContainerOpen" in this && this.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
771 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
772 if (this.calculateVisualRow() >= 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
773 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
774 this.reSort(true); /* reSort, don't invalidate. we're going to do
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
775 * that in the onVisualFootprintChanged call. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
776 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
777 this.onVisualFootprintChanged(this.childData[0].calculateVisualRow(),
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
778 delta);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
779 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
780 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
781
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
782 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
783 * remove a child from this record. updates the tree too. DON'T call this with
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
784 * an index not actually contained by this record.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
785 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
786 XULTreeViewRecord.prototype.removeChildAtIndex =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
787 function xtvr_remchild (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
788 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
789 if (!ASSERT(this.childData.length, "removing from empty childData"))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
790 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
791
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
792 var orphan = this.childData[index];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
793 var fpDelta = -orphan.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
794 var changeStart = orphan.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
795 delete orphan.parentRecord;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
796 arrayRemoveAt (this.childData, index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
797
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
798 if (!orphan.isHidden && "isContainerOpen" in this && this.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
799 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
800 this.onVisualFootprintChanged (changeStart, fpDelta);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
801 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
802 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
803
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
804 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
805 * hide this record and all descendants.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
806 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
807 XULTreeViewRecord.prototype.hide =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
808 function xtvr_hide ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
809 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
810 if (this.isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
811 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
812
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
813 /* get the row before hiding */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
814 var row = this.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
815 this.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
816 this.isHidden = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
817 /* go right to the parent so we don't muck with our own visualFootprint
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
818 * record, we'll need it to be correct if we're ever unHidden. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
819 if ("parentRecord" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
820 this.parentRecord.onVisualFootprintChanged (row, -this.visualFootprint);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
821 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
822
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
823 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
824 * unhide this record and all descendants.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
825 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
826 XULTreeViewRecord.prototype.unHide =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
827 function xtvr_uhide ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
828 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
829 if (!this.isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
830 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
831
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
832 this.isHidden = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
833 this.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
834 var row = this.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
835 if (this.parentRecord)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
836 this.parentRecord.onVisualFootprintChanged (row, this.visualFootprint);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
837 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
838
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
839 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
840 * open this record, exposing it's children. DON'T call this method if the
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
841 * record has no children.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
842 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
843 XULTreeViewRecord.prototype.open =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
844 function xtvr_open ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
845 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
846 if (this.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
847 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
848
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
849 if ("onPreOpen" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
850 this.onPreOpen();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
851
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
852 this.isContainerOpen = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
853 var delta = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
854 for (var i = 0; i < this.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
855 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
856 if (!this.childData[i].isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
857 delta += this.childData[i].visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
858 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
859
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
860 /* this reSort should only happen if the sort column changed */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
861 this.reSort(true);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
862 this.visualFootprint += delta;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
863 if ("parentRecord" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
864 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
865 this.parentRecord.onVisualFootprintChanged(this.calculateVisualRow(),
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
866 0);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
867 this.parentRecord.onVisualFootprintChanged(this.calculateVisualRow() +
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
868 1, delta);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
869 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
870 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
871
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
872 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
873 * close this record, hiding it's children. DON'T call this method if the record
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
874 * has no children, or if it is already closed.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
875 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
876 XULTreeViewRecord.prototype.close =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
877 function xtvr_close ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
878 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
879 if (!this.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
880 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
881
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
882 this.isContainerOpen = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
883 var delta = 1 - this.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
884 this.visualFootprint += delta;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
885 if ("parentRecord" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
886 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
887 this.parentRecord.onVisualFootprintChanged(this.calculateVisualRow(),
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
888 0);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
889 this.parentRecord.onVisualFootprintChanged(this.calculateVisualRow() +
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
890 1, delta);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
891 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
892
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
893 if ("onPostClose" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
894 this.onPostClose();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
895 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
896
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
897 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
898 * called when a node above this one grows or shrinks. we need to adjust
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
899 * our own visualFootprint to match the change, and pass the message on.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
900 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
901 XULTreeViewRecord.prototype.onVisualFootprintChanged =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
902 function xtvr_vpchange (start, amount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
903 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
904 /* if we're not hidden, but this notification came from a hidden node
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
905 * (start == -1), ignore it, it doesn't affect us. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
906 if (start == -1 && !this.isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
907 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
908
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
909 //dd ("vfp change (" + amount + ") from hidden node ignored.");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
910 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
911 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
912
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
913 this.visualFootprint += amount;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
914
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
915 if ("parentRecord" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
916 this.parentRecord.onVisualFootprintChanged(start, amount);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
917 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
918
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
919 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
920 * calculate the "visual" row for this record. If the record isn't actually
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
921 * visible return -1.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
922 * eg.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
923 * Name Visual Row
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
924 * node1 0
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
925 * node11 1
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
926 * node12 2
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
927 * node2 3
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
928 * node21 4
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
929 * node3 5
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
930 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
931 XULTreeViewRecord.prototype.calculateVisualRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
932 function xtvr_calcrow ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
933 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
934 /* if this is the second time in a row that someone asked us, fetch the last
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
935 * result from the cache. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
936 if (this._share.lastIndexOwner == this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
937 return this._share.lastComputedIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
938
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
939 var vrow;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
940
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
941 /* if this is an uninserted or hidden node, or... */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
942 if (!("parentRecord" in this) || (this.isHidden) ||
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
943 /* if parent isn't open, or... */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
944 (!this.parentRecord.isContainerOpen) ||
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
945 /* parent isn't visible */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
946 ((vrow = this.parentRecord.calculateVisualRow()) == -1))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
947 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
948 /* then we're not visible, return -1 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
949 //dd ("cvr: returning -1");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
950 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
951 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
952
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
953 /* parent is the root node XXX parent is not visible */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
954 if (vrow == null)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
955 vrow = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
956 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
957 /* parent is not the root node, add one for the space they take up. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
958 ++vrow;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
959
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
960 /* add in the footprint for all of the earlier siblings */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
961 var ci = this.childIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
962 for (var i = 0; i < ci; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
963 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
964 if (!this.parentRecord.childData[i].isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
965 vrow += this.parentRecord.childData[i].visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
966 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
967
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
968 /* save this calculation to the cache. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
969 this._share.lastIndexOwner = this;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
970 this._share.lastComputedIndex = vrow;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
971
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
972 return vrow;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
973 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
974
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
975 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
976 * locates the child record for the visible row |targetRow|. DO NOT call this
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
977 * with a targetRow less than this record's visual row, or greater than this
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
978 * record's visual row + the number of visible children it has.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
979 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
980 XULTreeViewRecord.prototype.locateChildByVisualRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
981 function xtvr_find (targetRow, myRow)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
982 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
983 if (targetRow in this._share.rowCache)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
984 return this._share.rowCache[targetRow];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
985
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
986 /* if this is true, we *are* the index */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
987 if (targetRow == myRow)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
988 return (this._share.rowCache[targetRow] = this);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
989
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
990 /* otherwise, we've got to search the kids */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
991 var childStart = myRow; /* childStart represents the starting visual row
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
992 * for the child we're examining. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
993 for (var i = 0; i < this.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
994 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
995 var child = this.childData[i];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
996 /* ignore hidden children */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
997 if (child.isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
998 continue;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
999 /* if this kid is the targetRow, we're done */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1000 if (childStart == targetRow)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1001 return (this._share.rowCache[targetRow] = child);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1002 /* if this kid contains the index, ask *it* to find the record */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1003 else if (targetRow <= childStart + child.visualFootprint) {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1004 /* this *has* to succeed */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1005 var rv = child.locateChildByVisualRow(targetRow, childStart + 1);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1006 //XXXASSERT (rv, "Can't find a row that *has* to be there.");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1007 /* don't cache this, the previous call to locateChildByVisualRow
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1008 * just did. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1009 return rv;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1010 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1011
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1012 /* otherwise, get ready to ask the next kid */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1013 childStart += child.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1014 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1015
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1016 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1017 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1018
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1019 /* XTLabelRecords can be used to drop a label into an arbitrary place in an
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1020 * arbitrary tree. normally, specializations of XULTreeViewRecord are tied to
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1021 * a specific tree because of implementation details. XTLabelRecords are
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1022 * specially designed (err, hacked) to work around these details. this makes
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1023 * them slower, but more generic.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1024 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1025 * we set up a getter for _share that defers to the parent object. this lets
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1026 * XTLabelRecords work in any tree.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1027 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1028 function XTLabelRecord (columnName, label, blankCols)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1029 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1030 this.setColumnPropertyName (columnName, "label");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1031 this.label = label;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1032 this.property = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1033
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1034 if (typeof blankCols == "object")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1035 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1036 for (var i in blankCols)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1037 this._colValues[blankCols[i]] = "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1038 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1039 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1040
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1041 XTLabelRecord.prototype = new XULTreeViewRecord (null);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1042
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1043 XTLabelRecord.prototype.__defineGetter__("_share", tolr_getshare);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1044 function tolr_getshare()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1045 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1046 if ("parentRecord" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1047 return this.parentRecord._share;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1048
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1049 ASSERT (0, "XTLabelRecord cannot be the root of a visible tree.");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1050 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1051 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1052
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1053 /* XTRootRecord is used internally by XULTreeView, you probably don't need to
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1054 * make any of these */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1055 function XTRootRecord (tree, share)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1056 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1057 this._share = share;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1058 this._treeView = tree;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1059 this.visualFootprint = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1060 this.isHidden = false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1061 this.reserveChildren();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1062 this.isContainerOpen = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1063 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1064
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1065 /* no cache passed in here, we set it in the XTRootRecord contructor instead. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1066 XTRootRecord.prototype = new XULTreeViewRecord (null);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1067
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1068 XTRootRecord.prototype.open =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1069 XTRootRecord.prototype.close =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1070 function torr_notimplemented()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1071 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1072 /* don't do this on a root node */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1073 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1074
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1075 XTRootRecord.prototype.calculateVisualRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1076 function torr_calcrow ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1077 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1078 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1079 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1080
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1081 XTRootRecord.prototype.reSort =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1082 function torr_resort ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1083 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1084 if ("_treeView" in this && this._treeView.frozen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1085 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1086 this._treeView.needsReSort = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1087 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1088 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1089
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1090 if (!("childData" in this) || this.childData.length < 1 ||
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1091 (this.childData[0].sortCompare == xtvr_sortcmp &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1092 !("sortColumn" in this._share) || this._share.sortDirection == 0))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1093 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1094 /* if we have no children, or we have the default sort compare but we're
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1095 * missing a sort flag, then just exit */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1096 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1097 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1098
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1099 this.childData.sort(this.childData[0].sortCompare);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1100
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1101 for (var i = 0; i < this.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1102 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1103 if ("isContainerOpen" in this.childData[i] &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1104 this.childData[i].isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1105 this.childData[i].reSort(true);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1106 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1107 this.childData[i].sortIsInvalid = true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1108 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1109
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1110 if ("_treeView" in this && this._treeView.tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1111 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1112 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1113 dd ("root node: invalidating 0 - " + this.visualFootprint +
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1114 " for sort");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1115 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1116 this.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1117 this._treeView.tree.invalidateRange (0, this.visualFootprint);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1118 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1119 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1120
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1121 XTRootRecord.prototype.locateChildByVisualRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1122 function torr_find (targetRow)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1123 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1124 if (targetRow in this._share.rowCache)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1125 return this._share.rowCache[targetRow];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1126
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1127 var childStart = -1; /* childStart represents the starting visual row
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1128 * for the child we're examining. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1129 for (var i = 0; i < this.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1130 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1131 var child = this.childData[i];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1132 /* ignore hidden children */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1133 if (child.isHidden)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1134 continue;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1135 /* if this kid is the targetRow, we're done */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1136 if (childStart == targetRow)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1137 return (this._share.rowCache[targetRow] = child);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1138 /* if this kid contains the index, ask *it* to find the record */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1139 else if (targetRow <= childStart + child.visualFootprint) {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1140 /* this *has* to succeed */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1141 var rv = child.locateChildByVisualRow(targetRow, childStart + 1);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1142 //XXXASSERT (rv, "Can't find a row that *has* to be there.");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1143 /* don't cache this, the previous call to locateChildByVisualRow
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1144 * just did. */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1145 return rv;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1146 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1147
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1148 /* otherwise, get ready to ask the next kid */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1149 childStart += child.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1150 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1151
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1152 return null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1153 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1154
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1155 XTRootRecord.prototype.onVisualFootprintChanged =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1156 function torr_vfpchange (start, amount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1157 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1158 if (!this._treeView.frozen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1159 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1160 this.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1161 this.visualFootprint += amount;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1162 if ("_treeView" in this && "tree" in this._treeView &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1163 this._treeView.tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1164 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1165 if (amount != 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1166 this._treeView.tree.rowCountChanged (start, amount);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1167 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1168 this._treeView.tree.invalidateRow (start);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1169 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1170 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1171 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1172 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1173 if ("changeAmount" in this._treeView)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1174 this._treeView.changeAmount += amount;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1175 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1176 this._treeView.changeAmount = amount;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1177 if ("changeStart" in this._treeView)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1178 this._treeView.changeStart =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1179 Math.min (start, this._treeView.changeStart);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1180 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1181 this._treeView.changeStart = start;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1182 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1183 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1184
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1185 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1186 * XULTreeView provides functionality of tree whose elements have multiple
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1187 * levels of children.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1188 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1189
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1190 function XULTreeView(share)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1191 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1192 if (!share)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1193 share = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1194 this.childData = new XTRootRecord(this, share);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1195 this.childData.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1196 this.tree = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1197 this.share = share;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1198 this.frozen = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1199 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1200
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1201 /* functions *you* should call to initialize and maintain the tree state */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1202
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1203 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1204 * Changes to the tree contents will not cause the tree to be invalidated
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1205 * until thaw() is called. All changes will be pooled into a single invalidate
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1206 * call.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1207 *
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1208 * Freeze/thaws are nestable, the tree will not update until the number of
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1209 * thaw() calls matches the number of freeze() calls.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1210 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1211 XULTreeView.prototype.freeze =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1212 function xtv_freeze ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1213 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1214 if (++this.frozen == 1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1215 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1216 this.changeStart = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1217 this.changeAmount = 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1218 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1219 //dd ("freeze " + this.frozen);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1220 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1221
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1222 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1223 * Reflect any changes to the tree content since the last freeze.
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1224 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1225 XULTreeView.prototype.thaw =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1226 function xtv_thaw ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1227 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1228 if (this.frozen == 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1229 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1230 ASSERT (0, "not frozen");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1231 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1232 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1233
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1234 if (--this.frozen == 0 && "changeStart" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1235 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1236 this.childData.onVisualFootprintChanged(this.changeStart,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1237 this.changeAmount);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1238 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1239
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1240 if ("needsReSort" in this) {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1241 this.childData.reSort();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1242 delete this.needsReSort;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1243 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1244
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1245
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1246 delete this.changeStart;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1247 delete this.changeAmount;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1248 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1249
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1250 XULTreeView.prototype.saveBranchState =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1251 function xtv_savebranch (target, source, recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1252 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1253 var len = source.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1254 for (var i = 0; i < len; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1255 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1256 if (source[i].isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1257 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1258 target[i] = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1259 target[i].name = source[i]._colValues["col-0"];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1260 if (recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1261 this.saveBranchState (target[i], source[i].childData, true);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1262 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1263 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1264 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1265
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1266 XULTreeView.prototype.restoreBranchState =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1267 function xtv_restorebranch (target, source, recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1268 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1269 for (var i in source)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1270 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1271 if (typeof source[i] == "object")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1272 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1273 var name = source[i].name;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1274 var len = target.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1275 for (var j = 0; j < len; ++j)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1276 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1277 if (target[j]._colValues["col-0"] == name &&
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1278 "childData" in target[j])
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1279 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1280 //dd ("opening " + name);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1281 target[j].open();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1282 if (recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1283 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1284 this.restoreBranchState (target[j].childData,
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1285 source[i], true);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1286 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1287 break;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1288 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1289 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1290 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1291 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1292 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1293
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1294 /* scroll the line specified by |line| to the center of the tree */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1295 XULTreeView.prototype.centerLine =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1296 function xtv_ctrln (line)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1297 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1298 var first = this.tree.getFirstVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1299 var last = this.tree.getLastVisibleRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1300 this.scrollToRow(line - (last - first + 1) / 2);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1301 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1302
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1303 /*
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1304 * functions the tree will call to retrieve the list state (nsITreeView.)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1305 */
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1306
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1307 XULTreeView.prototype.__defineGetter__("rowCount", xtv_getRowCount);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1308 function xtv_getRowCount ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1309 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1310 if (!this.childData)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1311 return 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1312
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1313 return this.childData.visualFootprint;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1314 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1315
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1316 XULTreeView.prototype.isContainer =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1317 function xtv_isctr (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1318 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1319 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1320
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1321 return Boolean(row && ("alwaysHasChildren" in row || "childData" in row));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1322 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1323
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1324 XULTreeView.prototype.__defineGetter__("selectedIndex", xtv_getsel);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1325 function xtv_getsel()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1326 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1327 if (!this.tree || this.tree.view.selection.getRangeCount() < 1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1328 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1329
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1330 var min = new Object();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1331 this.tree.view.selection.getRangeAt(0, min, {});
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1332 return min.value;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1333 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1334
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1335 XULTreeView.prototype.__defineSetter__("selectedIndex", xtv_setsel);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1336 function xtv_setsel(i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1337 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1338 this.tree.view.selection.clearSelection();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1339 if (i != -1)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1340 this.tree.view.selection.timedSelect (i, 500);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1341 return i;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1342 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1343
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1344 XULTreeView.prototype.scrollTo = BasicOView.prototype.scrollTo;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1345
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1346 XULTreeView.prototype.isContainerOpen =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1347 function xtv_isctropen (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1348 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1349 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1350 return row && row.isContainerOpen;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1351 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1352
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1353 XULTreeView.prototype.toggleOpenState =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1354 function xtv_toggleopen (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1355 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1356 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1357 //ASSERT(row, "bogus row");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1358 if (row)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1359 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1360 if (row.isContainerOpen)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1361 row.close();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1362 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1363 row.open();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1364 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1365 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1366
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1367 XULTreeView.prototype.isContainerEmpty =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1368 function xtv_isctrempt (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1369 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1370 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1371 if ("alwaysHasChildren" in row)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1372 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1373
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1374 if (!row || !("childData" in row))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1375 return true;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1376
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1377 return !row.childData.length;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1378 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1379
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1380 XULTreeView.prototype.isSeparator =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1381 function xtv_isseparator (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1382 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1383 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1384 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1385
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1386 XULTreeView.prototype.getParentIndex =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1387 function xtv_getpi (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1388 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1389 if (index < 0)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1390 return -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1391
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1392 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1393
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1394 var rv = row.parentRecord.calculateVisualRow();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1395 //dd ("getParentIndex: row " + index + " returning " + rv);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1396 return (rv != null) ? rv : -1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1397 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1398
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1399 XULTreeView.prototype.hasNextSibling =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1400 function xtv_hasnxtsib (rowIndex, afterIndex)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1401 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1402 var row = this.childData.locateChildByVisualRow (rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1403 return row.childIndex < row.parentRecord.childData.length - 1;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1404 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1405
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1406 XULTreeView.prototype.getLevel =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1407 function xtv_getlvl (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1408 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1409 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1410 if (!row)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1411 return 0;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1412
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1413 return row.level;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1414 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1415
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1416 XULTreeView.prototype.getImageSrc =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1417 function xtv_getimgsrc (index, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1418 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1419 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1420
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1421 XULTreeView.prototype.getProgressMode =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1422 function xtv_getprgmode (index, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1423 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1424 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1425
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1426 XULTreeView.prototype.getCellValue =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1427 function xtv_getcellval (index, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1428 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1429 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1430
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1431 XULTreeView.prototype.getCellText =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1432 function xtv_getcelltxt (index, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1433 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1434 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1435 //ASSERT(row, "bogus row " + index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1436
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1437 if (typeof col == "object")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1438 col = col.id;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1439
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1440 var ary = col.match (/:(.*)/);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1441 if (ary)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1442 col = ary[1];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1443
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1444 if (row && row._colValues && col in row._colValues)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1445 return row._colValues[col];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1446 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1447 return "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1448 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1449
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1450 XULTreeView.prototype.getCellProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1451 function xtv_cellprops (row, col, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1452 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1453 var row = this.childData.locateChildByVisualRow (row);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1454
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1455 if (typeof col == "object")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1456 col = col.id;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1457
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1458 var ary = col.match (/:(.*)/);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1459 if (ary)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1460 col = ary[1];
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1461
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1462 if (row && row._colProperties && col in row._colProperties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1463 xtv_atomizeText(row._colProperties[col], properties);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1464 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1465
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1466 XULTreeView.prototype.getColumnProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1467 function xtv_colprops (col, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1468 {}
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1469
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1470 XULTreeView.prototype.getRowProperties =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1471 function xtv_rowprops (index, properties)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1472 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1473 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1474
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1475 xtv_atomizeText(row.properties, properties);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1476 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1477
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1478 XULTreeView.prototype.isSorted =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1479 function xtv_issorted (index)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1480 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1481 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1482 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1483
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1484 XULTreeView.prototype.canDrop =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1485 function xtv_drop (index, orientation)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1486 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1487 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1488 //ASSERT(row, "bogus row " + index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1489 return (row && ("canDrop" in row) && row.canDrop(orientation));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1490 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1491
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1492 XULTreeView.prototype.drop =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1493 function xtv_drop (index, orientation)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1494 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1495 var row = this.childData.locateChildByVisualRow (index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1496 //ASSERT(row, "bogus row " + index);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1497 return (row && ("drop" in row) && row.drop(orientation));
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1498 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1499
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1500 XULTreeView.prototype.setTree =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1501 function xtv_seto (tree)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1502 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1503 this.childData.invalidateCache();
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1504 this.tree = tree;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1505 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1506
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1507 XULTreeView.prototype.cycleHeader =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1508 function xtv_cyclehdr (col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1509 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1510 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1511
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1512 XULTreeView.prototype.selectionChanged =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1513 function xtv_selchg ()
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1514 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1515 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1516
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1517 XULTreeView.prototype.cycleCell =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1518 function xtv_cyclecell (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1519 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1520 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1521
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1522 XULTreeView.prototype.isEditable =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1523 function xtv_isedit (row, col)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1524 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1525 return false;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1526 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1527
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1528 XULTreeView.prototype.setCellValue =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1529 function xtv_setct (row, col, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1530 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1531 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1532
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1533 XULTreeView.prototype.setCellText =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1534 function xtv_setct (row, col, value)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1535 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1536 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1537
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1538 XULTreeView.prototype.performAction =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1539 function xtv_pact (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1540 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1541 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1542
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1543 XULTreeView.prototype.performActionOnRow =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1544 function xtv_pactrow (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1545 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1546 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1547
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1548 XULTreeView.prototype.performActionOnCell =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1549 function xtv_pactcell (action)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1550 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1551 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1552
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1553 XULTreeView.prototype.onRouteFocus =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1554 function xtv_rfocus (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1555 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1556 if ("onFocus" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1557 this.onFocus(event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1558 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1559
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1560 XULTreeView.prototype.onRouteBlur =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1561 function xtv_rblur (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1562 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1563 if ("onBlur" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1564 this.onBlur(event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1565 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1566
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1567 XULTreeView.prototype.onRouteDblClick =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1568 function xtv_rdblclick (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1569 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1570 if (!("onRowCommand" in this) || event.target.localName != "treechildren")
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1571 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1572
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1573 var rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1574 if (rowIndex == -1 || rowIndex > this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1575 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1576 var rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1577 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1578 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1579 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1580 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1581 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1582
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1583 this.onRowCommand(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1584 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1585
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1586 XULTreeView.prototype.onRouteKeyPress =
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1587 function xtv_rkeypress (event)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1588 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1589 var rec;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1590 var rowIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1591
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1592 if ("onRowCommand" in this && (event.keyCode == 13 || event.charCode == 32))
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1593 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1594 if (!this.selection)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1595 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1596
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1597 rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1598 if (rowIndex == -1 || rowIndex > this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1599 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1600 rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1601 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1602 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1603 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1604 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1605 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1606
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1607 this.onRowCommand(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1608 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1609 else if ("onKeyPress" in this)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1610 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1611 rowIndex = this.tree.view.selection.currentIndex;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1612 if (rowIndex != -1 && rowIndex < this.rowCount)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1613 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1614 rec = this.childData.locateChildByVisualRow(rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1615 if (!rec)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1616 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1617 ASSERT (0, "bogus row index " + rowIndex);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1618 return;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1619 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1620 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1621 else
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1622 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1623 rec = null;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1624 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1625
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1626 this.onKeyPress(rec, event);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1627 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1628 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1629
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1630 /******************************************************************************/
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1631
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1632 function xtv_atomizeText (text, array)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1633 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1634 var atomservice = Components.classes["@mozilla.org/atom-service;1"]
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1635 .getService(Components.interfaces.nsIAtomService);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1636
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1637 var parts = text.split(" ");
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1638 for (var i = 0; i<parts.length; i++)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1639 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1640 var atom = atomservice.getAtom(parts[i]);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1641 array.AppendElement(atom);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1642 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1643 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1644
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1645 function xtv_formatRecord (rec, indent)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1646 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1647 var str = "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1648
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1649 for (var i in rec._colValues)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1650 str += rec._colValues[i] + ", ";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1651
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1652 str += "[";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1653
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1654 str += rec.calculateVisualRow() + ", ";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1655 str += rec.childIndex + ", ";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1656 str += rec.level + ", ";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1657 str += rec.visualFootprint + ", ";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1658 str += rec.isHidden + "]";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1659
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1660 return (indent + str);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1661 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1662
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1663 function xtv_formatBranch (rec, indent, recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1664 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1665 var str = "";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1666 for (var i = 0; i < rec.childData.length; ++i)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1667 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1668 str += xtv_formatRecord (rec.childData[i], indent) + "\n";
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1669 if (recurse)
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1670 {
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1671 if ("childData" in rec.childData[i])
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1672 str += xtv_formatBranch(rec.childData[i], indent + " ",
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1673 --recurse);
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1674 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1675 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1676
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1677 return str;
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1678 }
472a16863ecc expanded nightly.jar
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff changeset
1679