OSDN Git Service

Version 0.6.5
[pettanr/clientJs.git] / 0.6.x / js / core / 14_XView.js
index 4afe06a..b87f83f 100644 (file)
@@ -1,3 +1,76 @@
+X.View = {\r
+       Event : {\r
+               SYS_READY         : 0,\r
+               INIT              : 1,\r
+               ADDED             : 2,\r
+               CREATION_COMPLETE : 3,\r
+               REMOVED           : 4,\r
+               \r
+               VIEW_RESIZED      : 5, // リサイズイベントのバブルアップは要素のレイアウトマネジャーでキャンセルされることも\r
+               IN_VIEW           : 6, // 要素が視界に入った\r
+               OUT_VIEW          : 7,\r
+               \r
+               POINTER_OUT       : 8,\r
+               POINTER_IN        : 9,\r
+               \r
+               // FOCUS\r
+               // DISABLED\r
+               // ENABLED\r
+       \r
+       /* -- Pointing Device Event -- */\r
+               _START_POINTER    : 10,\r
+               \r
+               CONTEXT_MENU      : 10, // rightclick or longtouch or menukey\r
+               \r
+       /* -- ここよりあとははノード上をバブルアップ -- */\r
+               _NO_BUBLEUP       : 10.5,               \r
+               //\r
+               POINTER_START     : 11,\r
+               POINTER_END       : 12,\r
+               POINTER_MOVE      : 13,\r
+               \r
+               SELECT            : 14, // click or tap or enterkey\r
+               FILE_DRAG         : 15,\r
+               \r
+       /* -- Pointing Device Event -- */\r
+               _END_POINTER      : 15,\r
+               \r
+               KEY_DOWN          : 16,\r
+               KEY_UP            : 17,\r
+               \r
+               SCROLL            : 18,\r
+       \r
+               CHANGE            : 19,\r
+               SUBMIT            : 20,\r
+               \r
+               IdToName : {},\r
+               NameToID : {}\r
+       }\r
+};\r
+\r
+if( window.navigator.msPointerEnabled ){\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'MSPointerDown';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_END   ] = 'MSPointerUp';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_MOVE  ] = 'MSPointerMove';\r
+       X.View.Event.NameToID[ 'MSPointerDown' ] = X.View.Event.POINTER_START;\r
+       X.View.Event.NameToID[ 'MSPointerUp'   ] = X.View.Event.POINTER_END;\r
+       X.View.Event.NameToID[ 'MSPointerMove' ] = X.View.Event.POINTER_MOVE;\r
+} else\r
+if( 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch ){\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'touchstart';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_END   ] = 'touchend';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_MOVE  ] = 'touchmove';\r
+       X.View.Event.NameToID[ 'touchstart' ] = X.View.Event.POINTER_START;\r
+       X.View.Event.NameToID[ 'touchend'   ] = X.View.Event.POINTER_END;\r
+       X.View.Event.NameToID[ 'touchmove'  ] = X.View.Event.POINTER_MOVE;\r
+} else {\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_START ] = 'mousedown';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_END   ] = 'mouseup';\r
+       X.View.Event.IdToName[ X.View.Event.POINTER_MOVE  ] = 'mousemove';\r
+       X.View.Event.NameToID[ 'mousedown' ] = X.View.Event.POINTER_START;\r
+       X.View.Event.NameToID[ 'mouseup'   ] = X.View.Event.POINTER_END;\r
+       X.View.Event.NameToID[ 'mousemove' ] = X.View.Event.POINTER_MOVE;\r
+};\r
 \r
 X.View = (function( window, document ){\r
        var view = X.UA.IE ?\r
@@ -6,46 +79,8 @@ X.View = (function( window, document ){
                resize, delayResize;\r
 \r
 /* -----------------------------------------------\r
- * Document Ready\r
- *  Dean Edwards/Matthias Miller/John Resig\r
- */\r
-       function init(){\r
-               if( X.View.ready ) return;\r
-               X.View.ready = true;\r
-               X.View.dispatch( { type : X.ViewEvent.SYS_READY, w : w, h : h } );\r
-       };\r
-       /* for Mozilla/Opera9 */\r
-       if( document.addEventListener ){\r
-               document.addEventListener( "DOMContentLoaded", init, false );\r
-       };\r
-       if( 4 < X.UA.IE ){\r
-               document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
-               var _script = document.getElementById( "__ie_onload" );\r
-               _script.onreadystatechange = function(){\r
-                       if( this.readyState == "complete" ){\r
-                               this.parentNode.removeElement( this );\r
-                               this.onreadystatechange = new Function();\r
-                               this.onreadystatechange = null;\r
-                               _script = void 0;\r
-                               init();\r
-                       };\r
-               };      \r
-       };\r
-       if( X.UA.WebKit ){ // sniff\r
-               var _timer = setInterval( function(){\r
-                       if( /loaded|complete/.test( document.readyState ) ){\r
-                               clearInterval( _timer );\r
-                               init();\r
-                       };\r
-               }, 10);\r
-       };\r
-       \r
-       /* for other browsers */\r
-       X.DomEvent.add( window, 'load', init );\r
-\r
-/* -----------------------------------------------\r
  * Resize\r
- *  uupaa\r
+ *  uupaa.js\r
  */\r
        function unlock(){ lock = 0; };\r
        \r
@@ -57,7 +92,7 @@ X.View = (function( window, document ){
                                if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
                                        w = size[ 0 ];\r
                                        h = size[ 1 ];\r
-                                       X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );\r
+                                       X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
                                };\r
                                X.Timer.once( 1, unlock );// delay unlock\r
                        };\r
@@ -72,7 +107,7 @@ X.View = (function( window, document ){
                        if( w !== size[ 0 ] || h !== size[ 1 ] ){// VIEW_RESIZED\r
                                w = size[ 0 ];\r
                                h = size[ 1 ];\r
-                               X.View.dispatch( { type : X.ViewEvent.VIEW_RESIZED, w : w, h : h } );\r
+                               X.View.dispatch( { type : X.View.Event.VIEW_RESIZED, w : w, h : h } );\r
                        };\r
                        X.Timer.once( 1, unlock );\r
                };\r
@@ -81,6 +116,7 @@ X.View = (function( window, document ){
        X.View = X.Class._override( new X.EventDispatcher(),\r
                {\r
                        ready : false,\r
+                       _view : view,\r
                        getSize : ( view.innerWidth ?\r
                                ( function(){\r
                                        return [ view.innerWidth, view.innerHeight ];\r
@@ -89,16 +125,40 @@ X.View = (function( window, document ){
                                        return [ view.clientWidth, view.clientHeight ];\r
                                })\r
                        ),\r
+                       getPointerPosition : function(){\r
+                               \r
+                       },\r
                        /* 要素が視界に入った  http://remysharp.com/2009/01/26/element-in-view-event-plugin/ */\r
                        inView : function( elm ){\r
                                \r
-                       }\r
+                       },\r
+                       _init : function(){\r
+                               var s;\r
+                               if( X.View.ready ) return X.Callback.UN_LISTEN;\r
+                               if( s = X.View._script ){\r
+                                       s.parentNode.removeChild( s );\r
+                                       s.onreadystatechange = new Function();\r
+                                       s.onreadystatechange = null;\r
+                                       delete X.View._script;\r
+                               };\r
+                               delete X.View._init;\r
+                               X.View.ready = true;\r
+                               X.View.dispatch( { type : X.View.Event.SYS_READY } );\r
+                               return X.Callback.UN_LISTEN;\r
+                       },\r
+                       Event : X.View.Event\r
                }\r
        );\r
                \r
-       X.View.listenOnce( X.ViewEvent.SYS_READY, function(){\r
-               if( X.UA.IE ){\r
-                       X.Timer.add( 100, 0, resize );\r
+       X.View.listenOnce( X.View.Event.SYS_READY, function(){\r
+               var b, x;\r
+               if( X.UA.IE && X.UA.IE < 9 ){\r
+                       X.Timer.add( 100, resize );\r
+                       b = document.body;\r
+                       b.appendChild( x = document.createElement( 'div' ) );\r
+                       x.style.cssText = 'width:1px;height:1px;line-height:1px;filter:progid:DXImageTransform.Microsoft.Shadow()';\r
+                       b.className += [ b.className === '' ? '' : ' ', 'ActiveX-', 1 < x.offsetHeight ? 'enabled' : 'disabled' ].join( '' );\r
+                       b.removeChild( x );\r
                } else {\r
                        X.DomEvent.add( window, 'resize', resize );\r
                };\r
@@ -107,7 +167,34 @@ X.View = (function( window, document ){
        return X.View;\r
 })( window, document );\r
 \r
+\r
+/* -----------------------------------------------\r
+ * Document Ready\r
+ *  Dean Edwards/Matthias Miller/John Resig\r
+ */\r
+/* for ie9+/Mozilla/Opera9 */\r
+if( document.addEventListener ){\r
+       X.DomEvent.add( document, 'DOMContentLoaded', X.View._init );\r
+} else\r
+if( 4 < X.UA.IE ){\r
+       // if this script in Head\r
+       document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
+       X.View._script = document.getElementById( "__ie_onload" );\r
+       X.View._script.onreadystatechange = function(){\r
+               this.readyState === 'complete' && X.View._init();\r
+       };\r
+} else\r
+if( X.UA.WebKit ){ // sniff\r
+       X.Timer.add( 10, function(){\r
+               if( !X.View._init ) return X.Callback.UN_LISTEN;\r
+               if( 'loaded|complete'.indexOf( document.readyState ) !== -1 ) return X.View._init();\r
+       });\r
+};\r
+\r
+/* for other browsers */\r
+X.DomEvent.add( window, 'load', X.View._init );\r
+\r
 //\r
-X.View.listen( X.ViewEvent.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
+X.View.listen( X.View.Event.SYS_READY, function(e){ console.log( 'X.View DomReady ' + X.View.ready ) } );\r
 \r
-X.View.listen( X.ViewEvent.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );\r
+X.View.listen( X.View.Event.VIEW_RESIZED, function(e){ console.log( 'X.View VIEW_RESIZED ' + e.w + 'x' + e.h ) } );\r