@qooxdoo/framework
Version:
The JS Framework for Coders
123 lines (100 loc) • 3.4 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2012 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Mustafa Sak (msak)
************************************************************************ */
/**
* @ignore(qx.test.ui.tree.virtual.Node)
* @ignore(qx.test.ui.tree.virtual.NodeDefered)
* @ignore(qx.test.ui.tree.virtual.Leaf)
*/
qx.Class.define("qx.test.ui.tree.virtual.TreeItem", {
extend: qx.test.ui.tree.virtual.AbstractTreeTest,
construct() {
super();
qx.Class.define("qx.test.ui.tree.virtual.NodeDefered", {
extend: qx.test.ui.tree.virtual.Leaf,
properties: {
children: {
check: "qx.data.Array",
event: "changeChildren",
apply: "_applyEventPropagation",
nullable: true
}
},
destruct() {
if (!qx.core.ObjectRegistry.inShutDown) {
var children = this.getChildren();
if (children) {
for (var i = 0; i < children.getLength(); i++) {
children.getItem(i).dispose();
}
children.dispose();
}
}
}
});
},
members: {
testChildrenSetDeferred() {
var that = this;
var root = new qx.test.ui.tree.virtual.Node("Root node");
var node = new qx.test.ui.tree.virtual.NodeDefered("Node1");
root.getChildren().push(node);
this.tree.setLabelPath("name");
this.tree.setChildProperty("children");
this.tree.setModel(root);
this.flush();
window.setTimeout(
that.resumeHandler(function () {
// add new node
node.setChildren(
new qx.data.Array([
new qx.test.ui.tree.virtual.NodeDefered("Node1.1")
])
);
// check for event listener
that.assertTrue(
node.hasListener("changeChildren"),
"There must be a 'changeChildren' event listener!"
);
that.assertTrue(
node.getChildren().hasListener("changeLength"),
"There must be a 'changeLength' event listener on children array!"
);
// check for open indent
var widget = that.__getWidgetForm(node);
that.assertTrue(widget.isOpenable(), "Must be openable!");
// dispose and check if event listeners are removed
root.dispose();
that.assertFalse(
node.hasListener("changeChildren"),
"After disposing, there has not be a 'changeChildren' event listener!"
);
that.assertFalse(
node.getChildren().hasListener("changeLength"),
"After disposing, there must not be a 'changeLength' event listener on children array!"
);
}),
0
);
// children property not set yet
this.assertNull(node.getChildren(), "Must be null");
this.wait(50);
},
__getWidgetForm(modelItem) {
var widget = null;
var row = this.tree.getLookupTable().indexOf(modelItem);
if (row > -1) {
widget = this.tree._layer.getRenderedCellWidget(row, 0);
}
return widget;
}
}
});