157 lines
3.8 KiB
JavaScript
157 lines
3.8 KiB
JavaScript
|
|
/*
|
||
|
|
* Ext JS Library 2.3.0
|
||
|
|
* Copyright(c) 2006-2009, Ext JS, LLC.
|
||
|
|
* licensing@extjs.com
|
||
|
|
*
|
||
|
|
* http://extjs.com/license
|
||
|
|
*/
|
||
|
|
|
||
|
|
Ext.tree.TreeEventModel = function(tree){
|
||
|
|
this.tree = tree;
|
||
|
|
this.tree.on('render', this.initEvents, this);
|
||
|
|
}
|
||
|
|
|
||
|
|
Ext.tree.TreeEventModel.prototype = {
|
||
|
|
initEvents : function(){
|
||
|
|
var el = this.tree.getTreeEl();
|
||
|
|
el.on('click', this.delegateClick, this);
|
||
|
|
if(this.tree.trackMouseOver !== false){
|
||
|
|
el.on('mouseover', this.delegateOver, this);
|
||
|
|
el.on('mouseout', this.delegateOut, this);
|
||
|
|
}
|
||
|
|
el.on('dblclick', this.delegateDblClick, this);
|
||
|
|
el.on('contextmenu', this.delegateContextMenu, this);
|
||
|
|
},
|
||
|
|
|
||
|
|
getNode : function(e){
|
||
|
|
var t;
|
||
|
|
if(t = e.getTarget('.x-tree-node-el', 10)){
|
||
|
|
var id = Ext.fly(t, '_treeEvents').getAttributeNS('ext', 'tree-node-id');
|
||
|
|
if(id){
|
||
|
|
return this.tree.getNodeById(id);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
},
|
||
|
|
|
||
|
|
getNodeTarget : function(e){
|
||
|
|
var t = e.getTarget('.x-tree-node-icon', 1);
|
||
|
|
if(!t){
|
||
|
|
t = e.getTarget('.x-tree-node-el', 6);
|
||
|
|
}
|
||
|
|
return t;
|
||
|
|
},
|
||
|
|
|
||
|
|
delegateOut : function(e, t){
|
||
|
|
if(!this.beforeEvent(e)){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(e.getTarget('.x-tree-ec-icon', 1)){
|
||
|
|
var n = this.getNode(e);
|
||
|
|
this.onIconOut(e, n);
|
||
|
|
if(n == this.lastEcOver){
|
||
|
|
delete this.lastEcOver;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if((t = this.getNodeTarget(e)) && !e.within(t, true)){
|
||
|
|
this.onNodeOut(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
delegateOver : function(e, t){
|
||
|
|
if(!this.beforeEvent(e)){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if(this.lastEcOver){ // prevent hung highlight
|
||
|
|
this.onIconOut(e, this.lastEcOver);
|
||
|
|
delete this.lastEcOver;
|
||
|
|
}
|
||
|
|
if(e.getTarget('.x-tree-ec-icon', 1)){
|
||
|
|
this.lastEcOver = this.getNode(e);
|
||
|
|
this.onIconOver(e, this.lastEcOver);
|
||
|
|
}
|
||
|
|
if(t = this.getNodeTarget(e)){
|
||
|
|
this.onNodeOver(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
delegateClick : function(e, t){
|
||
|
|
if(!this.beforeEvent(e)){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
if(e.getTarget('input[type=checkbox]', 1)){
|
||
|
|
this.onCheckboxClick(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
else if(e.getTarget('.x-tree-ec-icon', 1)){
|
||
|
|
this.onIconClick(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
else if(this.getNodeTarget(e)){
|
||
|
|
this.onNodeClick(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
delegateDblClick : function(e, t){
|
||
|
|
if(this.beforeEvent(e) && this.getNodeTarget(e)){
|
||
|
|
this.onNodeDblClick(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
delegateContextMenu : function(e, t){
|
||
|
|
if(this.beforeEvent(e) && this.getNodeTarget(e)){
|
||
|
|
this.onNodeContextMenu(e, this.getNode(e));
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
onNodeClick : function(e, node){
|
||
|
|
node.ui.onClick(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onNodeOver : function(e, node){
|
||
|
|
node.ui.onOver(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onNodeOut : function(e, node){
|
||
|
|
node.ui.onOut(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onIconOver : function(e, node){
|
||
|
|
node.ui.addClass('x-tree-ec-over');
|
||
|
|
},
|
||
|
|
|
||
|
|
onIconOut : function(e, node){
|
||
|
|
node.ui.removeClass('x-tree-ec-over');
|
||
|
|
},
|
||
|
|
|
||
|
|
onIconClick : function(e, node){
|
||
|
|
node.ui.ecClick(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onCheckboxClick : function(e, node){
|
||
|
|
node.ui.onCheckChange(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onNodeDblClick : function(e, node){
|
||
|
|
node.ui.onDblClick(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
onNodeContextMenu : function(e, node){
|
||
|
|
node.ui.onContextMenu(e);
|
||
|
|
},
|
||
|
|
|
||
|
|
beforeEvent : function(e){
|
||
|
|
if(this.disabled){
|
||
|
|
e.stopEvent();
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
return true;
|
||
|
|
},
|
||
|
|
|
||
|
|
disable: function(){
|
||
|
|
this.disabled = true;
|
||
|
|
},
|
||
|
|
|
||
|
|
enable: function(){
|
||
|
|
this.disabled = false;
|
||
|
|
}
|
||
|
|
};
|