Bug 377677, minor tree widget cleanup, mostly adding lots of tree tests, r=mano, a=sayrer

This commit is contained in:
enndeakin%sympatico.ca 2007-10-15 16:18:01 +00:00
Родитель 8b76b50057
Коммит dc596bbe92
7 изменённых файлов: 1551 добавлений и 20 удалений

Просмотреть файл

@ -73,6 +73,11 @@ _TEST_FILES = test_bug360220.xul \
test_statusbar.xul \
test_datepicker.xul \
test_timepicker.xul \
test_tree.xul \
test_tree_single.xul \
test_tree_hier.xul \
test_tree_hier_cell.xul \
tree_shared.js \
test_textbox_number.xul \
xul_selectcontrol.js \
test_panelfrommenu.xul \

Просмотреть файл

@ -0,0 +1,85 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
XUL Widget Test for tree using multiple row selection
-->
<window title="Tree" width="500" height="600"
onload="setTimeout(testtag_tree, 0, 'tree-simple', 'treechildren-simple', 'multiple', 'simple', 'tree');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="tree_shared.js"/>
<tree id="tree-simple" rows="4">
<treecols>
<treecol id="name" label="Name" sort="label" properties="one two" flex="1"/>
<treecol id="address" label="Address" flex="1"/>
</treecols>
<treechildren id="treechildren-simple">
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
</treerow>
</treeitem>
</treechildren>
</tree>
<!-- test resuls are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
SimpleTest.waitForExplicitFinish();
]]>
</script>
</window>

Просмотреть файл

@ -0,0 +1,137 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
XUL Widget Test for hierarchical tree
-->
<window title="Hierarchical Tree" width="500" height="600"
onload="setTimeout(testtag_tree, 0, 'tree-hier', 'treechildren-hier', 'multiple', '', 'hierarchical tree');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="tree_shared.js"/>
<tree id="tree-hier" rows="4">
<treecols>
<treecol id="name" label="Name" primary="true"
sort="label" properties="one two" flex="1"/>
<treecol id="address" label="Address" flex="2"/>
<treecol id="planet" label="Planet" flex="1"/>
<treecol id="gender" label="Gender" flex="1" cycler="true"/>
</treecols>
<treechildren id="treechildren-hier">
<treeitem>
<treerow properties="firstrow">
<treecell label="Mary" value="mary" properties="firstname"/>
<treecell label="206 Garden Avenue" value="206ga"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell/>
<treecell value="19ms"/>
<treecell label="Earth"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem container="true">
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
<treecell label="Saturn"/>
<treecell label="Female" value="f"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue"/>
<treecell label="Female" value="f"/>
<treecell label="Neptune"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
<treecell label="Omicron Persei 8"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell label="Neptune"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue" selectable="false"/>
<treecell label=""/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
<treecell label="Neptune"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell label="Mars"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
</treechildren>
</tree>
<!-- test resuls are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
SimpleTest.waitForExplicitFinish();
]]>
</script>
</window>

Просмотреть файл

@ -0,0 +1,137 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
XUL Widget Test for cell selection tree
-->
<window title="Cell Selection Tree" width="500" height="600"
onload="setTimeout(testtag_tree, 0, 'tree-cell', 'treechildren-cell', 'cell', '', 'cell selection tree');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="tree_shared.js"/>
<tree id="tree-cell" rows="4" seltype="cell">
<treecols>
<treecol id="name" label="Name" primary="true"
sort="label" properties="one two" flex="1"/>
<treecol id="address" label="Address" flex="2"/>
<treecol id="planet" label="Planet" flex="1"/>
<treecol id="gender" label="Gender" flex="1" cycler="true"/>
</treecols>
<treechildren id="treechildren-cell">
<treeitem>
<treerow properties="firstrow">
<treecell label="Mary" value="mary" properties="firstname"/>
<treecell label="206 Garden Avenue" value="206ga"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell/>
<treecell value="19ms"/>
<treecell label="Earth"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem container="true">
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
<treecell label="Saturn"/>
<treecell label="Female" value="f"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue"/>
<treecell label="Female" value="f"/>
<treecell label="Neptune"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
<treecell label="Omicron Persei 8"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell label="Neptune"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue" selectable="false"/>
<treecell label=""/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
<treecell label="Neptune"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue"/>
<treecell label="Earth"/>
<treecell label="Female" value="f"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
<treecell label="Mars"/>
<treecell label="Male" value="m"/>
</treerow>
</treeitem>
</treechildren>
</tree>
<!-- test resuls are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
SimpleTest.waitForExplicitFinish();
]]>
</script>
</window>

Просмотреть файл

@ -0,0 +1,111 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
<!--
XUL Widget Test for single selection tree
-->
<window title="Single Selection Tree" width="500" height="600"
onload="setTimeout(testtag_tree, 0, 'tree-single', 'treechildren-single',
'single', 'simple', 'single selection tree');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/javascript" src="/MochiKit/packed.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<script src="tree_shared.js"/>
<tree id="tree-single" rows="4" seltype="single">
<treecols>
<treecol id="name" label="Name" sort="label" properties="one two" flex="1"/>
<treecol id="address" label="Address" flex="1"/>
</treecols>
<treechildren id="treechildren-single">
<treeitem>
<treerow properties="firstrow">
<treecell label="Mary" value="mary" properties="firstname"/>
<treecell label="206 Garden Avenue" value="206ga"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell/>
<treecell value="19ms"/>
</treerow>
</treeitem>
<treeitem container="true">
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
</treerow>
<treechildren>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue" editable="false"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Mary"/>
<treecell label="206 Garden Avenue" selectable="false"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Chris"/>
<treecell label="19 Marion Street"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="Sarah"/>
<treecell label="702 Fern Avenue"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell label="John"/>
<treecell label="99 Westminster Avenue"/>
</treerow>
</treeitem>
</treechildren>
</tree>
<!-- test resuls are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"/>
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
SimpleTest.waitForExplicitFinish();
]]>
</script>
</window>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -56,7 +56,7 @@
onget="return this.treeBoxObject.treeBody;"/>
<property name="editable"
onget="return this.hasAttribute('editable');"
onget="return this.getAttribute('editable') == 'true';"
onset="if (val) this.setAttribute('editable', 'true');
else this.removeAttribute('editable'); return val;"/>
@ -69,8 +69,8 @@
onset="this.setAttribute('seltype', val); return val;"/>
<property name="currentIndex"
onget="return this.view.selection.currentIndex;"
onset="return this.view.selection.currentIndex = val;"/>
onget="return this.view ? this.view.selection.currentIndex: - 1;"
onset="if (this.view) return this.view.selection.currentIndex = val; return val;"/>
<!-- ///////////////// nsIAccessibleProvider ///////////////// -->
@ -105,13 +105,13 @@
onset="if (val) this.setAttribute('enableColumnDrag', 'true');
else this.removeAttribute('enableColumnDrag'); return val;"/>
<field name="mInputField">null</field>
<field name="_inputField">null</field>
<property name="inputField" readonly="true">
<getter><![CDATA[
if (!this.mInputField)
this.mInputField = document.getAnonymousElementByAttribute(this, "anonid", "input");
return this.mInputField;
if (!this._inputField)
this._inputField = document.getAnonymousElementByAttribute(this, "anonid", "input");
return this._inputField;
]]></getter>
</property>
@ -273,7 +273,7 @@
]]></body>
</method>
<method name="keyNavigate">
<method name="_keyNavigate">
<parameter name="event"/>
<body><![CDATA[
var key = String.fromCharCode(event.charCode).toLowerCase();
@ -823,7 +823,7 @@
else if (!this.disableKeyNavigation && event.charCode > 0 &&
!event.altKey && !this._isAccelPressed(event) &&
!event.metaKey && !event.ctrlKey) {
var l = this.keyNavigate(event);
var l = this._keyNavigate(event);
if (l >= 0) {
this.view.selection.timedSelect(l, this._selectDelay);
this.treeBoxObject.ensureRowIsVisible(l);
@ -834,7 +834,10 @@
</handlers>
</binding>
<binding id="treecols" extends="chrome://global/content/bindings/tree.xml#tree-base">
<binding id="treecols">
<resources>
<stylesheet src="chrome://global/skin/tree.css"/>
</resources>
<content orient="horizontal">
<xul:hbox class="tree-scrollable-columns" flex="1">
<children includes="treecol|splitter"/>
@ -1094,10 +1097,11 @@
<property name="ordinal">
<getter><![CDATA[
var val = this.getAttribute("ordinal");
return val == "" ? 1 : (val == "0" ? 0 : parseInt(val));
return "" + (val == "" ? 1 : (val == "0" ? 0 : parseInt(val)));
]]></getter>
<setter><![CDATA[
this.setAttribute("ordinal", val);
return val;
]]></setter>
</property>
@ -1113,7 +1117,7 @@
]]></getter>
</property>
<method name="onDragMouseMove">
<method name="_onDragMouseMove">
<parameter name="aEvent"/>
<body><![CDATA[
var col = document.treecolDragging;
@ -1128,7 +1132,7 @@
} else {
col.mDragGesturing = false;
col.setAttribute("dragging", "true");
window.addEventListener("click", col.onDragMouseClick, true);
window.addEventListener("click", col._onDragMouseClick, true);
}
}
@ -1179,7 +1183,7 @@
]]></body>
</method>
<method name="onDragMouseUp">
<method name="_onDragMouseUp">
<parameter name="aEvent"/>
<body><![CDATA[
var col = document.treecolDragging;
@ -1211,18 +1215,18 @@
document.treecolDragging = null;
col.removeAttribute("dragging");
window.removeEventListener("mousemove", col.onDragMouseMove, true);
window.removeEventListener("mouseup", col.onDragMouseUp, true);
window.removeEventListener("mousemove", col._onDragMouseMove, true);
window.removeEventListener("mouseup", col._onDragMouseUp, true);
// we have to wait for the click event to fire before removing
// cancelling handler
var clickHandler = function(handler) {
window.removeEventListener("click", handler, true);
};
window.setTimeout(clickHandler, 0, col.onDragMouseClick);
window.setTimeout(clickHandler, 0, col._onDragMouseClick);
]]></body>
</method>
<method name="onDragMouseClick">
<method name="_onDragMouseClick">
<parameter name="aEvent"/>
<body><![CDATA[
// prevent click event from firing after column drag and drop
@ -1244,8 +1248,8 @@
if (cols[i].boxObject.width > 0) ++visible;
if (visible > 1) {
window.addEventListener("mousemove", this.onDragMouseMove, true);
window.addEventListener("mouseup", this.onDragMouseUp, true);
window.addEventListener("mousemove", this._onDragMouseMove, true);
window.addEventListener("mouseup", this._onDragMouseUp, true);
document.treecolDragging = this;
this.mDragGesturing = true;
this.mStartDragX = event.clientX;