OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 14_XEvent.js
1 \r
2 var X_Event_Rename    = {},\r
3         X_Event_RenameTo  = {},\r
4         \r
5         // TODO IFRAMEload, SCRIPTload, LINKload raw.readyState !== 'complete' && raw.readyState !== 'loaded' && this.dispatch( 'load' )\r
6         \r
7         \r
8         X_Event_proxy     = {\r
9                 \r
10                 'IFRAMEload' : function( eventDispatcher ){\r
11                         eventDispatcher[ 'listen' ]( 'readystatechange', X_Event_proxy.IFRAMEload_proxy );\r
12                 },\r
13                 \r
14                         IFRAMEload_proxy : function( e ){\r
15                                 var raw = this[ '_rawObject' ];\r
16                                 \r
17                                 return ( raw.readyState === 'complete' || raw.readyState === 'loaded' ) ?\r
18                                                 X_EventDispatcher_actualHandleEvent( 'load' ) : X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
19                         },\r
20                 \r
21                 // TODO  focusin focusout\r
22                 \r
23                 // X_UA[ 'Opera' ]\r
24                 'contextmenu' : function( eventDispatcher ){\r
25                         eventDispatcher[ 'listen' ]( 'mousedown', contextmenu_proxy );\r
26                 },\r
27                 \r
28                         contextmenu_proxy : function( e ){\r
29                                 return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_CALLBACK_NONE;\r
30                         }\r
31         },\r
32         \r
33         X_Event_toPointer = !X_UA_HID.POINTER && ( X_UA_HID.TOUCH ?\r
34                 {\r
35                         'touchstart'  : 'pointerdown',\r
36                         'mousedown'   : 'pointerdown',\r
37                         'touchend'    : 'pointerup', \r
38                         'mouseup'     : 'pointerup',\r
39                         'touchmove'   : 'pointermove',\r
40                         'mousemove'   : 'pointermove',\r
41                         'touchleave'  : 'pointerleave',\r
42                         'mouseout'    : 'pointerout',\r
43                         'mouseleave'  : 'pointerleave',\r
44                         'touchcancel' : 'pointercancel',\r
45                         'contextmenu' : 'contextmenu',\r
46                         'dbclick'     : 'dbclick',\r
47                         'click'       : 'click'\r
48                 } :\r
49                 {\r
50                         'mousedown'   : 'pointerdown',\r
51                         'mouseup'     : 'pointerup',\r
52                         'mousemove'   : 'pointermove',\r
53                         'mouseout'    : 'pointerout',\r
54                         'mouseleave'  : 'pointerleave',\r
55                         'contextmenu' : 'contextmenu',\r
56                         'dbclick'     : 'dbclick',\r
57                         'click'       : 'click'\r
58                 });\r
59 \r
60 var // 内部イベント\r
61         X_EVENT_PRE_INIT               =  5, // X_LISTENERS_KILL_RESERVED に +1 した値から開始。\r
62         X_EVENT_XTREE_READY            =  6,\r
63         X_EVENT_INIT                   =  7,\r
64 \r
65         // 公開イベント\r
66         X_EVENT_XDOM_READY             =  8,\r
67         \r
68         X_EVENT_COMPLETE               =  9,\r
69         X_EVENT_READY                  = 10,\r
70         X_EVENT_SUCCESS                = 11,\r
71         X_EVENT_ERROR                  = 12,\r
72         X_EVENT_PROGRESS               = 13,\r
73         X_EVENT_BEFORE_CANCEL          = 14,\r
74         X_EVENT_CANCELED               = 15,\r
75         X_EVENT_TIMEOUT                = 16,\r
76 \r
77         X_EVENT_BEFORE_KILL_INSTANCE   = 17,\r
78         X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
79         X_EVENT_KILL_INSTANCE          = 19,\r
80         \r
81         X_EVENT_VIEW_ACTIVATE          = 20,\r
82         X_EVENT_VIEW_DEACTIVATE        = 21,\r
83         X_EVENT_VIEW_RESIZED           = 22,\r
84         X_EVENT_VIEW_TURNED            = 23,\r
85 \r
86         X_EVENT_BASE_FONT_RESIZED      = 24,\r
87 \r
88         X_EVENT_BEFORE_UPDATE          = 25,\r
89         X_EVENT_UPDATED                = 26,\r
90         X_EVENT_AFTER_UPDATE           = 27,\r
91 \r
92         X_EVENT_HASH_CHANGED           = 28,\r
93 \r
94 \r
95         X_EVENT_BEFORE_UNLOAD          = 29,\r
96         X_EVENT_UNLOAD                 = 30,\r
97         \r
98         X_EVENT_BACKEND_READY          = 31,\r
99         X_EVENT_BACKEND_NONE           = 32,\r
100         X_EVENT_BACKEND_RESEARCH       = 33,\r
101         X_EVENT_BACKEND_CHANGED        = 34,\r
102         \r
103         X_EVENT_ANIME_BEFORE_START     = 35,\r
104         X_EVENT_ANIME_START            = 36,\r
105         X_EVENT_ANIME                  = 37,\r
106         X_EVENT_ANIME_END              = 38,\r
107         X_EVENT_ANIME_BEFORE_STOP      = 39,\r
108         X_EVENT_ANIME_STOP             = 40,\r
109         \r
110         X_EVENT_GPU_RELEASED           = 41,\r
111 \r
112         X_EVENT_MEDIA_PLAYING          = 42,\r
113         X_EVENT_MEDIA_BEFORE_LOOP      = 43,\r
114         X_EVENT_MEDIA_LOOPED           = 44,\r
115         X_EVENT_MEDIA_PAUSED           = 45,\r
116         X_EVENT_MEDIA_ENDED            = 46,\r
117         X_EVENT_MEDIA_WAITING          = 47,\r
118         X_EVENT_MEDIA_SEEKING          = 48,\r
119         X_EVENT_MEDIA_WAIT_FOR_TOUCH   = 49,\r
120         \r
121         X_EVENT_NEED_AUTH              = 50,\r
122         \r
123         X_EVENT_DEBUG                  = 51,\r
124         \r
125         X_Event_last                   = 51;\r
126 \r
127 // in_page_jump\r
128 // on_screen_keyboard_show\r
129 // on_screen_keyboard_hide\r
130 \r
131 /**\r
132  * フレームワーク内で定義されたイベント。\r
133  * @namespace X.Event\r
134  */\r
135 X[ 'Event' ] = /** @lends X.Event */\r
136 {\r
137         /**\r
138          * X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
139          * このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
140          */\r
141         'XDOM_READY'             : X_EVENT_XDOM_READY,\r
142         \r
143         'COMPLETE'               : X_EVENT_COMPLETE,\r
144         'READY'                  : X_EVENT_READY,\r
145         'SUCCESS'                : X_EVENT_SUCCESS,\r
146         'ERROR'                  : X_EVENT_ERROR,\r
147         'PROGRESS'               : X_EVENT_PROGRESS,\r
148         'BEFORE_CANCEL'          : X_EVENT_BEFORE_CANCEL,\r
149         'CANCELED'               : X_EVENT_CANCELED,\r
150         'TIMEOUT'                : X_EVENT_TIMEOUT,\r
151 \r
152         /**\r
153          * X.EventDispatcher インスタンスを kill() すると発生。キャンセル可能。\r
154          */     \r
155         'BEFORE_KILL_INSTANCE'   : X_EVENT_BEFORE_KILL_INSTANCE,\r
156         /**\r
157          * X.EventDispatcher インスタンスの kill() がキャンセルされた場合に発生。\r
158          */     \r
159         'KILL_INSTANCE_CANCELED' : X_EVENT_KILL_INSTANCE_CANCELED,\r
160         /**\r
161          * X.EventDispatcher インスタンスの kill が確定し、kill プロセスの前に発生。\r
162          */\r
163         'KILL_INSTANCE'          : X_EVENT_KILL_INSTANCE,\r
164 \r
165         /**\r
166          * X.ViewPort で発生する。'visibilitychange', 'pageshow', window.onfocus を検出している。\r
167          */\r
168         'VIEW_ACTIVATE'          : X_EVENT_VIEW_ACTIVATE,\r
169         /**\r
170          * X.ViewPort で発生する。'visibilitychange', 'pagehide', window.onblur を検出している。\r
171          */\r
172         'VIEW_DEACTIVATE'        : X_EVENT_VIEW_DEACTIVATE,\r
173         /**\r
174          * X.ViewPort で発生する。\r
175          */\r
176         'VIEW_RESIZED'           : X_EVENT_VIEW_RESIZED,\r
177         /**\r
178          * X.ViewPort で発生する。\r
179          */\r
180         'VIEW_TURNED'            : X_EVENT_VIEW_TURNED,\r
181         /**\r
182          * X.ViewPort で発生する。ベースフォントサイズが変化すると発生する。body 直下の隠し要素のテキストサイズの変化で検出している。\r
183          */\r
184         'BASE_FONT_RESIZED'      : X_EVENT_BASE_FONT_RESIZED,\r
185 \r
186         /**\r
187          * X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
188          */\r
189         'BEFORE_UPDATE'          : X_EVENT_BEFORE_UPDATE,\r
190         /**\r
191          * X_System で発生する。X.Node ツリーへの変更を Real DOM に反映した。\r
192          */\r
193         'UPDATED'                : X_EVENT_UPDATED,\r
194         \r
195         /**\r
196          * X.ViewPort で発生する。X.Node ツリーへの変更を Real DOM に反映した。このイベントは lazyDispatch している。\r
197          */\r
198         'AFTER_UPDATE'           : X_EVENT_AFTER_UPDATE,\r
199 \r
200         'HASH_CHANGED'           : X_EVENT_HASH_CHANGED,\r
201 \r
202         /**\r
203          * X.ViewPort で発生する。\r
204          */\r
205         'BEFORE_UNLOAD'          : X_EVENT_BEFORE_UNLOAD,\r
206         /**\r
207          * X.ViewPort で発生する。\r
208          */\r
209         'UNLOAD'                 : X_EVENT_UNLOAD,\r
210         \r
211         'BACKEND_READY'          : X_EVENT_BACKEND_READY,\r
212         'BACKEND_NONE'           : X_EVENT_BACKEND_NONE,\r
213         'BACKEND_RESEARCH'       : X_EVENT_BACKEND_RESEARCH,\r
214         'BACKEND_CHANGED'        : X_EVENT_BACKEND_CHANGED,\r
215         \r
216         'ANIME_BEFORE_START'     : X_EVENT_ANIME_BEFORE_START,\r
217         'ANIME_START'            : X_EVENT_ANIME_START,\r
218         'ANIME'                  : X_EVENT_ANIME,\r
219         'ANIME_END'              : X_EVENT_ANIME_END,\r
220         /**\r
221          * xnode.stop() のみ、指定時間による停止では呼ばれない\r
222          */\r
223         'ANIME_BEFORE_STOP'      : X_EVENT_ANIME_BEFORE_STOP,\r
224         'ANIME_STOP'             : X_EVENT_ANIME_STOP,\r
225         \r
226         'GPU_RELEASED'           : X_EVENT_GPU_RELEASED,\r
227 \r
228         'MEDIA_PLAYING'          : X_EVENT_MEDIA_PLAYING,\r
229         'MEDIA_BEFORE_LOOP'      : X_EVENT_MEDIA_BEFORE_LOOP, // cancelable\r
230         'MEDIA_LOOPED'           : X_EVENT_MEDIA_LOOPED,\r
231         'MEDIA_PAUSED'           : X_EVENT_MEDIA_PAUSED,\r
232         'MEDIA_ENDED'            : X_EVENT_MEDIA_ENDED,\r
233         'MEDIA_WAITING'          : X_EVENT_MEDIA_WAITING,\r
234         'MEDIA_SEEKING'          : X_EVENT_MEDIA_SEEKING,\r
235         'MEDIA_WAIT_FOR_TOUCH'   : X_EVENT_MEDIA_WAIT_FOR_TOUCH,\r
236         \r
237         'NEED_AUTH'              : X_EVENT_NEED_AUTH,\r
238         \r
239         'DEBUG'                  : X_EVENT_DEBUG\r
240 };\r
241 \r
242 X_TEMP.onSystemReady.push(\r
243         function(){\r
244                 var k, name, i;\r
245                 for( k in X_Event_Rename ){\r
246                         //if( X_EMPTY_OBJECT[ k ] ) continue;\r
247                         name = X_Event_Rename[ k ];\r
248                         if( X_Type_isArray( name ) ){\r
249                                 for( i = name.length; i; ){\r
250                                         X_Event_RenameTo[ name[ --i ] ] = k;\r
251                                 };\r
252                         } else {\r
253                                 X_Event_RenameTo[ name ] = k;\r
254                         };\r
255                 };\r
256         });\r