]> git.proxmox.com Git - extjs.git/blame - extjs/packages/core/src/GlobalEvents.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / core / src / GlobalEvents.js
CommitLineData
6527f429
DM
1/**\r
2 * An `{@link Ext.mixin.Observable Observable}` through which Ext fires global events.\r
3 * \r
4 * Ext.on() and Ext.un() are shorthand for {@link #addListener} and {@link #removeListener}\r
5 * on this Observable. For example, to listen for the idle event:\r
6 * \r
7 * Ext.on('idle', function() {\r
8 * // do something\r
9 * });\r
10 */\r
11Ext.define('Ext.GlobalEvents', {\r
12 extend: 'Ext.mixin.Observable',\r
13 alternateClassName: 'Ext.globalEvents', // for compat with Ext JS 4.2 and earlier\r
14 \r
15 requires: [\r
16 'Ext.dom.Element'\r
17 ],\r
18\r
19 observableType: 'global',\r
20\r
21 singleton: true,\r
22\r
23 /**\r
24 * @private\r
25 */\r
26 resizeBuffer: 100,\r
27\r
28 /**\r
29 * @event added\r
30 * Fires when a Component is added to a Container.\r
31 * @param {Ext.Component} component\r
32 */\r
33\r
34 /**\r
35 * @event beforeresponsiveupdate\r
36 * Fires before {@link Ext.mixin.Responsive} perform any updates in response to\r
37 * dynamic changes. This is prior to refreshing `responsiveFormulas`.\r
38 * @param {Object} context The context object used by `responsiveConfig` expressions.\r
39 * @since 5.0.1\r
40 */\r
41\r
42 /**\r
43 * @event beginresponsiveupdate\r
44 * Fires when {@link Ext.mixin.Responsive} is about to perform updates in response to\r
45 * dynamic changes. At this point all `responsiveFormulas` have been refreshed.\r
46 * @param {Object} context The context object used by `responsiveConfig` expressions.\r
47 * @since 5.0.1\r
48 */\r
49\r
50 /**\r
51 * @event responsiveupdate\r
52 * Fires after {@link Ext.mixin.Responsive} has performed updates in response to\r
53 * dynamic changes.\r
54 * @param {Object} context The context object used by `responsiveConfig` expressions.\r
55 * @since 5.0.1\r
56 */\r
57\r
58 /**\r
59 * @event collapse\r
60 * Fires when a Component is collapsed (e.g., a panel).\r
61 * @param {Ext.Component} component\r
62 */\r
63\r
64 /**\r
65 * @event expand\r
66 * Fires when a Component is expanded (e.g., a panel).\r
67 * @param {Ext.Component} component\r
68 */\r
69\r
70 /**\r
71 * @event hide\r
72 * Fires when a Component is hidden.\r
73 * @param {Ext.Component} component\r
74 */\r
75\r
76 /**\r
77 * @event idle\r
78 * Fires when an event handler finishes its run, just before returning to\r
79 * browser control.\r
80 * \r
81 * This includes DOM event handlers, Ajax (including JSONP) event handlers,\r
82 * and {@link Ext.util.TaskRunner TaskRunners}\r
83 * \r
84 * When called at the tail of a DOM event, the event object is passed as the\r
85 * sole parameter.\r
86 * \r
87 * This can be useful for performing cleanup, or update tasks which need to\r
88 * happen only after all code in an event handler has been run, but which\r
89 * should not be executed in a timer due to the intervening browser\r
90 * reflow/repaint which would take place.\r
91 */\r
92\r
93 /**\r
94 * @event removed\r
95 * Fires when a Component is removed from a Container.\r
96 * @param {Ext.Component} component\r
97 */\r
98\r
99 /**\r
100 * @event resize\r
101 * Fires when the browser window is resized. To avoid running resize handlers\r
102 * too often resulting in sluggish window resizing, resize events use a buffer\r
103 * of 100 milliseconds.\r
104 * @param {Number} width The new width\r
105 * @param {Number} height The new height\r
106 */\r
107\r
108 /**\r
109 * @event show\r
110 * Fires when a Component is shown.\r
111 * @param {Ext.Component} component\r
112 */\r
113 \r
114 /**\r
115 * @event beforebindnotify\r
116 * Fires before a scheduled set of bindings are fired. This allows interested parties\r
117 * to react and do any required work.\r
118 * @param {Ext.util.Scheduler} scheduler The scheduler triggering the bindings.\r
119 * \r
120 * @private\r
121 * @since 5.1.0\r
122 */\r
123 \r
124 /**\r
125 * @event mousedown\r
126 * A mousedown listener on the document that is immune to stopPropagation()\r
127 * used in cases where we need to know if a mousedown event occurred on the\r
128 * document regardless of whether some other handler tried to stop it. An\r
129 * example where this is useful is a menu that needs to be hidden whenever\r
130 * there is a mousedown event on the document.\r
131 * @param {Ext.event.Event} e The event object\r
132 */\r
133\r
134 /**\r
135 * @property {Object} idleEventMask\r
136 * This object holds event names for events that should not trigger an `idle` event\r
137 * following their dispatch.\r
138 * @private\r
139 * @since 5.0.0\r
140 */\r
141 idleEventMask: {\r
142 mousemove: 1,\r
143 touchmove: 1,\r
144 pointermove: 1,\r
145 MSPointerMove: 1,\r
146 unload: 1\r
147 },\r
148\r
149 constructor: function() {\r
150 var me = this;\r
151\r
152 me.callParent();\r
153\r
154 Ext.onInternalReady(function() {\r
155 // using a closure here instead of attaching the event directly to the\r
156 // attachListeners method gives us a chance to override the method\r
157 me.attachListeners();\r
158 });\r
159 },\r
160\r
161 attachListeners: function() {\r
162 Ext.get(window).on('resize', this.fireResize, this, {\r
163 buffer: this.resizeBuffer\r
164 });\r
165 Ext.getDoc().on('mousedown', this.fireMouseDown, this);\r
166 },\r
167\r
168 fireMouseDown: function(e) {\r
169 this.fireEvent('mousedown', e);\r
170 },\r
171\r
172 fireResize: function() {\r
173 var me = this,\r
174 Element = Ext.Element,\r
175 w = Element.getViewportWidth(),\r
176 h = Element.getViewportHeight();\r
177\r
178 // In IE the resize event will sometimes fire even though the w/h are the same.\r
179 if (me.curHeight !== h || me.curWidth !== w) {\r
180 me.curHeight = h;\r
181 me.curWidth = w;\r
182 me.fireEvent('resize', w, h);\r
183 }\r
184 }\r
185\r
186}, function(GlobalEvents) {\r
187 /**\r
188 * @member Ext\r
189 * @method on\r
190 * Shorthand for {@link Ext.GlobalEvents#addListener}.\r
191 * @inheritdoc Ext.util.Observable#addListener\r
192 */\r
193 Ext.on = function() {\r
194 return GlobalEvents.addListener.apply(GlobalEvents, arguments);\r
195 };\r
196\r
197 /**\r
198 * @member Ext\r
199 * @method\r
200 * Shorthand for {@link Ext.GlobalEvents#removeListener}.\r
201 * @inheritdoc Ext.util.Observable#removeListener\r
202 */\r
203 Ext.un = function() {\r
204 return GlobalEvents.removeListener.apply(GlobalEvents, arguments);\r
205 };\r
206});\r