OSDN Git Service

Version 0.6.22, remove throw from X.UI.*.
authoritozyun <itozyun@user.sourceforge.jp>
Mon, 24 Feb 2014 22:32:52 +0000 (07:32 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Mon, 24 Feb 2014 22:32:52 +0000 (07:32 +0900)
12 files changed:
0.6.x/js/core/00_builtin.js
0.6.x/js/core/01_XUa.js
0.6.x/js/dom/11_XDomNode.js
0.6.x/js/dom/12_XDomEvent.js
0.6.x/js/dom/14_XDomAttr.js
0.6.x/js/ui/06_AbstractUINode.js
0.6.x/js/ui/07_AbstractBox.js
0.6.x/js/ui/08_UINodeStyle.js
0.6.x/js/ui/14_ChromeBox.js
0.6.x/js/ui/16_PageRoot.js
0.6.x/js/ui/17_Text.js
0.6.x/js/ui/AbstractUINode.js [deleted file]

index 71dc2cd..081d8a0 100644 (file)
@@ -13,7 +13,7 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
                x.__apply = void 0;\r
        } else {\r
                if( x.constructor && x.constructor.prototype.__apply ){\r
-                       delete x.__apply;\r
+                       delete x.constructor.prototype.__apply;\r
                } else\r
                if( x.__apply ) delete x.__apply;\r
        };\r
@@ -46,7 +46,7 @@ Function.prototype.apply || (Function.prototype.apply = function (x, y) {
        } else {\r
                //delete x.__apply ? x.__apply : x.constructor.prototype.__apply ;\r
                if( x.constructor && x.constructor.prototype.__apply ){\r
-                       delete x.__apply;\r
+                       delete x.constructor.prototype.__apply;\r
                } else\r
                if( x.__apply ) delete x.__apply;\r
        };\r
@@ -155,6 +155,7 @@ window.encodeURIComponent || (window.encodeURIComponent = function (x) {
        });\r
 });\r
 \r
+// 手抜き\r
 window.decodeURI || (window.decodeURI = function (x) {\r
        return ("" + x).replace(/%(E(0%[AB]|[1-CEF]%[89AB]|D%[89])[0-9A-F]|C[2-9A-F]|D[0-9A-F])%[89AB][0-9A-F]|%[0-7][0-9A-F]/ig, function (s) {\r
                var c = parseInt(s.substring(1), 16);\r
@@ -167,7 +168,7 @@ window.decodeURI || (window.decodeURI = function (x) {
 });\r
 */\r
 \r
-// 手抜き\r
+\r
 //window.decodeURIComponent || (window.decodeURIComponent = window.decodeURI);\r
 \r
 \r
index 573e649..c0a34b4 100644 (file)
@@ -24,7 +24,7 @@ X.UA = (function( n, undefined ){
        acme.WebKit = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
        acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
        // replace( reg, ) don't work for Sigmarion2 pocketIE\r
-       acme.Gecko  = eval( '(dua.indexOf("Gecko\/") >= 0) ? parseFloat(dua.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, "$1$2" )) : undefined' );\r
+       acme.Gecko  = eval( '(navigator.userAgent.indexOf("Gecko\/") >= 0) ? parseFloat(navigator.userAgent.split("rv:")[1].replace( /^(\d*\.\d*)\.(\d*)/, "$1$2" )) : undefined' );\r
        i = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);\r
        if( i && !acme.Chrome ){\r
                acme.Safari = parseFloat( dav.split("Version/")[1] );\r
index 04d2cc7..37e3a18 100644 (file)
@@ -858,7 +858,7 @@ Node.prototype._commitUpdate =
                        xnodes = this._xnodes;\r
                        l      = xnodes ? xnodes.length : 0;\r
                        \r
-                       if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){\r
+                       if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
                                html = [];\r
                                for( i = 0; i < l; ++i ){\r
                                        html[ i ] = xnodes[ i ]._actualCreate();\r
@@ -887,7 +887,6 @@ Node.prototype._commitUpdate =
                }) :\r
                (function(){});\r
 \r
-\r
 Node.prototype._updateRawNode =\r
        document.getElementById ?\r
                ( function( elm ){\r
@@ -930,13 +929,17 @@ Node.prototype._updateRawNode =
 \r
                        // fake textNode\r
                        if( this._dirty & X.Dom.Dirty.CONTENT ){\r
-                               elm.innerHTML = this._text;\r
+                               elm.innerText = this._text;\r
                                delete this._dirty;\r
                                return;\r
                        };\r
-                               \r
+                       \r
+               /*\r
+                * http://www.tohoho-web.com/js/element.htm\r
+                * title、className、id、lang、language には setAttribute でなく、element.id で直接読み書きできる\r
+                */     \r
                        // id\r
-                       if( this._dirty & X.Dom.Dirty.CONTENT ) elm.setAttribute( 'id', this._id );\r
+                       if( this._dirty & X.Dom.Dirty.CONTENT ) elm.id = this._id || ( 'ie4uid' + this._uid );\r
                        // className\r
                        if( this._dirty & X.Dom.Dirty.CLASSNAME ) elm.className = this._className;\r
                        // style\r
index 011ef81..5e6b24f 100644 (file)
@@ -559,7 +559,7 @@ X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
                                                        } else {
                                                                xnode._xnodes && xnode._xnodes.length && createTree( xnode, elm.children, skipCleanup || 0 <= X.Dom.skipCleanupTagNames.indexOf( tag.toLowerCase() ) );
                                                                
-                                                               !xnode._id && elm.setAttribute( 'id', 'ie4uid' + xnode._uid );
+                                                               !xnode._id && ( elm.id = 'ie4uid' + xnode._uid );
                                                                elm.setAttribute( 'UID', xnode._uid );
                                                                
                                                                tag === 'INPUT' && (
index 1433e45..720155c 100644 (file)
@@ -172,6 +172,9 @@ X.Dom.Attr = {
                checked          : 'defaultChecked'\r
        },\r
        renameForTag : {},\r
+       // http://nanto.asablo.jp/blog/2005/10/29/123294\r
+       // checked -> defaultChecked\r
+       // 動的に生成した input 要素を文書ツリーに挿入する前に設定した checked 属性は反映されず、defaultChecked だと反映される\r
        objToAttrText : function( obj ){\r
                var noValue = X.Dom.Attr.noValue, attrs = [], n = -1, p;\r
                for( p in obj ){\r
index a3a0c40..1c0fc49 100644 (file)
@@ -639,7 +639,7 @@ _AbstractDisplayNode.advancedCalcValue = function( styleValue, srcValue ){
                case AUTO :\r
                        return srcValue;\r
                case FULL :\r
-                       throw new Error( 'advancedCalcValue FULL' ); \r
+                       //throw new Error( 'advancedCalcValue FULL' ); \r
                        // return ; // 100%\r
        };\r
        if( 1 <= styleValue ) return styleValue; \r
index 6d84524..4eccccc 100644 (file)
@@ -1,3 +1,8 @@
+\r
+\r
+\r
+\r
+\r
 var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(\r
        '_AbstractDisplayContainer',\r
        X.Class.PRIVATE_DATA,\r
@@ -7,8 +12,8 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                forContainer  : false,\r
                tmpCss        : null,\r
                Constructor : function( layout, args ){\r
-                       if( !( this.User.instanceOf( AbstractDisplayContainer ) ) ){\r
-                               throw new Error( 'AbstractDisplayContainer を継承したインスタンスだけが _AbstractDisplayContainer のオーナーになれます' );\r
+                       if( !this.User.instanceOf( AbstractDisplayContainer ) ){\r
+                               //throw new Error( 'AbstractDisplayContainer を継承したインスタンスだけが _AbstractDisplayContainer のオーナーになれます' );\r
                        };\r
                        var i     = 0,\r
                                l     = args.length,\r
@@ -20,7 +25,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                                        _data = X.Class._getPrivate( arg );\r
                                        nodes[ nodes.length ] = _data;\r
                                        if( _data.parent ){\r
-                                               throw new Error( 'インスタンスはすでに親に追加されています ' + arg );\r
+                                               //throw new Error( 'インスタンスはすでに親に追加されています ' + arg );\r
                                        };\r
                                } else\r
                                if( arg.instanceOf && arg.instanceOf( LayoutManagerBase ) ){\r
@@ -29,7 +34,7 @@ var _AbstractDisplayContainer = _AbstractDisplayNode.inherits(
                                if( X.Type.isObject( arg ) === true ){\r
                                        this.tmpCss = arg;\r
                                } else {\r
-                                       throw new Error( 'AbstractDisplayNode を継承したインスタンスを渡してください ' + arg );\r
+                                       //throw new Error( 'AbstractDisplayNode を継承したインスタンスを渡してください ' + arg );\r
                                };\r
                        };\r
                        this.layout = layout;\r
@@ -221,19 +226,20 @@ var AbstractDisplayContainer = AbstractDisplayNode.inherits(
                },\r
                getLastChild : function(){\r
                        var nodes = X.Class._getPrivate( this ).nodes;\r
-                       return nodes && nodes.length ? nodes[ nodes.length - 1 ].User || null : null;\r
+                       return nodes && nodes.length && nodes[ nodes.length - 1 ].User || null;\r
                },\r
                getNodeByUID : function( uid ){\r
-                       \r
                },\r
                getNodeAt : function( index ){\r
                        if( index < 0 ) return null;\r
                        var nodes = X.Class._getPrivate( this ).nodes;\r
-                       return nodes ? nodes[ index ].User || null : null;\r
+                       return nodes && nodes[ index ].User || null;\r
                },\r
                numNodes : function(){\r
                        var nodes = X.Class._getPrivate( this ).nodes;\r
-                       return nodes ? nodes.length : 0;\r
+                       return nodes && nodes.length || 0;\r
                }\r
        }\r
-);
\ No newline at end of file
+);\r
+\r
+\r
index aea0568..2dd1a68 100644 (file)
@@ -1,28 +1,23 @@
+
+
 var _DisplayNodeStyle = X.Class.create(
        '_DisplayNodeStyle',
        X.Class.PRIVATE_DATA,
        {
-               node         : null,
-               nodeData     : null,
-               _name        : '',
-               allow        : null,
-               _cssText     : null,
-               _cssObj      : null,
                Constructor : function( node, nodeData ){
-                       this.node          = node;
-                       this.nodeData      = nodeData;
+                       this.node= node;
+                       this.nodeData= nodeData;
                        
-                       nodeData.style     = this.User;
-                       nodeData.styleData = this;
+                       nodeData.style= this.User;
+                       nodeData.styleData= this;
                        
-                       this._cssObj       = {};
+                       this._cssObj= {};
                        
                        if( nodeData.tmpCss ){
                                if( nodeData.tmpCss.role === 'container' ) nodeData.forContainer = true;
                                if( nodeData.tmpCss.role === 'chrome' ) nodeData.forChrome = true;
                        };
                },
-       /* Rellay */
                initialize : function(){
                        if( this.nodeData.layout ){
                                this.allow = this.nodeData.layout.allowForSelf; // これに加えて親の allowForChild を合成
@@ -42,13 +37,11 @@ var _DisplayNodeStyle = X.Class.create(
                afterAddition : function(){
                        var elm = this.nodeData.rawElement;
                        if( elm ){
-                               if( this._name /* && elm.className !== this._name */ ){
-                                       //elm.className = this._name;
+                               if( this._name ){
                                        elm.className( this._name );
                                        // dirty flag
                                };
-                               if( this._cssText /* && elm.style.cssText !== this._cssText */ ){
-                                       //elm.style.cssText = this._cssText;
+                               if( this._cssText ){
                                        elm.cssText( this._cssText );
                                };              
                        };      
@@ -281,18 +274,18 @@ var _DisplayNodeStyle = X.Class.create(
                        if( v !== undefined ){
                                if( Type.isNumber( v ) === true ){
                                        if( numerical === false ){
-                                               if( uDecimal === false || v < 0 || 1 < v ) throw new Error( '' );
+                                               if( uDecimal === false || v < 0 || 1 < v ){} //throw new Error( '' );
                                        };
                                } else
                                if( Type.isBoolean( v ) === true ){
-                                       if( flag === false ) throw new Error( '' );
+                                       if( flag === false ){} //throw new Error( '' );
                                } else
                                if( Type.isString( v ) === true ){
                                        if( url === false && fontName === false ){
                                                if( v.indexOf( ' ' ) !== -1 ){
                                                        v = v.split( ' ' );
                                                } else {
-                                                       if( length === false && percent === false && color === false ) throw new Error( '' );
+                                                       if( length === false && percent === false && color === false ){} //throw new Error( '' );
                                                };
                                        };
                                };                                      
@@ -303,7 +296,7 @@ var _DisplayNodeStyle = X.Class.create(
                                        if( v.length === 2 && combi === true ){
                                                type ^= X.Css.Type.COMBI;
                                        } else {
-                                               throw new Error( '' );
+                                               //throw new Error( '' );
                                        };
                                        switch( v.length ){
                                                case 1 :
@@ -468,7 +461,13 @@ var _DisplayNodeStyle = X.Class.create(
                        X.Css.AttrNo.shadowInset    = [ X.Css.Dirty.PAINT,  29, X.Css.Type.BOOLEAN   ]; // true / false
                        */
                        return css.join( ';' );
-               }
+               },
+               node         : null,
+               nodeData     : null,
+               _name        : '',
+               allow        : null,
+               _cssText     : null,
+               _cssObj      : null
        }
 );
 
index ad6ffb8..3aed981 100644 (file)
@@ -16,7 +16,7 @@ var _ChromeBox = _AbstractDisplayContainer.inherits(
                                node = nodes[ --i ];\r
                                if( node.forContainer === true ){\r
                                        if( this.containerNode ){\r
-                                               throw new Error( 'ContainerNode が複数設定されています!ContainerNode はクロームボックスにひとつ、生成時に設定できます ' + node );\r
+                                               //throw new Error( 'ContainerNode が複数設定されています!ContainerNode はクロームボックスにひとつ、生成時に設定できます ' + node );\r
                                        };\r
                                        this.containerNode = node;\r
                                } else {\r
@@ -25,7 +25,7 @@ var _ChromeBox = _AbstractDisplayContainer.inherits(
                                };\r
                        };\r
                        if( !this.containerNode ){\r
-                               throw new Error( 'ContainerNode が設定されてい\ません!ContainerNode はクロームボックスにひとつ、生成時に設定できます ' );\r
+                               //throw new Error( 'ContainerNode が設定されてい\ません!ContainerNode はクロームボックスにひとつ、生成時に設定できます ' );\r
                        };\r
                }\r
        }\r
index 0a7b4b8..e26918b 100644 (file)
@@ -88,12 +88,10 @@ var _PageRoot = _AbstractDisplayContainer.inherits(
                },
                
                start : function(){
-                       console.log( 'ui start.' )
                        this.initialize( this.User, this, null, null );
                        X.Timer.once( 0, this, this.addToView );
                },
                addToView : function(){
-                       console.log( 'ui add to view.' + X.Dom.Node.root._tag )
                        var     counter = this.eventCounter, flg, elm;
                        
                        // document.body.insertBefore( this.rawElement, elmInteractive );
index b0b5f1e..a3759f8 100644 (file)
@@ -5,7 +5,7 @@ var _Text = _AbstractDisplayNode.inherits(
                content    : null,\r
                Constructor : function( content ){\r
                        if( !( this.User.instanceOf( Text ) ) ){\r
-                               throw new Error( 'Text を継承したインスタンスだけが _Text のオーナーになれます' );\r
+                               //throw new Error( 'Text を継承したインスタンスだけが _Text のオーナーになれます' );\r
                        };\r
                        this.content   = content;\r
                },\r
diff --git a/0.6.x/js/ui/AbstractUINode.js b/0.6.x/js/ui/AbstractUINode.js
deleted file mode 100644 (file)
index bd5389a..0000000
+++ /dev/null
@@ -1,790 +0,0 @@
-var _AbstractDisplayNode = X.Class.create(\r
-       '_AbstractDisplayNode',\r
-       X.Class.ABSTRACT | X.Class.PRIVATE_DATA,\r
-       {\r
-               phase         : 0,\r
-               root          : null,\r
-               rootData      : null,\r
-               parent        : null,\r
-               parentData    : null,\r
-               rawElement    : null,\r
-               rawStyle      : null,\r
-               \r
-               //events        : null, // X.EventDispatcher で設定される\r
-               reserveEvents : null,\r
-               gesture       : null,\r
-               //elmScroll     : null,\r
-               //elmScroller   : null,\r
-               //elmScrollbar  : null,\r
-                               \r
-               style         : null,\r
-               styleData     : null,\r
-               forChrome     : false, // メッキ\r
-\r
-               x              : 0,\r
-               y              : 0,\r
-               w              : 0,\r
-               h              : 0,\r
-               t              : 0, // top\r
-               l              : 0, // left\r
-               b              : 0, // bottom\r
-               r              : 0, // right\r
-               absoluteX      : 0,\r
-               absoluteY      : 0,\r
-               //_scrollX       : 0,\r
-               //_scrollY       : 0,\r
-               scrollingX     : 0,\r
-               scrollingY     : 0,\r
-               _cursor        : '',\r
-               hitChildData   : null,\r
-               hitSelf        : false,\r
-               _disabled      : false,\r
-               _childDisabled : false,\r
-               through        : false,\r
-               clip           : false,\r
-               hover          : false,\r
-               hoverStyleName : null,\r
-               isHover        : false,\r
-               scroll         : false,\r
-               dragdrop       : false,\r
-               tooltip        : null,\r
-               \r
-               _content          : null,\r
-               updateContent     : false,\r
-               \r
-               boxWidth          : 0,\r
-               boxHeight         : 0,\r
-               contentL          : 0,\r
-               contentT          : 0,\r
-               contentR          : 0,\r
-               contentB          : 0,\r
-               boxSizingOffsetLR : 0,\r
-               boxSizingOffsetTB : 0,          \r
-               contentWidth      : 0,\r
-               minContentWidth   : 0,\r
-               maxContentWidth   : AUTO,\r
-               lastContentWidth  : -1,\r
-               contentHeight     : 0,\r
-               minContentHeight  : 0,\r
-               maxContentHeight  : AUTO,\r
-               \r
-               // :hover, :focus, :disabled\r
-               \r
-               initialize : function( root, rootData, parent, parentData, parentElement ){\r
-                       this.root       = root;\r
-                       this.rootData   = rootData;\r
-                       this.parent     = parent;\r
-                       this.parentData = parentData;\r
-                       this.rawElement = X.Dom.Node.create( 'div' ); //document.createElement( 'div' );\r
-                       //this.rawStyle   = this.rawElement.style;\r
-                       \r
-                       this.styleData.initialize();\r
-                       \r
-                       this.phase = 1;\r
-                       this.User.dispatch( { type : X.UI.Event.INIT } );\r
-               },\r
-               \r
-               addToParent : function( parentElement ){\r
-                       //parentElement && parentElement.appendChild( this.rawElement );\r
-                       parentElement && parentElement.append( this.rawElement );\r
-                       \r
-                       this.phase = 2;\r
-                       this.User.dispatch( { type : X.UI.Event.ADDED } );\r
-               },\r
-\r
-       /* Rellay\r
-               afterAddition : function(){\r
-                       this.styleData.afterAddition();\r
-                       \r
-                       this.phase = 3;\r
-                       this.User.dispatch( { type : X.UI.Event.CREATION_COMPLETE } );\r
-               }, */\r
-               \r
-               creationComplete : function(){\r
-                       if( this.phase < 3 ) return;\r
-                       \r
-                       var nodes = this.nodes,\r
-                               l, i;\r
-                       if( nodes ){\r
-                               for( i = 0, l = nodes.length; i < l; ++i ){\r
-                                       nodes[ i ].creationComplete();\r
-                               };\r
-                       };\r
-                       this.mesure();\r
-                       \r
-                       // this.scroll === true && ScrollBarManager.register( this );\r
-                       \r
-                       // html 要素が親に追加されるまで控えていたイベントの登録\r
-                       var events = this.reserveEvents,\r
-                               i;\r
-                       if( !events ) return;\r
-                       for( ; events.length; ){\r
-                               this.User.listen.apply( this.User, events.shift() );\r
-                       };\r
-                       delete this.reserveEvents;\r
-               },\r
-               \r
-               mesure : function(){\r
-                       var elm = this.rawElement,\r
-                               x, y, w, h, parent;\r
-                       if( elm ){\r
-                               w = elm.width();//w = elm.offsetWidth;\r
-                               h = elm.height();//h = elm.offsetHeight;\r
-                               x = elm.x();//x = elm.offsetLeft;\r
-                               y = elm.y();//y = elm.offsetTop;                                \r
-                               if( this.x !== x || this.y !== y || this.w !== w || this.h !== h ){\r
-                                       this.x = x;\r
-                                       this.y = y;\r
-                                       this.w = w;\r
-                                       this.h = h;\r
-                                       ( parent = this.parentData ) && this.updateAbsoluteXY( parent.absoluteX, parent.absoluteY );\r
-                               };                      \r
-                       };\r
-                       this.updateRectangle();\r
-               },\r
-               \r
-               updateAbsoluteXY : function( x, y /* , scrollX, scrollY */ ){\r
-                       var nodes = this.nodes, i;\r
-                       this.absoluteX = x = this.x + x;\r
-                       this.absoluteY = y = this.y + y;\r
-                       if( !nodes ) return;\r
-                       for( i = nodes.length; i; ){\r
-                               nodes[ --i ].updateAbsoluteXY( x, y );\r
-                       };\r
-               },\r
-               \r
-               updateRectangle : function(){\r
-                       var w = this.w, h = this.h, x = this.x, y = this.y,\r
-                               l = x, t = y, r = x + w, b = y + h,\r
-                               nodes = this.nodes, i, node;\r
-                               \r
-                       if( nodes && this.clip === false ){\r
-                               for( i = nodes.length; i; ){\r
-                                       node = nodes[ --i ];\r
-                                       if( node.l + x < l ) l = x + node.l;\r
-                                       if( node.t + y < t ) t = y + node.t;\r
-                                       if( r < node.r + x ) r = x + node.r;\r
-                                       if( b < node.b + y ) b = y + node.b;\r
-                               };\r
-                       };\r
-                       // update\r
-                       if( b !== this.b || r !== this.r || t !== this.t || l !== this.l ){\r
-                               this.l = l;\r
-                               this.t = t;\r
-                               this.r = r;\r
-                               this.b = b;\r
-                               this.parentData && this.parentData.clip === false && this.parentData.updateRectangle();\r
-                       };\r
-               },\r
-               \r
-               capcher : function( x, y ){\r
-                       var nodes, child, _x, _y, hit, i;\r
-                       if( this._disabled === true ) return false;\r
-                       delete this.hitChildData;\r
-                       x -= this.x;\r
-                       y -= this.y;\r
-                       // この部分 Box に移動\r
-                       if( nodes = this.nodes ){\r
-                               _x = x - this.scrollingX;\r
-                               _y = y - this.scrollingY;\r
-                               for( i = nodes.length; i; ){\r
-                                       child = nodes[ --i ];\r
-                                       if( child._disabled === false && child.l <= _x && _x < child.r && child.t <= _y && _y < child.b && child.capcher( _x, _y ) === true ){\r
-                                               this.hitChildData = child;\r
-                                               break;\r
-                                       };\r
-                               };\r
-                       };\r
-                       if( this.through === true ){\r
-                               this.hitChildData && this.hitSelf === false && this.rootData.hoverList.push( this );\r
-                               return !!this.hitChildData;\r
-                       };\r
-                       hit = 0 <= x && x < this.w && 0 <= y && y < this.h;\r
-                       ( this.hitChildData || hit ) && this.hitSelf === false && this.rootData.hoverList.push( this );\r
-                       if( hit === true && this.hitChildData === null ) this.rootData.targetNodeData = this;\r
-                       return hit || !!this.hitChildData;\r
-               },\r
-               \r
-               dispatch : function( e ){\r
-                       var xve  = X.UI.Event,\r
-                               ret  = X.EventDispatcher.prototype.dispatch.call( this.User, e ),\r
-                               type = e.type;\r
-                       if( ret & X.Callback.MONOPOLY && !this.hitChildData && ( xve._POINTER_MOVE === type || xve.type._MOUSE_MOVE === type || xve.FILE_DRAG === type ) ){\r
-                               this.rootData.monopolyNodeData = this;\r
-                               return ret;\r
-                       };\r
-                       this.rootData.monopolyNodeData = null;\r
-                       if( xve._START_BUBLEUP < type && this.parentData && ret & X.Callback.STOP_PROPAGATION === 0 && ret & X.Callback.STOP_NOW === 0 ) return this.parentData.dispatch( e );\r
-                       return ret;\r
-               },\r
-               \r
-               _remove : function(){\r
-                       switch( this.phase ){\r
-                               case 4:\r
-                               case 3:\r
-                                       //this.styleData.afterAddition();\r
-                               case 2:\r
-                                       //this.rawElement.parentNode.removeChild( this.rawElement );\r
-                                       this.rawElement.remove();\r
-                               case 1:\r
-                                       //this.styleData.initialize();\r
-                                       delete this.root;\r
-                                       delete this.rootData;\r
-                                       delete this.parent;\r
-                                       delete this.parentData;\r
-                                       delete this.rawElement;\r
-                                       delete this.rawStyle;\r
-                       };\r
-                       delete this.phase;\r
-               },\r
-               //killed\r
-               \r
-               \r
-               content : function( v ){\r
-                       if( Type.isString( v ) === true ){\r
-                               if( !this.rawText || this.rawText.data !== v ){\r
-                                       this._content = v;\r
-                                       this.updateContent = true;\r
-                               };\r
-                               return this.User;\r
-                       } else\r
-                       if( v === null ){\r
-                               if( this._content !== v && this.rawText ){\r
-                                       this.updateContent = true;\r
-                               };\r
-                               delete this._content;\r
-                               return this.User;\r
-                       };\r
-                       if( this._content || this._content === null ) return this._content;\r
-                       if( this.rawText ) return this.rawText.data;\r
-                       return null;\r
-               },\r
-               paint : function( dirty ){\r
-                       var content = this._content,\r
-                               style   = this.styleData;                               \r
-                       if( this.updateContent === true || ( style && style.hasPaint === true ) ){\r
-                               if( !this.rawElement ){\r
-                                       this.rawElement = DOM.createDiv();\r
-                                       this.__parent.addDisplayElement( this );\r
-                               };\r
-                               dirty !== 0 && this.commitStyle();                      \r
-                               if( this.updateContent === true ){\r
-                                       if( content !== null ){\r
-                                               if( !this.rawText ){\r
-                                                       this.rawText = DOM.cerateText();\r
-                                                       this.rawElement.appendChild( this.rawText );\r
-                                               };\r
-                                               this.rawText.data = content;                                                    \r
-                                       } else\r
-                                       if( this.rawText ){\r
-                                               DOM.correct( this.rawText );\r
-                                               delete this.rawText;\r
-                                               delete this.contentWidth;\r
-                                               delete this.conetntHeight;\r
-                                               delete this.scrollWidth;                                                        \r
-                                               delete this.scrollHeight;\r
-                                       };                                      \r
-                               };\r
-                       } else\r
-                       if( this.rawElement && content === null && ( !style || style.hasPaint === false ) ){\r
-                               this.__parent.removeDisplayElement( this );\r
-                               DOM.correct( this.rawElement );\r
-                               delete this.contentWidth;\r
-                               delete this.conetntHeight;\r
-                       };\r
-               },\r
-               commitStyle : function(){\r
-                       var css;\r
-                       if( this.rawElement ){\r
-                               css = this.styleData ? this.styleData.cssText( this ) : '';\r
-                               if( this.contentWidth  !== AUTO ) css += 'width:'  + this.contentWidth  + 'px';\r
-                               if( this.contentHeight !== AUTO ) css += 'height:' + this.contentHeight + 'px';\r
-                               //this.rawElement.style.cssText = css;\r
-                               this.rawElement.cssText( css );\r
-                       };\r
-               },\r
-               /*\r
-                * 親の サイズを元に自身のサイズを計算していく\r
-                */\r
-               preMesure : function( allowW, allowH ){\r
-                       var style    = this.styleData,\r
-                               styles, calc, box, min, max,\r
-                               contentW, contentH, allowSize, boxMinus,\r
-                               paddingT, paddingR, paddingB, paddingL,\r
-                               borderT, borderR, borderB, borderL;//,\r
-                               //marginT, marginR, marginB, marginL;\r
-\r
-                       if( style ){\r
-                               styles   = style.data;\r
-                               calc     = _AbstractDisplayNode.calcValue;\r
-                               box      = styles[ X.Css.AttrNo.sizing ];\r
-                               \r
-                               // Width が確定するパターン\r
-                               // 自身が constraintW の場合 親が AUTO ではない\r
-                               // 自身が constraintW でない場合自身が  AUTO はなくかつ親 が AUTO の場合 or 自身は % でない\r
-                               if( style.constraintW ? allowW !== AUTO : !style.autoWidth && ( allowW !== AUTO || !style.percentWidth ) ){\r
-                                       if( style.constraintW ){ // 制約レイアウト\r
-                                               contentW = allowW - calc( styles[ X.Css.AttrNo.left ], allowW ) - calc( styles[ X.Css.AttrNo.right ], allowW );\r
-                                       } else {\r
-                                               contentW = _AbstractDisplayNode.finalValue( styles[ X.Css.AttrNo.width ], styles[ X.Css.AttrNo.minWidth ], styles[ X.Css.AttrNo.maxWidth ], allowW );                                   \r
-                                       };\r
-                                       paddingR = calc( styles[ X.Css.AttrNo.padding + 1 ], allowW );\r
-                                       paddingL = calc( styles[ X.Css.AttrNo.padding + 3 ], allowW );\r
-                                       borderR  = styles[ X.Css.AttrNo.border + 1 ];\r
-                                       borderL  = styles[ X.Css.AttrNo.margin + 3 ];\r
-                                       // marginR  = calc( styles[ X.Css.AttrNo.margin + 1 ], allowW );\r
-                                       // marginL  = calc( styles[ X.Css.AttrNo.margin + 3 ], allowW );\r
-                                       boxMinus = 0;\r
-                                       switch( box ){\r
-                                               //case 3 : // margin-box\r
-                                               //       boxMinus = - marginR - marginL;\r
-                                               case 2 : // border-box\r
-                                                        boxMinus -= borderR + borderL;\r
-                                               case 1 : // padding-box\r
-                                                        boxMinus -= paddingR + paddingL;\r
-                                               // case 0 : // content-box\r
-                                       };\r
-                                       this.contentL     = /* marginL + */ borderL + paddingL;\r
-                                       this.contentR     = /* marginR + */ borderR + paddingR;         \r
-                                       this.contentWidth = contentW + boxMinus;\r
-                                       this.boxWidth     = contentW - boxMinus + this.contentL + this.contentR;\r
-                                       this.boxSizingOffsetLR = boxMinus;\r
-                               } else {\r
-                                       this.boxWidth = this.contentWidth = AUTO;\r
-                                       min = styles[ X.Css.AttrNo.minWidth ];\r
-                                       max = styles[ X.Css.AttrNo.maxWidth ];\r
-                                       this.minContentWidth = 1 <= min ? min : 0;\r
-                                       this.maxContentWidth = 1 <= max ? max : AUTO;\r
-                                       delete this.boxSizingOffsetLR;\r
-                               };\r
-                               \r
-                               // Height\r
-                               if( style.constraintH ? allowH !== AUTO : !style.autoHeight && ( allowH !== AUTO || !style.percentHeight ) ){\r
-                                       if( style.constraintH ){ // 制約レイアウト\r
-                                               contentH = allowH - calc( styles[ X.Css.AttrNo.top ], allowH ) - calc( styles[ X.Css.AttrNo.bottom ], allowH );\r
-                                       } else {\r
-                                               contentH = _AbstractDisplayNode.finalValue( styles[ X.Css.AttrNo.height ], styles[ X.Css.AttrNo.minHeight ], styles[ X.Css.AttrNo.maxHeight ], allowH );\r
-                                       };\r
-                                       allowSize = styles[ X.Css.AttrNo.pageBox ] === true ? allowH : allowW;\r
-                                       paddingT  = calc( styles[ X.Css.AttrNo.padding + 0 ], allowSize );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                                       paddingB  = calc( styles[ X.Css.AttrNo.padding + 2 ], allowSize );\r
-                                       borderT   = styles[ X.Css.AttrNo.border + 0 ];\r
-                                       borderB   = styles[ X.Css.AttrNo.border + 2 ];\r
-                                       // marginT   = calc( styles[ X.Css.AttrNo.margin + 0 ], allowSize );// marginTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                                       // marginB   = calc( styles[ X.Css.AttrNo.margin + 2 ], allowSize );\r
-                                       this.boxHeight = contentH;\r
-                                       boxMinus = 0;\r
-                                       switch( box ){\r
-                                               // case 3 : // margin-box\r
-                                                        // boxMinus = - marginT - marginR;\r
-                                               case 2 : // border-box\r
-                                                        boxMinus  = borderT + borderB;\r
-                                               case 1 : // padding-box\r
-                                                        boxMinus -= paddingT + paddingB;\r
-                                               // case 0 : // content-box\r
-                                       };                      \r
-                                       this.contentT      = /* marginT + */ borderT + paddingT;\r
-                                       this.conetntB      = /* marginB + */ borderB + paddingB;                        \r
-                                       this.contentHeight = contentH + boxMinus;\r
-                                       this.boxHeight     = contentH - boxMinus + this.contentT + this.conetntB;\r
-                                       this.boxSizingOffsetTB = boxMinus;\r
-                               } else {\r
-                                       this.boxHeight = this.contentHeight = AUTO;\r
-                                       min = styles[ X.Css.AttrNo.minHeight ];\r
-                                       max = styles[ X.Css.AttrNo.maxHeight ];\r
-                                       this.minContentHeight = 1 <= min ? min : 0;\r
-                                       this.maxContentHeight = 1 <= max ? max : AUTO;\r
-                                       delete this.boxSizingOffsetTB;\r
-                               };\r
-                       } else {\r
-                               this.boxWidth  = this.contentWidth  = allowW;\r
-                               this.boxHeight = this.contentHeight = allowH;\r
-                               delete this.minContentHeight;\r
-                               delete this.maxContentHeight;\r
-                               delete this.contentL;\r
-                               delete this.contentT;\r
-                               delete this.contentR;\r
-                               delete this.contentB;\r
-                       };\r
-               },\r
-               \r
-               /**\r
-                * 要素の追加・削除\r
-                * 1. ペイントがある // 予約のみ\r
-                * 2. コンテンツがある // 予約のみ *\r
-                * 3. コンテンツを削除 // 予約のみ\r
-                * 4. 要素を削除 // 予約のみ\r
-                * \r
-                * コンテンツの再計算\r
-                * 0. 要素追加して css セット\r
-                * 1. コンテンツの変更\r
-                * 2. font 指定の変更\r
-                * 3. contentWidth の変更 (コンテンツの高さの再計算) 前回の contentWidth の保持\r
-                * \r
-                * contentSize, scrollSize の決定\r
-                */\r
-               _mesure : function( dirty ){\r
-                       var content = this._content,\r
-                               root    = this.rootData,\r
-                               style   = this.styleData,\r
-                               w       = this.contentWidth,\r
-                               h       = this.contentHeight;\r
-                       switch( this.updateContent === true ? X.Css.Dirty.CONTENT : dirty ){\r
-                               case X.Css.Dirty.CONTENT : // コンテンツが変更された\r
-                                       this.paint( 0 );\r
-                                       this.lastContentWidth = -1;\r
-                               case X.Css.Dirty.FONT   : // フォントサイズが変更された\r
-                                       this.commitStyle();\r
-                               case X.Css.Dirty.REFLOW : // レイアウトの再計算が必要\r
-                                       /* http://web-designs.seesaa.net/article/188400668.html\r
-                                        * min-width の値が max-width の値より大きい場合は、max-width の値は min-width の値に設定される。\r
-                                        * \r
-                                        * テキストノードがあり\r
-                                        * 1. contentWidth === AUTO\r
-                                        *     style を更新して contentWidth の決定\r
-                                        *     min or max に引っかかったら style 更新\r
-                                        *     contentHeight === AUTO の場合\r
-                                        *     textHeight の決定\r
-                                        *     contentHeight !== AUTO の場合 scrollHeight のみ更新\r
-                                        * 2. contentHeight === AUTO かつ \r
-                                        *     コンテンツの高さの再取得が必要( contentWidth が最終計測時の contentWidth と一致 かつ フォント・コンテンツに変更無し の場合再取得不要)\r
-                                        *      style を更新して contentHeight の決定\r
-                                        *     必要でない\r
-                                        * 3. content のサイズがすでに決定している\r
-                                        *     コンテンツの高さの再取得が必要\r
-                                        *     必要でない\r
-                                        */   \r
-                                       if( this.rawText ){\r
-                                               if( w === AUTO ){\r
-                                                       w = this.contentWidth = this.elm.offsetWidth;\r
-                                                       this.scrollWidth = w + this.contentL + this.contentR;\r
-                                                       if( this.maxContentWidth < w - this.boxSizingOffsetLR ) this.contentWidth = this.maxContentWidth + this.boxSizingOffsetLR;\r
-                                                       if( w - this.boxSizingOffsetLR < this.minContentWidth ) this.contentWidth = this.minContentWidth + this.boxSizingOffsetLR;\r
-                                                       this.lastContentWidth = this.contentWidth;\r
-                                                       \r
-                                                       w !== this.contentWidth && this.commitStyle();\r
-                                                       \r
-                                                       if( h === AUTO ){\r
-                                                               h = this.conetntHeight = this.elm.offsetHeight;\r
-                                                               this.scrollHeight = h + this.contentT + this.contentB;\r
-                                                               if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
-                                                               if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;\r
-                                                       } else {\r
-                                                               this.scrollHeight = this.elm.offsetHeight + this.contentT + this.contentB;\r
-                                                       };\r
-                                               } else\r
-                                               if( h === AUTO ){\r
-                                                       if( w !== this.lastContentWidth || dirty !== X.Css.Dirty.REFLOW ){\r
-                                                               this.commitStyle();\r
-                                                               this.lastContentWidth  = w;\r
-                                                               h = this.conetntHeight = this.elm.offsetHeight;\r
-                                                               this.scrollWidth       = w + this.contentL + this.contentR;\r
-                                                               this.scrollHeight      = h + this.contentT + this.contentB;\r
-                                                               if( this.maxContentHeight < h - this.boxSizingOffsetTB ) this.contentHeight = this.maxContentHeight + this.boxSizingOffsetTB;\r
-                                                               if( h - this.boxSizingOffsetTB < this.minContentHeight ) this.contentHeight = this.minContentHeight + this.boxSizingOffsetTB;                                                           \r
-                                                       } else {\r
-                                                               this.scrollWidth  = w + this.contentL + this.contentR;\r
-                                                               this.scrollHeight = h + this.contentT + this.contentB;\r
-                                                               root.paintReserve( this );\r
-                                                       };\r
-                                               } else {\r
-                                                       if( dirty !== X.Css.Dirty.REFLOW ){\r
-                                                               this.commitStyle();\r
-                                                               this.scrollWidth  = this.elm.offsetWidth  + this.contentL + this.contentR;\r
-                                                               this.scrollHeight = this.elm.offsetHeight + this.contentT + this.contentB;\r
-                                                       } else {\r
-                                                               root.paintReserve( this );\r
-                                                               this.scrollWidth  = w + this.contentL + this.contentR;\r
-                                                               this.scrollHeight = h + this.contentT + this.contentB;\r
-                                                       };\r
-                                               };                                      \r
-                                       } else {\r
-                                               if( w === AUTO ) this.contentWidth  = w = 0 < this.minContentWidth  ? this.minContentWidth  : 0;\r
-                                               if( h === AUTO ) this.contentHeight = h = 0 < this.minContentHeight ? this.minContentHeight : 0;\r
-                                               this.scrollWidth  = w + this.contentL + this.contentR;\r
-                                               this.scrollHeight = h + this.contentT + this.contentB;\r
-                                               root.paintReserve( this );                              \r
-                                       };\r
-                                       break;                  \r
-                               case X.Css.Dirty.PAINT : // 再描画のみ必要\r
-                                       root.paintReserve( this );\r
-                                       break;                                          \r
-                       };\r
-               },\r
-               /**\r
-                * 自身のコンテンツサイズを元に AUTO な width, height を確定していく\r
-                */\r
-               postMesure : function(){\r
-                       var style = this.styleData,\r
-                               styles, calc, box,\r
-                               contentW, contentH,\r
-                               contentSize, contentPlus,\r
-                               paddingT, paddingR, paddingB, paddingL,\r
-                               borderT, borderR, borderB, borderL,\r
-                               min, max;\r
-                       if( style ){\r
-                               styles   = style.data;\r
-                               calc     = _AbstractDisplayNode.advancedCalcValue;\r
-                               contentW = this.contentWidth;\r
-                               box      = styles[ X.Css.AttrNo.sizing ];\r
-                               \r
-                               // Width\r
-                               if( this.boxWidth === AUTO ){\r
-                                       paddingR = calc( styles[ X.Css.AttrNo.padding + 1 ], contentW );                                        \r
-                                       paddingL = calc( styles[ X.Css.AttrNo.padding + 3 ], contentW );                                        \r
-                                       borderR  = styles[ X.Css.AttrNo.border + 1 ];                                   \r
-                                       borderL  = styles[ X.Css.AttrNo.border + 3 ];                                   \r
-                                       //marginR  = calc( styles[ X.Css.AttrNo.margin + 1 ], contentW );\r
-                                       //marginL  = calc( styles[ X.Css.AttrNo.margin + 3 ], contentW );\r
-                                       contentPlus = 0;\r
-                                       switch( box ){\r
-                                               //case 3 : // margin-box\r
-                                               //       contentPlus  = ( marginR + marginL );\r
-                                               case 2 : // border-box\r
-                                                        contentPlus  = borderR + borderL;\r
-                                               case 1 : // padding-box\r
-                                                        contentPlus += paddingR + paddingL;\r
-                                               // case 0 : // content-box\r
-                                       };\r
-                                       contentW += contentPlus;\r
-                                       if( !style.constraintW ){\r
-                                               min = styles[ X.Css.AttrNo.minWidth ];\r
-                                               max = styles[ X.Css.AttrNo.maxWidth ];\r
-                                               if( contentW < min && 1 <= min && contentPlus < min ){\r
-                                                       this.contentWidth = min - contentPlus;\r
-                                               } else\r
-                                               if( max < contentW && 1 <= max && contentPlus < max ){\r
-                                                       this.contentWidth = max - contentPlus;\r
-                                               };\r
-                                       };\r
-                                       this.contentL = /* marginL + */ borderL + paddingL;\r
-                                       this.contentR = /* marginR + */ borderR + paddingR;\r
-                                       this.boxWidth = this.contentWidth + this.contentL + this.contentR;\r
-                               };\r
-                               // Height\r
-                               if( this.boxHeight === AUTO ){\r
-                                       contentH    = this.contentHeight;\r
-                                       contentSize = styles[ X.Css.AttrNo.pageBox ] === true ? contentH : contentW;\r
-                                       paddingT    = calc( styles[ X.Css.AttrNo.padding + 0 ], contentSize );// paddingTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                                       paddingB    = calc( styles[ X.Css.AttrNo.padding + 2 ], contentSize );\r
-                                       borderT     = styles[ X.Css.AttrNo.border + 0 ];\r
-                                       borderB     = styles[ X.Css.AttrNo.border + 2 ];\r
-                                       //marginT     = calc( styles[ X.Css.AttrNo.margin + 0 ], contentSize );// marginTRBL の % 指定は 最大幅に対して TB でも幅に対して\r
-                                       //marginB     = calc( styles[ X.Css.AttrNo.margin + 2 ], contentSize );\r
-                                       contentPlus = 0;\r
-                                       switch( box ){\r
-                                               //case 3 : // margin-box\r
-                                                        //contentPlus  = ( marginT + marginB );\r
-                                               case 2 : // border-box\r
-                                                        contentPlus  = borderT + borderB;\r
-                                               case 1 : // padding-box\r
-                                                        contentPlus += paddingT + paddingB;\r
-                                               // case 0 : // content-box\r
-                                       };\r
-                                       contentH += contentPlus;\r
-                                       if( !style.constraintH ){\r
-                                               min = styles[ X.Css.AttrNo.minHeight ];\r
-                                               max = styles[ X.Css.AttrNo.maxHeight ];\r
-                                               if( contentH < min && 1 <= min && contentPlus < min ){\r
-                                                       this.contentHeight = min - contentPlus;\r
-                                               } else\r
-                                               if( max < contentH && 1 <= max && contentPlus < max ){\r
-                                                       this.contentHeight = max - contentPlus;\r
-                                               };\r
-                                       };\r
-                                       this.contentT  = marginT + borderT + paddingT;\r
-                                       this.contentB  = marginB + borderB + paddingB;                                          \r
-                                       this.boxHeight = this.contentHeight + this.contentT + this.contentB;\r
-                               };                              \r
-                       } else {\r
-                               this.boxWidth  = this.contentWidth;\r
-                               this.boxHeight = this.contentHeight;\r
-                               delete this.minContentHeight;\r
-                               delete this.maxContentHeight;\r
-                               delete this.contentL;\r
-                               delete this.contentT;\r
-                               delete this.contentR;\r
-                               delete this.contentB;\r
-                       };\r
-               }\r
-       }\r
-);\r
-\r
-_AbstractDisplayNode.finalValue = function( styleValue, styleMin, styleMax, srcValue ){\r
-       var calc = _AbstractDisplayNode.calcValue,\r
-               v    = calc( styleValue, srcValue ),\r
-               min  = calc( styleMin,   srcValue ),\r
-               max  = calc( styleMax,   srcValue );\r
-       if( v < min ) return min;\r
-       if( max < v ) return max;\r
-       return v;\r
-};\r
-_AbstractDisplayNode.calcValue = function( styleValue, srcValue ){\r
-       switch( styleValue ){\r
-               case 0 :\r
-                       return 0;\r
-               case AUTO :\r
-                       return AUTO;\r
-               case FULL :\r
-                       return srcValue; // 100%\r
-       };\r
-       if( 1 <= styleValue ) return styleValue; // legth\r
-       if( -1 < styleValue ) return FLOOR( srcValue * styleValue ); // %       \r
-       return styleValue; // - length\r
-};\r
-_AbstractDisplayNode.advancedCalcValue = function( styleValue, srcValue ){\r
-       switch( styleValue ){\r
-               case 0 :\r
-                       return 0;\r
-               case AUTO :\r
-                       return srcValue;\r
-               case FULL :\r
-                       throw new Error( 'advancedCalcValue FULL' ); \r
-                       // return ; // 100%\r
-       };\r
-       if( 1 <= styleValue ) return styleValue; \r
-       if( -1 < styleValue ) return FLOOR( ( srcValue / ( 1 - styleValue ) ) * styleValue ); // %      \r
-       return styleValue; // - length\r
-};\r
-\r
-\r
-var AbstractDisplayNode = X.EventDispatcher.inherits(\r
-       'AbstractDisplayNode',\r
-       X.Class.ABSTRACT | X.Class.SUPER_ACCESS,\r
-       {\r
-               style : null,\r
-               parent : function(){\r
-                       return X.Class._getPrivate( this ).parent;\r
-               },\r
-               root : function(){\r
-                       return X.Class._getPrivate( this ).root;\r
-               },\r
-               listen : function( type, arg1, arg2 ){\r
-                       var root, data, events, counter;\r
-                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
-                               data = X.Class._getPrivate( this );\r
-                               if( data.phase < 3 ){\r
-                                       if( !( events = data.reserveEvents ) ) data.reserveEvents = events = [];\r
-                                       events[ events.length ] = [ type, arg1, arg2 ];\r
-                                       return this;\r
-                               };\r
-                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
-                                       if( !this.gesture ){\r
-                                               this.gesture = new X.UI.Gesture( data.root, this, type );\r
-                                       } else {\r
-                                               this.gesture.listen( type );\r
-                                       };\r
-                               } else {\r
-                                       root    = data.rootData;\r
-                                       counter = root.eventCounter;\r
-                                       if( counter[ type ] ){\r
-                                               ++counter[ type ];\r
-                                       } else {\r
-                                               counter[ type ] = 1;                            \r
-                                               root.elmMouseCatch.listen( X.UI.Event.IdToName[ type ], eventRellay );\r
-                                       };\r
-                               };\r
-                       };\r
-                       return X.EventDispatcher.prototype.listen.apply( this, arguments );\r
-               },\r
-               unlisten : function( type, arg1, arg2 ){\r
-                       var root, data, events, i, ev, counter;\r
-                       if( X.UI.Event._START_POINTER <= type && type <= X.UI.Event._END_POINTER ){\r
-                               data = X.Class._getPrivate( this );\r
-                               if( data.phase < 3 ){\r
-                                       if( !( events = data.reserveEvents ) ) return this;\r
-                                       for( i = events.length; i; ){\r
-                                               ev = events[ --i ];\r
-                                               if( ev[ 0 ] === type && ev[ 1 ] === arg1 && ev[ 2 ] === arg2 ){\r
-                                                       events.split( i, 1 );\r
-                                                       return this;\r
-                                               };\r
-                                       }; \r
-                                       return this;\r
-                               };\r
-\r
-                               if( X.UI.Event._START_XUI_EVENT < type && type < X.UI.Event._END_XUI_EVENT ){\r
-                                       this.gesture && this.gesture.unlisten( type );\r
-                               } else {\r
-                                       root    = data.rootData;\r
-                                       counter = root.eventCounter;\r
-                                       if( !counter[ type ] ) return this;\r
-                                       --counter[ type ];\r
-                                       if( counter[ type ] === 0 ){\r
-                                               X.Dom.Event.remove( root.elmMouseCatch, X.UI.Event.IdToName[ type ], eventRellay );\r
-                                               delete counter[ type ];\r
-                                       };\r
-                               };\r
-                       };\r
-                       return X.EventDispatcher.prototype.unlisten.apply( this, arguments );\r
-               },\r
-               getNextNode : function(){\r
-                       \r
-               },\r
-               getPrevNode : function(){\r
-                       \r
-               },\r
-               dispatch : function( e ){\r
-                       return X.Class._getPrivate( this ).dispatch( e );\r
-               },\r
-               nodeIndex : function( v ){\r
-                       var data = X.Class._getPrivate( this );\r
-                       if( typeof v === 'number' ){\r
-                               // data.nodeIndex( v );\r
-                               return this;\r
-                       };\r
-                       return data.parentData ? data.parentData.nodes.indexOf( data ) : 0;\r
-               },\r
-               displayIndex : function(){\r
-                       \r
-               },\r
-               // ちゃんとやれば不要!\r
-               mesure : function(){\r
-                       var data = X.Class._getPrivate( this );\r
-                       data.mesure();\r
-                       4 <= data.phase && data.rootData.reserveCalc();\r
-                       return this;\r
-               },\r
-               getX : function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).x;\r
-               },\r
-               getY : function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).y;\r
-               },\r
-               getAbsoluteX : function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).absoluteX;\r
-               },\r
-               getAbsoluteY: function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).absoluteY;\r
-               },\r
-               getWidth : function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).w;\r
-               },\r
-               getHeight : function(){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).h;\r
-               },\r
-               scrollTo : function( x, y ){\r
-                       X.Class._getPrivate( this ).scrollTo( x, y );\r
-               },\r
-               getScrollX : function( v ){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).scrollX( v );\r
-               },\r
-               getScrollY : function( v ){\r
-                       // dirty の場合、rootData.calculate\r
-                       return X.Class._getPrivate( this ).scrollY( v );\r
-               },\r
-               disabled : function( v ){\r
-                       return X.Class._getPrivate( this ).disabled( v );\r
-               },\r
-               cursor : function( v ){\r
-                       return X.Class._getPrivate( this ).cursor( v );\r
-               }\r
-       }\r
-);
\ No newline at end of file