OSDN Git Service

Version 0.6.134, add comments for closure compiler.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 12_XEvent.js
index 733d9e9..5074db7 100644 (file)
 \r
-var X_Event_last      = 0,\r
-       X_Event_Rename    = {},\r
+var X_Event_Rename    = {},\r
        X_Event_RenameTo  = {},\r
        \r
+       // TODO IFRAMEload, SCRIPTload, LINKload raw.readyState !== 'complete' && raw.readyState !== 'loaded' && this.dispatch( 'load' )\r
        X_Event_proxy     = {\r
                \r
-               load : X_UA[ 'IE' ] < 9 && {\r
-                               check : function( eventDispatcher ){\r
-                                       return eventDispatcher._tag === 'IFRAME' || eventDispatcher._tag === 'SCRIPT';\r
-                               },\r
+               'IFRAMEload' : function( eventDispatcher ){\r
+                       eventDispatcher[ 'listen' ]( 'readystatechange', X_Event_proxy.IFRAMEload_proxy );\r
+               },\r
+               \r
+                       IFRAMEload_proxy : function( e ){\r
+                               var raw = this[ '_rawObject' ];\r
                                \r
-                               f : function( e ){\r
-                                       var raw = this._rawObject;\r
-                                       return raw.readyState !== 'complete' && raw.readyState !== 'loaded';\r
-                               }\r
+                               return raw.readyState === 'complete' || raw.readyState === 'loaded' ?\r
+                                               this[ 'dispatch' ]( 'load' ) : X_Callback_PREVENT_DEFAULT, X_Callback_STOP_PROPAGATION;\r
                        },\r
                \r
-               contextmenu : X_UA[ 'Opera' ] && {\r
-                               \r
-                               rename : 'mousedown',\r
-                               \r
-                               f : function( e ){\r
-                                       return e.button === 2;\r
-                               }\r
-                               \r
-                       }\r
+               // X_UA[ 'Opera' ]\r
+               'contextmenu' : function( eventDispatcher ){\r
+                       eventDispatcher[ 'listen' ]( 'mousedown', contextmenu_proxy );\r
+               },\r
                \r
+                       contextmenu_proxy : function( e ){\r
+                               return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_Callback_NONE;\r
+                       }\r
        },\r
        \r
        X_Event_toPointer = !X_UA_HID.POINTER && ( X_UA_HID.TOUCH ?\r
                {\r
-                       touchstart  : 'pointerdown',\r
-                       mousedown   : 'pointerdown',\r
-                       touchend    : 'pointerup', \r
-                       mouseup     : 'pointerup',\r
-                       touchmove   : 'pointermove',\r
-                       mousemove   : 'pointermove',\r
-                       touchcancel : 'pointercancel',\r
-                       contextmenu : 'contextmenu',\r
-                       dbclick     : 'dbclick',\r
-                       click       : 'click',\r
-                       tap         : 'click'\r
+                       'touchstart'  : 'pointerdown',\r
+                       'mousedown'   : 'pointerdown',\r
+                       'touchend'    : 'pointerup', \r
+                       'mouseup'     : 'pointerup',\r
+                       'touchmove'   : 'pointermove',\r
+                       'mousemove'   : 'pointermove',\r
+                       'touchcancel' : 'pointercancel',\r
+                       'contextmenu' : 'contextmenu',\r
+                       'dbclick'     : 'dbclick',\r
+                       'click'       : 'click',\r
+                       'tap'         : 'click'\r
                } :\r
                {\r
-                       mousedown   : 'pointerdown',\r
-                       mouseup     : 'pointerup',\r
-                       mousemove   : 'pointermove',\r
-                       contextmenu : 'contextmenu',\r
-                       dbclick     : 'dbclick',\r
-                       click       : 'click'\r
+                       'mousedown'   : 'pointerdown',\r
+                       'mouseup'     : 'pointerup',\r
+                       'mousemove'   : 'pointermove',\r
+                       'contextmenu' : 'contextmenu',\r
+                       'dbclick'     : 'dbclick',\r
+                       'click'       : 'click'\r
                });\r
 \r
-// 内部イベント\r
-X_TEMP.SYSTEM_EVENT_PRE_INIT = 5; // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
-X_TEMP.SYSTEM_EVENT_XTREE    = 6;\r
-X_TEMP.SYSTEM_EVENT_INIT     = 7;\r
+var // 内部イベント\r
+       X_EVENT_PRE_INIT               =  5, // X_Listeners_.KILL_RESERVED に +1 した値から開始。\r
+       X_EVENT_XTREE_READY            =  6,\r
+       X_EVENT_INIT                   =  7,\r
+\r
+       // 公開イベント\r
+       /* @const */\r
+       X_EVENT_XDOM_READY             =  8,\r
+       \r
+       X_EVENT_COMPLETE               =  9,\r
+       X_EVENT_READY                  = 10,\r
+       X_EVENT_SUCCESS                = 11,\r
+       X_EVENT_ERROR                  = 12,\r
+       X_EVENT_PROGRESS               = 13,\r
+       X_EVENT_BEFORE_CANCEL          = 14,\r
+       X_EVENT_CANCELED               = 15,\r
+       X_EVENT_TIMEOUT                = 16,\r
+\r
+       /* @const */\r
+       X_EVENT_BEFORE_KILL_INSTANCE   = 17,\r
+       /* @const */\r
+       X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
+       /* @const */\r
+       X_EVENT_KILL_INSTANCE          = 19,\r
+       \r
+       X_EVENT_VIEW_ACTIVATE          = 20,\r
+       X_EVENT_VIEW_DEACTIVATE        = 21,\r
+       X_EVENT_VIEW_RESIZED           = 22,\r
+       X_EVENT_VIEW_TURNED            = 23,\r
+\r
+       X_EVENT_BASE_FONT_RESIZED      = 24,\r
+\r
+       X_EVENT_BEFORE_UPDATE          = 25,\r
+       X_EVENT_UPDATED                = 26,\r
+       X_EVENT_AFTER_UPDATE           = 27,\r
+\r
+       X_EVENT_HASH_CHANGED           = 28,\r
+\r
+\r
+       X_EVENT_BEFORE_UNLOAD          = 29,\r
+       X_EVENT_UNLOAD                 = 30,\r
+       \r
+       X_EVENT_BACKEND_READY          = 31,\r
+       X_EVENT_BACKEND_NONE           = 32,\r
+       X_EVENT_BACKEND_RESEARCH       = 33,\r
+       X_EVENT_BACKEND_CHANGED        = 34,\r
+       \r
+       X_EVENT_ANIME_BEFORE_START     = 35,\r
+       X_EVENT_ANIME_START            = 36,\r
+       X_EVENT_ANIME                  = 37,\r
+       X_EVENT_ANIME_END              = 38,\r
+       X_EVENT_ANIME_BEFORE_STOP      = 39,\r
+       X_EVENT_ANIME_STOP             = 40,\r
+       \r
+       X_EVENT_GPU_RELEASED           = 41,\r
+\r
+       X_EVENT_MEDIA_PLAYING          = 42,\r
+       X_EVENT_MEDIA_BEFORE_LOOP      = 43,\r
+       X_EVENT_MEDIA_LOOPED           = 44,\r
+       X_EVENT_MEDIA_PAUSED           = 45,\r
+       X_EVENT_MEDIA_ENDED            = 46,\r
+       X_EVENT_MEDIA_WAITING          = 47,\r
+       X_EVENT_MEDIA_SEEKING          = 48,\r
+       \r
+       X_Event_last                   = 48;\r
 \r
 /**\r
  * フレームワーク内で定義されたイベント。\r
@@ -62,100 +121,110 @@ X_TEMP.SYSTEM_EVENT_INIT     = 7;
  * @alias X.Event\r
  * @enum {number}\r
  */\r
-var X_Event = X[ 'Event' ] = {\r
+X[ 'Event' ] = {\r
        /**\r
         * X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
         * このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
-        * @const\r
         */\r
-       'XDOM_READY'             :  8,\r
+       'XDOM_READY'             : X_EVENT_XDOM_READY,\r
        \r
-       'COMPLETE'               :  9,\r
-       'READY'                  : 10,\r
-       'SUCCESS'                : 11,\r
-       'ERROR'                  : 12,\r
-       'PROGRESS'               : 13,\r
-       'BEFORE_CANCEL'          : 14,\r
-       'CANCELED'               : 15,\r
-       'TIMEOUT'                : 16,\r
+       'COMPLETE'               : X_EVENT_COMPLETE,\r
+       'READY'                  : X_EVENT_READY,\r
+       'SUCCESS'                : X_EVENT_SUCCESS,\r
+       'ERROR'                  : X_EVENT_ERROR,\r
+       'PROGRESS'               : X_EVENT_PROGRESS,\r
+       'BEFORE_CANCEL'          : X_EVENT_BEFORE_CANCEL,\r
+       'CANCELED'               : X_EVENT_CANCELED,\r
+       'TIMEOUT'                : X_EVENT_TIMEOUT,\r
 \r
        /**\r
         * X.EventDispatcher インスタンスを kill() すると発生。キャンセル可能。\r
         */     \r
-       'BEFORE_KILL_INSTANCE'   : 17,\r
+       'BEFORE_KILL_INSTANCE'   : X_EVENT_BEFORE_KILL_INSTANCE,\r
        /**\r
         * X.EventDispatcher インスタンスの kill() がキャンセルされた場合に発生。\r
         */     \r
-       'KILL_INSTANCE_CANCELED' : 18,\r
+       'KILL_INSTANCE_CANCELED' : X_EVENT_KILL_INSTANCE_CANCELED,\r
        /**\r
         * X.EventDispatcher インスタンスの kill が確定し、kill プロセスの前に発生。\r
         */\r
-       'KILL_INSTANCE'          : 19,\r
+       'KILL_INSTANCE'          : X_EVENT_KILL_INSTANCE,\r
 \r
        /**\r
         * X.ViewPort で発生する。'visibilitychange', 'pageshow', window.onfocus を検出している。\r
         */\r
-       'VIEW_ACTIVATE'          : 20,\r
+       'VIEW_ACTIVATE'          : X_EVENT_VIEW_ACTIVATE,\r
        /**\r
         * X.ViewPort で発生する。'visibilitychange', 'pagehide', window.onblur を検出している。\r
         */\r
-       'VIEW_DEACTIVATE'        : 21,\r
+       'VIEW_DEACTIVATE'        : X_EVENT_VIEW_DEACTIVATE,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'VIEW_RESIZED'           : 22,\r
+       'VIEW_RESIZED'           : X_EVENT_VIEW_RESIZED,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'VIEW_TURNED'            : 23,\r
+       'VIEW_TURNED'            : X_EVENT_VIEW_TURNED,\r
        /**\r
         * X.ViewPort で発生する。ベースフォントサイズが変化すると発生する。body 直下の隠し要素のテキストサイズの変化で検出している。\r
         */\r
-       'BASE_FONT_RESIZED'      : 24,\r
+       'BASE_FONT_RESIZED'      : X_EVENT_BASE_FONT_RESIZED,\r
 \r
 // in_page_jump\r
 // on_screen_keyboard_show\r
 // on_screen_keyboard_hide\r
 \r
-       'BEFORE_UPDATE'          : 25,// X_System このイベントで要素のサイズを取得すると無限ループに!\r
-       'UPDATED'                : 26,// X_System\r
-       'AFTER_UPDATE'           : 27,\r
+       /**\r
+        * X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
+        */\r
+       'BEFORE_UPDATE'          : X_EVENT_BEFORE_UPDATE,\r
+       /**\r
+        * X_System で発生する。X.Node ツリーへの変更を Real DOM に反映した。\r
+        */\r
+       'UPDATED'                : X_EVENT_UPDATED,\r
+       \r
+       /**\r
+        * X.ViewPort で発生する。X.Node ツリーへの変更を Real DOM に反映した。このイベントは lazyDispatch している。\r
+        */\r
+       'AFTER_UPDATE'           : X_EVENT_AFTER_UPDATE,\r
 \r
-       'HASH_CHANGED'           : 28,\r
+       'HASH_CHANGED'           : X_EVENT_HASH_CHANGED,\r
 \r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'BEFORE_UNLOAD'          : 29,\r
+       'BEFORE_UNLOAD'          : X_EVENT_BEFORE_UNLOAD,\r
        /**\r
         * X.ViewPort で発生する。\r
         */\r
-       'UNLOAD'                 : 30,\r
+       'UNLOAD'                 : X_EVENT_UNLOAD,\r
        \r
-       'BACKEND_READY'          : 31,\r
-       'BACKEND_NONE'           : 32,\r
-       'BACKEND_RESEARCH'       : 33,\r
-       'BACKEND_CHANGED'        : 34,\r
+       'BACKEND_READY'          : X_EVENT_BACKEND_READY,\r
+       'BACKEND_NONE'           : X_EVENT_BACKEND_NONE,\r
+       'BACKEND_RESEARCH'       : X_EVENT_BACKEND_RESEARCH,\r
+       'BACKEND_CHANGED'        : X_EVENT_BACKEND_CHANGED,\r
        \r
-       'ANIME_BEFORE_START'     : 35,\r
-       'ANIME_START'            : 36,\r
-       'ANIME'                  : 37,\r
-       'ANIME_END'              : 38,\r
-       'ANIME_BEFORE_STOP'      : 39, // xnode.stop() のみ、指定時間による停止では呼ばれない\r
-       'ANIME_STOP'             : 40,\r
+       'ANIME_BEFORE_START'     : X_EVENT_ANIME_BEFORE_START,\r
+       'ANIME_START'            : X_EVENT_ANIME_START,\r
+       'ANIME'                  : X_EVENT_ANIME,\r
+       'ANIME_END'              : X_EVENT_ANIME_END,\r
+       /**\r
+        * xnode.stop() のみ、指定時間による停止では呼ばれない\r
+        */\r
+       'ANIME_BEFORE_STOP'      : X_EVENT_ANIME_BEFORE_STOP,\r
+       'ANIME_STOP'             : X_EVENT_ANIME_STOP,\r
        \r
-       'GPU_RELEASED'           : 41,\r
-\r
-       'MEDIA_PLAYING'          : 42,\r
-       'MEDIA_BEFORE_LOOP'      : 43, // cancelable\r
-       'MEDIA_LOOPED'           : 44,\r
-       'MEDIA_PAUSED'           : 45,\r
-       'MEDIA_ENDED'            : 46,\r
-       'MEDIA_WAITING'          : 47,\r
-       'MEDIA_SEEKING'          : 48\r
-};\r
+       'GPU_RELEASED'           : X_EVENT_GPU_RELEASED,\r
 \r
-X_Event_last = 48;\r
+       'MEDIA_PLAYING'          : X_EVENT_MEDIA_PLAYING,\r
+       'MEDIA_BEFORE_LOOP'      : X_EVENT_MEDIA_BEFORE_LOOP, // cancelable\r
+       'MEDIA_LOOPED'           : X_EVENT_MEDIA_LOOPED,\r
+       'MEDIA_PAUSED'           : X_EVENT_MEDIA_PAUSED,\r
+       'MEDIA_ENDED'            : X_EVENT_MEDIA_ENDED,\r
+       'MEDIA_WAITING'          : X_EVENT_MEDIA_WAITING,\r
+       'MEDIA_SEEKING'          : X_EVENT_MEDIA_SEEKING\r
+};\r
 \r
 X_TEMP.onSystemReady.push(\r
        function(){\r