src/cm/media/js/lib/yui/yui_3.10.3/build/widget-child/widget-child-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('widget-child', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Extension enabling a Widget to be a child of another Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module widget-child
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
var Lang = Y.Lang;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 * Widget extension providing functionality enabling a Widget to be a 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 * child of another Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 * @class WidgetChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
 * @param {Object} config User configuration object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
function Child() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    //  Widget method overlap
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    Y.after(this._syncUIChild, this, "syncUI");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    Y.after(this._bindUIChild, this, "bindUI");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
Child.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
     * @attribute selected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
     * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
     * @description Number indicating if the Widget is selected.  Possible 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
     * values are:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
     * <dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
     * <dt>0</dt> <dd>(Default) Not selected</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
     * <dt>1</dt> <dd>Fully selected</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
     * <dt>2</dt> <dd>Partially selected</dd>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
     * </dl>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    selected: {   
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        validator: Lang.isNumber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
     * @attribute index
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
     * @description Number representing the Widget's ordinal position in its 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
     * parent Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    index: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        getter: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
            var parent = this.get("parent"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
                index = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
            if (parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
                index = parent.indexOf(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            return index;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * @attribute parent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * @type Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     * @description Retrieves the parent of the Widget in the object hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    parent: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * @attribute depth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     * @default -1 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * @readOnly         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     * @description Number representing the depth of this Widget relative to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     * the root Widget in the object heirarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    depth: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        getter: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            var parent = this.get("parent"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
                root = this.get("root"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                depth = -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            while (parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                depth = (depth + 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                if (parent == root) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
                    break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
                parent = parent.get("parent");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            return depth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * @attribute root
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * @type Widget 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     * @readOnly         
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     * @description Returns the root Widget in the object hierarchy.  If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
     * ROOT_TYPE property is set, the search for the root Widget will be 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     * constrained to parent Widgets of the specified type.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    root: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
        readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        getter: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            var getParent = function (child) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                var parent = child.get("parent"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                    FnRootType = child.ROOT_TYPE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
                    criteria = parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                if (FnRootType) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                    criteria = (parent && Y.instanceOf(parent, FnRootType));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                return (criteria ? getParent(parent) : child);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            return getParent(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
Child.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     * Constructor reference used to determine the root of a Widget-based 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
     * object tree.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
     * Currently used to control the behavior of the <code>root</code>  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
     * attribute so that recursing up the object heirarchy can be constrained 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
     * to a specific type of Widget.  Widget authors should set this property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
     * to the constructor function for a given Widget implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
     * @property ROOT_TYPE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    ROOT_TYPE: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
     * Returns the node on which to bind delegate listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
     * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
     * Override of Widget's implementation of _getUIEventNode() to ensure that 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
     * all event listeners are bound to the Widget's topmost DOM element.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
     * This ensures that the firing of each type of Widget UI event (click,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
     * mousedown, etc.) is facilitated by a single, top-level, delegated DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
     * event listener.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
     * @method _getUIEventNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
     * @for Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    _getUIEventNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        var root = this.get("root"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
            returnVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        if (root) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
            returnVal = root.get("boundingBox");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        return returnVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
    * @method next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    * @description Returns the Widget's next sibling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    * @param {Boolean} circular Boolean indicating if the parent's first child 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    * should be returned if the child has no next sibling.  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    * @return {Widget} Widget instance. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    next: function (circular) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
        var parent = this.get("parent"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            sibling;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        if (parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            sibling = parent.item((this.get("index")+1));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        if (!sibling && circular) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
            sibling = parent.item(0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        return sibling;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
    * @method previous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    * @description Returns the Widget's previous sibling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    * @param {Boolean} circular Boolean indicating if the parent's last child 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    * should be returned if the child has no previous sibling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    * @return {Widget} Widget instance. 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    previous: function (circular) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        var parent = this.get("parent"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
            index = this.get("index"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            sibling;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        if (parent && index > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            sibling = parent.item([(index-1)]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        if (!sibling && circular) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            sibling = parent.item((parent.size() - 1));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        return sibling; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    //  Override of Y.WidgetParent.remove()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
    //  Sugar implementation allowing a child to remove itself from its parent.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    remove: function (index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        var parent,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            removed;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        if (Lang.isNumber(index)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            removed = Y.WidgetParent.prototype.remove.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            parent = this.get("parent");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            if (parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
                removed = parent.remove(this.get("index"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
                        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
        return removed;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
    * @method isRoot
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    * @description Determines if the Widget is the root Widget in the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    * object hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    * @return {Boolean} Boolean indicating if Widget is the root Widget in the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
    * object hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    isRoot: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
        return (this == this.get("root"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    * @method ancestor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    * @description Returns the Widget instance at the specified depth.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    * @param {number} depth Number representing the depth of the ancestor.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    * @return {Widget} Widget instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    ancestor: function (depth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        var root = this.get("root"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        if (this.get("depth") > depth)  {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
            parent = this.get("parent");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            while (parent != root && parent.get("depth") > depth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                parent = parent.get("parent");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
        return parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
     * Updates the UI to reflect the <code>selected</code> attribute value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
     * @method _uiSetChildSelected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
     * @param {number} selected The selected value to be reflected in the UI.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    _uiSetChildSelected: function (selected) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        var box = this.get("boundingBox"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            sClassName = this.getClassName("selected");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        if (selected === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
            box.removeClass(sClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            box.addClass(sClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
     * Default attribute change listener for the <code>selected</code> 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
     * attribute, responsible for updating the UI, in response to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
     * attribute changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
     * @method _afterChildSelectedChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
     * @param {EventFacade} event The event facade for the attribute change.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    _afterChildSelectedChange: function (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        this._uiSetChildSelected(event.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
     * Synchronizes the UI to match the WidgetChild state.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
     * This method is invoked after bindUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
     * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
     * </p>     
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     * @method _syncUIChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    _syncUIChild: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        this._uiSetChildSelected(this.get("selected"));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
     * Binds event listeners responsible for updating the UI state in response 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
     * to WidgetChild related state changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
     * This method is invoked after bindUI is invoked for the Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
     * using YUI's aop infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
     * @method _bindUIChild
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     */    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
    _bindUIChild: function () { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
        this.after("selectedChange", this._afterChildSelectedChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
Y.WidgetChild = Child;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
}, '3.10.3', {"requires": ["base-build", "widget"]});