Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / docs / source / TreeEventModel.html
1 <html>
2 <head>
3   <title>The source code</title>
4     <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
5     <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
6 </head>
7 <body  onload="prettyPrint();">
8     <pre class="prettyprint lang-js">/*!
9  * Ext JS Library 3.0.3
10  * Copyright(c) 2006-2009 Ext JS, LLC
11  * licensing@extjs.com
12  * http://www.extjs.com/license
13  */
14 Ext.tree.TreeEventModel = function(tree){\r
15     this.tree = tree;\r
16     this.tree.on('render', this.initEvents, this);\r
17 }\r
18 \r
19 Ext.tree.TreeEventModel.prototype = {\r
20     initEvents : function(){\r
21         var t = this.tree;\r
22             \r
23         if(t.trackMouseOver !== false){\r
24             t.mon(t.innerCt, {\r
25                 scope: this,\r
26                 mouseover: this.delegateOver,\r
27                 mouseout: this.delegateOut\r
28             });\r
29         }\r
30         t.mon(t.getTreeEl(), {\r
31             scope: this,\r
32             click: this.delegateClick,\r
33             dblclick: this.delegateDblClick,\r
34             contextmenu: this.delegateContextMenu\r
35         });\r
36     },\r
37 \r
38     getNode : function(e){\r
39         var t;\r
40         if(t = e.getTarget('.x-tree-node-el', 10)){\r
41             var id = Ext.fly(t, '_treeEvents').getAttribute('tree-node-id', 'ext');\r
42             if(id){\r
43                 return this.tree.getNodeById(id);\r
44             }\r
45         }\r
46         return null;\r
47     },\r
48 \r
49     getNodeTarget : function(e){\r
50         var t = e.getTarget('.x-tree-node-icon', 1);\r
51         if(!t){\r
52             t = e.getTarget('.x-tree-node-el', 6);\r
53         }\r
54         return t;\r
55     },\r
56 \r
57     delegateOut : function(e, t){\r
58         if(!this.beforeEvent(e)){\r
59             return;\r
60         }\r
61         if(e.getTarget('.x-tree-ec-icon', 1)){\r
62             var n = this.getNode(e);\r
63             this.onIconOut(e, n);\r
64             if(n == this.lastEcOver){\r
65                 delete this.lastEcOver;\r
66             }\r
67         }\r
68         if((t = this.getNodeTarget(e)) && !e.within(t, true)){\r
69             this.onNodeOut(e, this.getNode(e));\r
70         }\r
71     },\r
72 \r
73     delegateOver : function(e, t){\r
74         if(!this.beforeEvent(e)){\r
75             return;\r
76         }\r
77         if(Ext.isGecko && !this.trackingDoc){ // prevent hanging in FF\r
78             Ext.getBody().on('mouseover', this.trackExit, this);\r
79             this.trackingDoc = true;\r
80         }\r
81         if(this.lastEcOver){ // prevent hung highlight\r
82             this.onIconOut(e, this.lastEcOver);\r
83             delete this.lastEcOver;\r
84         }\r
85         if(e.getTarget('.x-tree-ec-icon', 1)){\r
86             this.lastEcOver = this.getNode(e);\r
87             this.onIconOver(e, this.lastEcOver);\r
88         }\r
89         if(t = this.getNodeTarget(e)){\r
90             this.onNodeOver(e, this.getNode(e));\r
91         }\r
92     },\r
93 \r
94     trackExit : function(e){\r
95         if(this.lastOverNode && !e.within(this.lastOverNode.ui.getEl())){\r
96             this.onNodeOut(e, this.lastOverNode);\r
97             delete this.lastOverNode;\r
98             Ext.getBody().un('mouseover', this.trackExit, this);\r
99             this.trackingDoc = false;\r
100         }\r
101     },\r
102 \r
103     delegateClick : function(e, t){\r
104         if(!this.beforeEvent(e)){\r
105             return;\r
106         }\r
107 \r
108         if(e.getTarget('input[type=checkbox]', 1)){\r
109             this.onCheckboxClick(e, this.getNode(e));\r
110         }\r
111         else if(e.getTarget('.x-tree-ec-icon', 1)){\r
112             this.onIconClick(e, this.getNode(e));\r
113         }\r
114         else if(this.getNodeTarget(e)){\r
115             this.onNodeClick(e, this.getNode(e));\r
116         }\r
117     },\r
118 \r
119     delegateDblClick : function(e, t){\r
120         if(this.beforeEvent(e) && this.getNodeTarget(e)){\r
121             this.onNodeDblClick(e, this.getNode(e));\r
122         }\r
123     },\r
124 \r
125     delegateContextMenu : function(e, t){\r
126         if(this.beforeEvent(e) && this.getNodeTarget(e)){\r
127             this.onNodeContextMenu(e, this.getNode(e));\r
128         }\r
129     },\r
130 \r
131     onNodeClick : function(e, node){\r
132         node.ui.onClick(e);\r
133     },\r
134 \r
135     onNodeOver : function(e, node){\r
136         this.lastOverNode = node;\r
137         node.ui.onOver(e);\r
138     },\r
139 \r
140     onNodeOut : function(e, node){\r
141         node.ui.onOut(e);\r
142     },\r
143 \r
144     onIconOver : function(e, node){\r
145         node.ui.addClass('x-tree-ec-over');\r
146     },\r
147 \r
148     onIconOut : function(e, node){\r
149         node.ui.removeClass('x-tree-ec-over');\r
150     },\r
151 \r
152     onIconClick : function(e, node){\r
153         node.ui.ecClick(e);\r
154     },\r
155 \r
156     onCheckboxClick : function(e, node){\r
157         node.ui.onCheckChange(e);\r
158     },\r
159 \r
160     onNodeDblClick : function(e, node){\r
161         node.ui.onDblClick(e);\r
162     },\r
163 \r
164     onNodeContextMenu : function(e, node){\r
165         node.ui.onContextMenu(e);\r
166     },\r
167 \r
168     beforeEvent : function(e){\r
169         if(this.disabled){\r
170             e.stopEvent();\r
171             return false;\r
172         }\r
173         return true;\r
174     },\r
175 \r
176     disable: function(){\r
177         this.disabled = true;\r
178     },\r
179 \r
180     enable: function(){\r
181         this.disabled = false;\r
182     }\r
183 };</pre>
184 </body>
185 </html>