]>
Commit | Line | Data |
---|---|---|
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 | |
11 | Ext.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 |