/**
* This class is used as a base class from which to derive Models used in Trees.
*/
Ext.define('Ext.data.TreeModel', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.NodeInterface'
],
mixins: [
'Ext.mixin.Queryable'
],
/**
* @cfg {String} [childType]
* The class name of child nodes to create when reading child nodes from
* raw data. By default the type configured into the TreeStore is used.
*
* This is one way of creating heterogeneous nodes in a tree.
*
* To do this through data types passed from the server, use the
* {@link Ext.data.reader.Reader#typeProperty}.
*
* for example in the case of a hidden root node, you'd use the default type at level zero.
* See {@link Ext.tree.Panel TreePanel}'s documentation for an example.
*
* *Important*
* If you are using this declaration on your tree models, and have a
* {@link Ext.tree.Panel#rootVisible hidden root node}, you MUST create a special root model
* definition which declares the type of its children.
*
* If you allow the TreeStore to create a root node of the same type as the first level of
* *visible* nodes then the reader will atempt to read the wrong type of child node for the
* root.
*
* Example:
*
* Ext.define('myApp.World', {
* childType: 'Territory'
* });
*
* ...
*
* store: {
* id: 'myTreeStore',
* model: 'myApp.World' // The hidden root will know to create 'Territory' type children
* }
*
* If the root is hidden, and the first level of visible nodes are going to be the
* `myApp.Territory` class, then the hidden root must not be of the `myApp.Territory` class.
* Otherwise, it would try to read in the territory data as its childType - most likely
* 'Country'.
*
*/
getRefItems: function() {
return this.childNodes;
},
getRefOwner: function() {
return this.parentNode;
},
statics: {
defaultProxy: 'memory'
}
}, function() {
Ext.data.NodeInterface.decorate(this);
});