2 * Ext JS Library 2.2.1
\r
3 * Copyright(c) 2006-2009, Ext JS, LLC.
\r
4 * licensing@extjs.com
\r
6 * http://extjs.com/license
\r
9 Ext.tree.TreeEventModel = function(tree){
\r
11 this.tree.on('render', this.initEvents, this);
\r
14 Ext.tree.TreeEventModel.prototype = {
\r
15 initEvents : function(){
\r
16 var el = this.tree.getTreeEl();
\r
17 el.on('click', this.delegateClick, this);
\r
18 if(this.tree.trackMouseOver !== false){
\r
19 el.on('mouseover', this.delegateOver, this);
\r
20 el.on('mouseout', this.delegateOut, this);
\r
22 el.on('dblclick', this.delegateDblClick, this);
\r
23 el.on('contextmenu', this.delegateContextMenu, this);
\r
26 getNode : function(e){
\r
28 if(t = e.getTarget('.x-tree-node-el', 10)){
\r
29 var id = Ext.fly(t, '_treeEvents').getAttributeNS('ext', 'tree-node-id');
\r
31 return this.tree.getNodeById(id);
\r
37 getNodeTarget : function(e){
\r
38 var t = e.getTarget('.x-tree-node-icon', 1);
\r
40 t = e.getTarget('.x-tree-node-el', 6);
\r
45 delegateOut : function(e, t){
\r
46 if(!this.beforeEvent(e)){
\r
49 if(e.getTarget('.x-tree-ec-icon', 1)){
\r
50 var n = this.getNode(e);
\r
51 this.onIconOut(e, n);
\r
52 if(n == this.lastEcOver){
\r
53 delete this.lastEcOver;
\r
56 if((t = this.getNodeTarget(e)) && !e.within(t, true)){
\r
57 this.onNodeOut(e, this.getNode(e));
\r
61 delegateOver : function(e, t){
\r
62 if(!this.beforeEvent(e)){
\r
65 if(this.lastEcOver){ // prevent hung highlight
\r
66 this.onIconOut(e, this.lastEcOver);
\r
67 delete this.lastEcOver;
\r
69 if(e.getTarget('.x-tree-ec-icon', 1)){
\r
70 this.lastEcOver = this.getNode(e);
\r
71 this.onIconOver(e, this.lastEcOver);
\r
73 if(t = this.getNodeTarget(e)){
\r
74 this.onNodeOver(e, this.getNode(e));
\r
78 delegateClick : function(e, t){
\r
79 if(!this.beforeEvent(e)){
\r
83 if(e.getTarget('input[type=checkbox]', 1)){
\r
84 this.onCheckboxClick(e, this.getNode(e));
\r
86 else if(e.getTarget('.x-tree-ec-icon', 1)){
\r
87 this.onIconClick(e, this.getNode(e));
\r
89 else if(this.getNodeTarget(e)){
\r
90 this.onNodeClick(e, this.getNode(e));
\r
94 delegateDblClick : function(e, t){
\r
95 if(this.beforeEvent(e) && this.getNodeTarget(e)){
\r
96 this.onNodeDblClick(e, this.getNode(e));
\r
100 delegateContextMenu : function(e, t){
\r
101 if(this.beforeEvent(e) && this.getNodeTarget(e)){
\r
102 this.onNodeContextMenu(e, this.getNode(e));
\r
106 onNodeClick : function(e, node){
\r
107 node.ui.onClick(e);
\r
110 onNodeOver : function(e, node){
\r
114 onNodeOut : function(e, node){
\r
118 onIconOver : function(e, node){
\r
119 node.ui.addClass('x-tree-ec-over');
\r
122 onIconOut : function(e, node){
\r
123 node.ui.removeClass('x-tree-ec-over');
\r
126 onIconClick : function(e, node){
\r
127 node.ui.ecClick(e);
\r
130 onCheckboxClick : function(e, node){
\r
131 node.ui.onCheckChange(e);
\r
134 onNodeDblClick : function(e, node){
\r
135 node.ui.onDblClick(e);
\r
138 onNodeContextMenu : function(e, node){
\r
139 node.ui.onContextMenu(e);
\r
142 beforeEvent : function(e){
\r
150 disable: function(){
\r
151 this.disabled = true;
\r
154 enable: function(){
\r
155 this.disabled = false;
\r