OSDN Git Service

Version 0.6.156, add X.UI.Repeater.
[pettanr/clientJs.git] / 0.6.x / js / 20_ui / 08_Box.js
index b5de649..3fb51e4 100644 (file)
@@ -24,7 +24,10 @@ var XUI_Layout_Canvas = X[ 'UI' ][ 'Layout' ][ 'Canvas' ] = XUI_createLayout( {
 \r
                data.preMesure( w, h );\r
                \r
-               if( isNeedsDetection && ( data.boxWidth === XUI_Attr_AUTO || data.boxHeight === XUI_Attr_AUTO ) ) return false;\r
+               console.log( w + ' > ' + data.boxWidth );\r
+               \r
+               //  data.boxWidth と data.boxHeight のどちらかでも Infinity\r
+               if( isNeedsDetection && data.boxWidth + data.boxHeight === XUI_Attr_AUTO ) return false;\r
                \r
                _x = data.contentL;\r
                _y = data.contentT;\r
@@ -39,7 +42,7 @@ var XUI_Layout_Canvas = X[ 'UI' ][ 'Layout' ][ 'Canvas' ] = XUI_createLayout( {
                        };\r
                } else\r
                if( data.contentHeight === XUI_Attr_AUTO ){\r
-                       data.contentHeight = data.minContentHeight !== XUI_Attr_AUTO ? data.minContentHeight : 0;\r
+                       data.contentHeight = data.contentHeightMin !== XUI_Attr_AUTO ? data.contentHeightMin : 0;\r
                };\r
                \r
                data.postMesure();\r
@@ -57,7 +60,7 @@ var XUI_Box = XUI_AbstractUINode.inherits(
        'X.UI._Box',\r
        X_Class.NONE,\r
        {\r
-               supportAttrs    : XUI_Attr_createAttrDef( XUI_AbstractUINode.prototype.supportAttrs, XUI_Layout_Canvas.overrideAttrsForSelf ),\r
+               usableAttrs     : XUI_Attr_createAttrDef( XUI_AbstractUINode.prototype.usableAttrs, XUI_Layout_Canvas.overrideAttrsForSelf ),\r
                \r
                layout          : null,\r
                uinodes         : null,\r
@@ -72,9 +75,9 @@ var XUI_Box = XUI_AbstractUINode.inherits(
 \r
                Constructor : function( user, layout, args ){\r
                        var i = 0,\r
-                               l = args.length || 1,\r
+                               l = args && args.length,\r
                                j = -1,\r
-                               uinodes, arg, _data, attrs, support, p;\r
+                               uinodes, arg, _data, attrs, attrDef, p;\r
                        \r
                        //if( !args.length ) args = [ args ];\r
                        \r
@@ -84,10 +87,11 @@ var XUI_Box = XUI_AbstractUINode.inherits(
                        \r
                        this.User   = user;\r
                        \r
+                       // TODO デフォルトの attr 指定の中から XNODE に指定するものを集めて適用。\r
                        this.xnode  = X_Doc_create( 'div' );\r
                        \r
                        // すでに定義されていればそちらを採用\r
-                       // supportAttrs や attrClass が、layout を元に上書きされているため\r
+                       // usableAttrs や attrClass が、layout を元に上書きされているため\r
                        this.layout = this.layout || layout;\r
                        \r
                        for( ; i < l; ++i ){\r
@@ -100,12 +104,6 @@ var XUI_Box = XUI_AbstractUINode.inherits(
                                                //throw new Error( 'インスタンスはすでに親に追加されています ' + arg );\r
                                        };\r
                                } else\r
-                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( Node ) ){\r
-                                       //this.layout = arg;\r
-                               } else\r
-                               if( arg[ 'instanceOf' ] && arg[ 'instanceOf' ]( XUI_LayoutBase ) ){\r
-                                       //this.layout = arg;\r
-                               } else\r
                                if( X_Type_isObject( arg ) ){\r
                                        if( attrs ){\r
                                                attrs = X_Class_override( attrs, arg );\r
@@ -119,7 +117,7 @@ var XUI_Box = XUI_AbstractUINode.inherits(
                        \r
                        for( p in attrs ){\r
                                if( X_EMPTY_OBJECT[ p ] ) continue;\r
-                               ( support = this.supportAttrs[ p ] ) && this.setAttr( p, support, attrs[ p ] );\r
+                               ( attrDef = this.usableAttrs[ p ] ) && this.setAttr( p, attrDef, attrs[ p ] );\r
                        };\r
                },\r
        /* Rellay */\r
@@ -130,7 +128,6 @@ var XUI_Box = XUI_AbstractUINode.inherits(
                        this.rootData   = rootData;\r
                        this.parent     = parent;\r
                        this.parentData = parentData;\r
-                       //this.xnode      = X_Doc_create( 'div' );\r
                        \r
                        if( i ){\r
                                for( ; i; ){\r
@@ -234,14 +231,13 @@ var XUI_Box = XUI_AbstractUINode.inherits(
                                _p1  = p1 && data.phase < 1;\r
                                _p2  = p2 && data.phase < 2;\r
                                _p1 && data.initialize( this.root, this.rootData, this.User, this );\r
-                               if( index <= num ){\r
-                                       // _p2 && this.xnode.insertBefore( data.xnode, uinodes[ index + i ].xnode );\r
+                               if( index < num ){\r
                                        _p2 && uinodes[ index + i ].xnode[ 'prev' ]( data.xnode );\r
                                        _p2 && data.addToParent( this.xnode );\r
                                        uinodes.splice( index + i, 0, data );\r
                                } else {\r
                                        _p2 && data.addToParent( this.xnode );\r
-                                       uinodes[ uinodes.length ] = data;       \r
+                                       uinodes[ uinodes.length ] = data;\r
                                };\r
                                p3 && data.phase < 3 && data.creationComplete();\r
                        };\r
@@ -310,17 +306,19 @@ X.UI.Box = X.UI.AbstractUINode.inherits(
                        X_Pair_create( this, XUI_Box( this, XUI_Layout_Canvas, arguments ) );\r
                },\r
                \r
-               add : function( node /* , node, node ... */ ){\r
-                       X_Pair_get( this ).addAt( this.numNodes() + 1, Array.prototype.slice.call( arguments ) );\r
+               add : function( /* node, node, node ... */ ){\r
+                       X_Pair_get( this ).addAt( this.numNodes() + 1, X_Object_cloneArray( arguments ) );\r
                        return this;\r
                },\r
-               addAt : function( index, node /* , node, node ... */ ){\r
+               addAt : function( index /* , node , node, node ... */ ){\r
+                       var nodes;\r
                        if( index < 0 ) index = 0;\r
-                       X_Pair_get( this ).addAt( arguments[ 0 ], Array.prototype.slice.call( arguments, 1 ) );\r
+                       nodes = X_Object_cloneArray( arguments );\r
+                       X_Pair_get( this ).addAt( nodes.shift(), nodes );\r
                        return this;\r
                },\r
-               remove : function( node /* , node, node ... */ ){\r
-                       X_Pair_get( this )[ 'remove' ]( Array.prototype.slice.call( arguments ) );\r
+               remove : function( /* node, node, node ... */ ){\r
+                       X_Pair_get( this )[ 'remove' ]( X_Object_cloneArray( arguments ) );\r
                        return this;\r
                },\r
                removeAt : function( from, length ){\r
@@ -353,6 +351,20 @@ X.UI.Box = X.UI.AbstractUINode.inherits(
                numNodes : function(){\r
                        var uinodes = X_Pair_get( this ).uinodes;\r
                        return uinodes && uinodes.length || 0;\r
+               },\r
+               \r
+               clone : function( opt_cloneListener ){\r
+                       var clone   = XUI_AbstractUINode.prototype.clone.call( this,  opt_cloneListener ),\r
+                               uinodes = X_Pair_get( this ).uinodes,\r
+                               i       = 0,\r
+                               l       = uinodes && uinodes.length,\r
+                               copies  = [];\r
+                       \r
+                       for( ; i < l; ++i ){\r
+                               copies[ i ] = uinodes[ i ].clone( opt_cloneListener );\r
+                       };\r
+\r
+                       return l ? clone.add.apply( clone, copies ) : clone;\r
                }\r
        }\r
 );\r
@@ -396,20 +408,20 @@ X.UI.Box.presets = function(){
                /*\r
                 * スーパークラスの属性定義リストをレイアウトの持つ属性定義で上書きした新しい属性定義リストを作る。\r
                 */\r
-               supports = XUI_Attr_createAttrDef( privateKlass.prototype.supportAttrs, layout.overrideAttrsForSelf );\r
+               supports = XUI_Attr_createAttrDef( privateKlass.prototype.usableAttrs, layout.overrideAttrsForSelf );\r
                \r
                klass = this.inherits( privateKlass );\r
-               privateKlass.prototype.supportAttrs = supports;\r
+               privateKlass.prototype.usableAttrs = supports;\r
                privateKlass.prototype.attrClass    = XUI_Attr_preset( privateKlass.prototype.attrClass, supports, attrs );\r
        } else {\r
-               supports = XUI_Attr_createAttrDef( shadow.prototype.supportAttrs, layout.overrideAttrsForSelf );\r
+               supports = XUI_Attr_createAttrDef( shadow.prototype.usableAttrs, layout.overrideAttrsForSelf );\r
                \r
                klass = this.inherits(\r
                        boxName,\r
                        shadow.inherits(\r
                                {\r
                                        layout       : layout,\r
-                                       supportAttrs : supports,\r
+                                       usableAttrs : supports,\r
                                        attrClass    : XUI_Attr_preset( shadow.prototype.attrClass, supports, attrs )\r
                                }\r
                        )\r