src/cm/media/js/lib/yui/yui_3.10.3/build/widget-base/widget-base-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
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-base', 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
 * Provides the base Widget class, with HTML Parser support
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @main widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 * Provides the base Widget class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
 * @module widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
 * @submodule widget-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
var L = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    Node = Y.Node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    ClassNameManager = Y.ClassNameManager,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    _getClassName = ClassNameManager.getClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    _getWidgetClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    _toInitialCap = Y.cached(function(str) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        return str.substring(0, 1).toUpperCase() + str.substring(1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    }),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    // K-Weight, IE GC optimizations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    CONTENT = "content",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    VISIBLE = "visible",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    HIDDEN = "hidden",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    DISABLED = "disabled",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    FOCUSED = "focused",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    WIDTH = "width",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    HEIGHT = "height",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    BOUNDING_BOX = "boundingBox",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    CONTENT_BOX = "contentBox",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    PARENT_NODE = "parentNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    OWNER_DOCUMENT = "ownerDocument",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    AUTO = "auto",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    SRC_NODE = "srcNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    BODY = "body",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    TAB_INDEX = "tabIndex",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    ID = "id",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    RENDER = "render",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    RENDERED = "rendered",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    DESTROYED = "destroyed",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    STRINGS = "strings",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    DIV = "<div></div>",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    CHANGE = "Change",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    LOADING = "loading",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    _UISET = "_uiSet",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    EMPTY_STR = "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    EMPTY_FN = function() {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    TRUE = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    FALSE = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    UI,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    ATTRS = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    UI_ATTRS = [VISIBLE, DISABLED, HEIGHT, WIDTH, FOCUSED, TAB_INDEX],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    WEBKIT = Y.UA.webkit,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    // Widget nodeid-to-instance map.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    _instances = {};
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
 * A base class for widgets, providing:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
 * <ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
 *    <li>The render lifecycle method, in addition to the init and destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
 *        lifecycle methods provide by Base</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
 *    <li>Abstract methods to support consistent MVC structure across
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
 *        widgets: renderer, renderUI, bindUI, syncUI</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
 *    <li>Support for common widget attributes, such as boundingBox, contentBox, visible,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
 *        disabled, focused, strings</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
 * </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
 * @param config {Object} Object literal specifying widget configuration properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
 * @class Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
 * @extends Base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
function Widget(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
    Y.log('constructor called', 'life', 'widget');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    // kweight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    var widget = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        parentNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
        render,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        constructor = widget.constructor;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    widget._strs = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    widget._cssPrefix = constructor.CSS_PREFIX || _getClassName(constructor.NAME.toLowerCase());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    // We need a config for HTML_PARSER to work.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    config = config || {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    Widget.superclass.constructor.call(widget, config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    render = widget.get(RENDER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    if (render) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        // Render could be a node or boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        if (render !== TRUE) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            parentNode = render;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        widget.render(parentNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
}
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
 * Static property provides a string to identify the class.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
 * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
 * Currently used to apply class identifiers to the bounding box
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
 * and to classify events fired by the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
 * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
 * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
Widget.NAME = "widget";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
 * Constant used to identify state changes originating from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
 * the DOM (as opposed to the JavaScript model).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
 * @property UI_SRC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
 * @final
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
UI = Widget.UI_SRC = "ui";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
 * Static property used to define the default attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
 * configuration for the Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
 * @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
Widget.ATTRS = ATTRS;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
// Trying to optimize kweight by setting up attrs this way saves about 0.4K min'd
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
 * @attribute id
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
 * @writeOnce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
 * @default Generated using guid()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
ATTRS[ID] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    valueFn: "_guid",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    writeOnce: TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
 * Flag indicating whether or not this Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
 * has been through the render lifecycle phase.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
 * @attribute rendered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
 * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
 * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
 * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
ATTRS[RENDERED] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    value:FALSE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
    readOnly: TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
 * @attribute boundingBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
 * @description The outermost DOM node for the Widget, used for sizing and positioning
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
 * of a Widget as well as a containing element for any decorator elements used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
 * for skinning.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
 * @type String | Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 * @writeOnce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
ATTRS[BOUNDING_BOX] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    value:null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    setter: "_setBB",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    writeOnce: TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
 * @attribute contentBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
 * @description A DOM node that is a direct descendant of a Widget's bounding box that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
 * houses its content.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
 * @type String | Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
 * @writeOnce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
ATTRS[CONTENT_BOX] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
    valueFn:"_defaultCB",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    setter: "_setCB",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    writeOnce: TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
 * @attribute tabIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
 * @description Number (between -32767 to 32767) indicating the widget's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
 * position in the default tab flow.  The value is used to set the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
 * "tabIndex" attribute on the widget's bounding box.  Negative values allow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
 * the widget to receive DOM focus programmatically (by calling the focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
 * method), while being removed from the default tab flow.  A value of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
 * null removes the "tabIndex" attribute from the widget's bounding box.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
 * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
 * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
ATTRS[TAB_INDEX] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
    validator: "_validTabIndex"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
 * @attribute focused
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
 * @description Boolean indicating if the Widget, or one of its descendants,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
 * has focus.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
 * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
 * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
 * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
ATTRS[FOCUSED] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    value: FALSE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    readOnly:TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
 * @attribute disabled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
 * @description Boolean indicating if the Widget should be disabled. The disabled implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
 * is left to the specific classes extending widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
 * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
 * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
ATTRS[DISABLED] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
    value: FALSE
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
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
 * @attribute visible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
 * @description Boolean indicating whether or not the Widget is visible.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
 * @default TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
 * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
ATTRS[VISIBLE] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    value: TRUE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
 * @attribute height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
 * @description String with units, or number, representing the height of the Widget. If a number is provided,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
 * the default unit, defined by the Widgets DEF_UNIT, property is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
 * @default EMPTY_STR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
 * @type {String | Number}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
ATTRS[HEIGHT] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    value: EMPTY_STR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
 * @attribute width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
 * @description String with units, or number, representing the width of the Widget. If a number is provided,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
 * the default unit, defined by the Widgets DEF_UNIT, property is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
 * @default EMPTY_STR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
 * @type {String | Number}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
ATTRS[WIDTH] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
    value: EMPTY_STR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
 * @attribute strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
 * @description Collection of strings used to label elements of the Widget's UI.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
 * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
ATTRS[STRINGS] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    value: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    setter: "_strSetter",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    getter: "_strGetter"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
 * Whether or not to render the widget automatically after init, and optionally, to which parent node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
 * @attribute render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
 * @type boolean | Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
 * @writeOnce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
ATTRS[RENDER] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    value:FALSE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    writeOnce:TRUE
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
 * The css prefix which the static Widget.getClassName method should use when constructing class names
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
 * @property CSS_PREFIX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
 * @default Widget.NAME.toLowerCase()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
 * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
Widget.CSS_PREFIX = _getClassName(Widget.NAME.toLowerCase());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
 * Generate a standard prefixed classname for the Widget, prefixed by the default prefix defined
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
 * by the <code>Y.config.classNamePrefix</code> attribute used by <code>ClassNameManager</code> and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
 * <code>Widget.NAME.toLowerCase()</code> (e.g. "yui-widget-xxxxx-yyyyy", based on default values for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
 * the prefix and widget class name).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
 * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
 * The instance based version of this method can be used to generate standard prefixed classnames,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
 * based on the instances NAME, as opposed to Widget.NAME. This method should be used when you
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
 * need to use a constant class name across different types instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
 * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
 * @method getClassName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
 * @param {String*} args* 0..n strings which should be concatenated, using the default separator defined by ClassNameManager, to create the class name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
Widget.getClassName = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    // arguments needs to be array'fied to concat
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    return _getClassName.apply(ClassNameManager, [Widget.CSS_PREFIX].concat(Y.Array(arguments), true));
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
_getWidgetClassName = Widget.getClassName;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
 * Returns the widget instance whose bounding box contains, or is, the given node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
 * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
 * In the case of nested widgets, the nearest bounding box ancestor is used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
 * return the widget instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
 * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
 * @method getByNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
 * @param node {Node | String} The node for which to return a Widget instance. If a selector
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
 * string is passed in, which selects more than one node, the first node found is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
 * @return {Widget} Widget instance, or null if not found.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
Widget.getByNode = function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
    var widget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        widgetMarker = _getWidgetClassName();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
    node = Node.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    if (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        node = node.ancestor("." + widgetMarker, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        if (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
            widget = _instances[Y.stamp(node, true)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    return widget || null;
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
Y.extend(Widget, Y.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
     * Returns a class name prefixed with the the value of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
     * <code>YUI.config.classNamePrefix</code> attribute + the instances <code>NAME</code> property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
     * Uses <code>YUI.config.classNameDelimiter</code> attribute to delimit the provided strings.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
     * e.g.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
     * <code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     *    // returns "yui-slider-foo-bar", for a slider instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     *    var scn = slider.getClassName('foo','bar');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
     *    // returns "yui-overlay-foo-bar", for an overlay instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
     *    var ocn = overlay.getClassName('foo','bar');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
     * </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
     * </code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
     * @method getClassName
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
     * @param {String}+ One or more classname bits to be joined and prefixed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    getClassName: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        return _getClassName.apply(ClassNameManager, [this._cssPrefix].concat(Y.Array(arguments), true));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * Initializer lifecycle implementation for the Widget class. Registers the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     * widget instance, and runs through the Widget's HTML_PARSER definition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
     * @param  config {Object} Configuration object literal for the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    initializer: function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        Y.log('initializer called', 'life', 'widget');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
        var bb = this.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
        if (bb instanceof Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            this._mapInstance(Y.stamp(bb));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
         * Notification event, which widget implementations can fire, when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
         * they change the content of the widget. This event has no default
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
         * behavior and cannot be prevented, so the "on" or "after"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
         * moments are effectively equivalent (with on listeners being invoked before
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
         * after listeners).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
         * @event widget:contentUpdate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
         * @preventable false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
         * @param {EventFacade} e The Event Facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
        if (this._applyParser) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
            this._applyParser(config);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
     * Utility method used to add an entry to the boundingBox id to instance map.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
     * This method can be used to populate the instance with lazily created boundingBox Node references.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
     * @method _mapInstance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
     * @param {String} The boundingBox id
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
    _mapInstance : function(id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
        _instances[id] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
     * Destructor lifecycle implementation for the Widget class. Purges events attached
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
     * to the bounding box and content box, removes them from the DOM and removes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
     * the Widget from the list of registered widgets.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
     * @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
    destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        Y.log('destructor called', 'life', 'widget');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        var boundingBox = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
            bbGuid;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        if (boundingBox instanceof Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            bbGuid = Y.stamp(boundingBox,true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
            if (bbGuid in _instances) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
                delete _instances[bbGuid];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            this._destroyBox();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
     * Destroy lifecycle method. Fires the destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
     * event, prior to invoking destructors for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
     * class hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
     * Overrides Base's implementation, to support arguments to destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
     * Subscribers to the destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
     * event can invoke preventDefault on the event object, to prevent destruction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
     * from proceeding.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
     * @method destroy
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
     * @param destroyAllNodes {Boolean} If true, all nodes contained within the Widget are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
     * removed and destroyed. Defaults to false due to potentially high run-time cost.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
     * @return {Widget} A reference to this object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
    destroy: function(destroyAllNodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
        this._destroyAllNodes = destroyAllNodes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
        return Widget.superclass.destroy.apply(this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
     * Removes and destroys the widgets rendered boundingBox, contentBox,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
     * and detaches bound UI events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
     * @method _destroyBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
    _destroyBox : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
        var boundingBox = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
            contentBox = this.get(CONTENT_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            deep = this._destroyAllNodes,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
            same;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
        same = boundingBox && boundingBox.compareTo(contentBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
        if (this.UI_EVENTS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
            this._destroyUIEvents();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
        this._unbindUI(boundingBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        if (contentBox) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
            if (deep) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
                contentBox.empty();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            contentBox.remove(TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        if (!same) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
            if (deep) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                boundingBox.empty();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
            boundingBox.remove(TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
     * Establishes the initial DOM for the widget. Invoking this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
     * method will lead to the creating of all DOM elements for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
     * the widget (or the manipulation of existing DOM elements
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
     * for the progressive enhancement use case).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
     * This method should only be invoked once for an initialized
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
     * widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
     * It delegates to the widget specific renderer method to do
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
     * the actual work.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
     * @method render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
     * @final
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
     * @param  parentNode {Object | String} Optional. The Node under which the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
     * Widget is to be rendered. This can be a Node instance or a CSS selector string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
     * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
     * If the selector string returns more than one Node, the first node will be used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
     * as the parentNode. NOTE: This argument is required if both the boundingBox and contentBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
     * are not currently in the document. If it's not provided, the Widget will be rendered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
     * to the body of the current document in this case.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
     * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    render: function(parentNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
        if (this.get(DESTROYED)) { Y.log("Render failed; widget has been destroyed", "error", "widget"); }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
        if (!this.get(DESTROYED) && !this.get(RENDERED)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
             /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
              * Lifecycle event for the render phase, fired prior to rendering the UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
              * for the widget (prior to invoking the widget's renderer method).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
              * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
              * Subscribers to the "on" moment of this event, will be notified
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
              * before the widget is rendered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
              * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
              * <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
              * Subscribers to the "after" moment of this event, will be notified
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
              * after rendering is complete.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
              * </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
              *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
              * @event render
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
              * @preventable _defRenderFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
              * @param {EventFacade} e The Event Facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
              */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            this.publish(RENDER, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                queuable:FALSE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                fireOnce:TRUE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                defaultTargetOnly:TRUE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                defaultFn: this._defRenderFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            this.fire(RENDER, {parentNode: (parentNode) ? Node.one(parentNode) : null});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
     * Default render handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
     * @method _defRenderFn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
     * @param {EventFacade} e The Event object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
     * @param {Node} parentNode The parent node to render to, if passed in to the <code>render</code> method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
    _defRenderFn : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
        this._parentNode = e.parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        this.renderer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        this._set(RENDERED, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        this._removeLoadingClassNames();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
     * Creates DOM (or manipulates DOM for progressive enhancement)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
     * This method is invoked by render() and is not chained
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
     * automatically for the class hierarchy (unlike initializer, destructor)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
     * so it should be chained manually for subclasses if required.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
     * @method renderer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
    renderer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        // kweight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
        var widget = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
        widget._renderUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        widget.renderUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        widget._bindUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        widget.bindUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
        widget._syncUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        widget.syncUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
     * Configures/Sets up listeners to bind Widget State to UI/DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
     * This method is not called by framework and is not chained
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
     * automatically for the class hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
     * @method bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
    bindUI: EMPTY_FN,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
     * Adds nodes to the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
     * This method is not called by framework and is not chained
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
     * automatically for the class hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
     * @method renderUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    renderUI: EMPTY_FN,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
     * Refreshes the rendered UI, based on Widget State
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
     * This method is not called by framework and is not chained
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
     * automatically for the class hierarchy.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
     * @method syncUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
    syncUI: EMPTY_FN,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
     * @method hide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
     * @description Hides the Widget by setting the "visible" attribute to "false".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
    hide: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        return this.set(VISIBLE, FALSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
     * @method show
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
     * @description Shows the Widget by setting the "visible" attribute to "true".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    show: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
        return this.set(VISIBLE, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
     * @method focus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
     * @description Causes the Widget to receive the focus by setting the "focused"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
     * attribute to "true".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
    focus: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
        return this._set(FOCUSED, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
     * @method blur
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
     * @description Causes the Widget to lose focus by setting the "focused" attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
     * to "false"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
    blur: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        return this._set(FOCUSED, FALSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
     * @method enable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
     * @description Set the Widget's "disabled" attribute to "false".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
    enable: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
        return this.set(DISABLED, FALSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
     * @method disable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
     * @description Set the Widget's "disabled" attribute to "true".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
    disable: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
        return this.set(DISABLED, TRUE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
     * @method _uiSizeCB
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
     * @param {boolean} expand
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
    _uiSizeCB : function(expand) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
        this.get(CONTENT_BOX).toggleClass(_getWidgetClassName(CONTENT, "expanded"), expand);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
     * Helper method to collect the boundingBox and contentBox and append to the provided parentNode, if not
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
     * already a child. The owner document of the boundingBox, or the owner document of the contentBox will be used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
     * as the document into which the Widget is rendered if a parentNode is node is not provided. If both the boundingBox and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
     * the contentBox are not currently in the document, and no parentNode is provided, the widget will be rendered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
     * to the current document's body.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
     * @method _renderBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
     * @param {Node} parentNode The parentNode to render the widget to. If not provided, and both the boundingBox and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
     * the contentBox are not currently in the document, the widget will be rendered to the current document's body.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
    _renderBox: function(parentNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
        // TODO: Performance Optimization [ More effective algo to reduce Node refs, compares, replaces? ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        var widget = this, // kweight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
            contentBox = widget.get(CONTENT_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
            boundingBox = widget.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
            srcNode = widget.get(SRC_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
            defParentNode = widget.DEF_PARENT_NODE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
            doc = (srcNode && srcNode.get(OWNER_DOCUMENT)) || boundingBox.get(OWNER_DOCUMENT) || contentBox.get(OWNER_DOCUMENT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        // If srcNode (assume it's always in doc), have contentBox take its place (widget render responsible for re-use of srcNode contents)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        if (srcNode && !srcNode.compareTo(contentBox) && !contentBox.inDoc(doc)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
            srcNode.replace(contentBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
        if (!boundingBox.compareTo(contentBox.get(PARENT_NODE)) && !boundingBox.compareTo(contentBox)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
            // If contentBox box is already in the document, have boundingBox box take it's place
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
            if (contentBox.inDoc(doc)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
                contentBox.replace(boundingBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
            boundingBox.appendChild(contentBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        parentNode = parentNode || (defParentNode && Node.one(defParentNode));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
        if (parentNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
            parentNode.appendChild(boundingBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
        } else if (!boundingBox.inDoc(doc)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
            Node.one(BODY).insert(boundingBox, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
     * Setter for the boundingBox attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
     * @method _setBB
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
     * @param Node/String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
     * @return Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
    _setBB: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
        return this._setBox(this.get(ID), node, this.BOUNDING_TEMPLATE, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
     * Setter for the contentBox attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
     * @method _setCB
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
     * @param {Node|String} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
     * @return Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
    _setCB: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
        return (this.CONTENT_TEMPLATE === null) ? this.get(BOUNDING_BOX) : this._setBox(null, node, this.CONTENT_TEMPLATE, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
     * Returns the default value for the contentBox attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
     * For the Widget class, this will be the srcNode if provided, otherwise null (resulting in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
     * a new contentBox node instance being created)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
     * @method _defaultCB
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
    _defaultCB : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
        return this.get(SRC_NODE) || null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
     * Helper method to set the bounding/content box, or create it from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
     * the provided template if not found.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
     * @method _setBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
     * @param {String} id The node's id attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
     * @param {Node|String} node The node reference
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
     * @param {String} template HTML string template for the node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
     * @param {boolean} true if this is the boundingBox, false if it's the contentBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
     * @return {Node} The node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
    _setBox : function(id, node, template, isBounding) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
        node = Node.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
        if (!node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
            node = Node.create(template);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
            if (isBounding) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
                this._bbFromTemplate = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
                this._cbFromTemplate = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        if (!node.get(ID)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
            node.set(ID, id || Y.guid());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
        return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
     * Initializes the UI state for the Widget's bounding/content boxes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
     * @method _renderUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
    _renderUI: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
        this._renderBoxClassNames();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
        this._renderBox(this._parentNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
     * Applies standard class names to the boundingBox and contentBox
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
     * @method _renderBoxClassNames
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
    _renderBoxClassNames : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
        var classes = this._getClasses(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
            cl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
            boundingBox = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
            i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
        boundingBox.addClass(_getWidgetClassName());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
        // Start from Widget Sub Class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
        for (i = classes.length-3; i >= 0; i--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
            cl = classes[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
            boundingBox.addClass(cl.CSS_PREFIX || _getClassName(cl.NAME.toLowerCase()));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
        // Use instance based name for content box
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
        this.get(CONTENT_BOX).addClass(this.getClassName(CONTENT));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
     * Removes class names representative of the widget's loading state from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
     * the boundingBox.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
     * @method _removeLoadingClassNames
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
    _removeLoadingClassNames: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
        var boundingBox = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
            contentBox = this.get(CONTENT_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
            instClass = this.getClassName(LOADING),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
            widgetClass = _getWidgetClassName(LOADING);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
        boundingBox.removeClass(widgetClass)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
                   .removeClass(instClass);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
        contentBox.removeClass(widgetClass)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                  .removeClass(instClass);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
     * Sets up DOM and CustomEvent listeners for the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
     * @method _bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
    _bindUI: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
        this._bindAttrUI(this._UI_ATTRS.BIND);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
        this._bindDOM();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
     * @method _unbindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
    _unbindUI : function(boundingBox) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
        this._unbindDOM(boundingBox);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
     * Sets up DOM listeners, on elements rendered by the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
     * @method _bindDOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
    _bindDOM : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
        var oDocument = this.get(BOUNDING_BOX).get(OWNER_DOCUMENT),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
            focusHandle = Widget._hDocFocus;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
        // Shared listener across all Widgets.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
        if (!focusHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
            focusHandle = Widget._hDocFocus = oDocument.on("focus", this._onDocFocus, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            focusHandle.listeners = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
                count: 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
        focusHandle.listeners[Y.stamp(this, true)] = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
        focusHandle.listeners.count++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
        //	Fix for Webkit:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
        //	Document doesn't receive focus in Webkit when the user mouses
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
        //	down on it, so the "focused" attribute won't get set to the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
        //	correct value. Keeping this instance based for now, potential better performance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
        //  Otherwise we'll end up looking up widgets from the DOM on every mousedown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
        if (WEBKIT){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
            this._hDocMouseDown = oDocument.on("mousedown", this._onDocMouseDown, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
     * @method _unbindDOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
    _unbindDOM : function(boundingBox) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
        var focusHandle = Widget._hDocFocus,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
            yuid = Y.stamp(this, true),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
            focusListeners,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
            mouseHandle = this._hDocMouseDown;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
        if (focusHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
            focusListeners = focusHandle.listeners;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
            if (focusListeners[yuid]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
                delete focusListeners[yuid];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
                focusListeners.count--;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
            if (focusListeners.count === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
                focusHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
                Widget._hDocFocus = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
        if (WEBKIT && mouseHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
            mouseHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
     * Updates the widget UI to reflect the attribute state.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
     * @method _syncUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
    _syncUI: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
        this._syncAttrUI(this._UI_ATTRS.SYNC);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
     * Sets the height on the widget's bounding box element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
     * @method _uiSetHeight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
     * @param {String | Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
    _uiSetHeight: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
        this._uiSetDim(HEIGHT, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
        this._uiSizeCB((val !== EMPTY_STR && val !== AUTO));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
     * Sets the width on the widget's bounding box element
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
     * @method _uiSetWidth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
     * @param {String | Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
    _uiSetWidth: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
        this._uiSetDim(WIDTH, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
     * @method _uiSetDim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
     * @param {String} dim The dimension - "width" or "height"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
     * @param {Number | String} val The value to set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
    _uiSetDim: function(dimension, val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
        this.get(BOUNDING_BOX).setStyle(dimension, L.isNumber(val) ? val + this.DEF_UNIT : val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
     * Sets the visible state for the UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
     * @method _uiSetVisible
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
     * @param {boolean} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
    _uiSetVisible: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
        this.get(BOUNDING_BOX).toggleClass(this.getClassName(HIDDEN), !val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
     * Sets the disabled state for the UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
     * @method _uiSetDisabled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
     * @param {boolean} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
    _uiSetDisabled: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
        this.get(BOUNDING_BOX).toggleClass(this.getClassName(DISABLED), val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
     * Sets the focused state for the UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
     * @method _uiSetFocused
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
     * @param {boolean} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
     * @param {string} src String representing the source that triggered an update to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
     * the UI.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
    _uiSetFocused: function(val, src) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
         var boundingBox = this.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
         boundingBox.toggleClass(this.getClassName(FOCUSED), val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
         if (src !== UI) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            if (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
                boundingBox.focus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
                boundingBox.blur();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
         }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
     * Set the tabIndex on the widget's rendered UI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
     * @method _uiSetTabIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
     * @param Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
    _uiSetTabIndex: function(index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
        var boundingBox = this.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
        if (L.isNumber(index)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
            boundingBox.set(TAB_INDEX, index);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
            boundingBox.removeAttribute(TAB_INDEX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
     * @method _onDocMouseDown
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
     * @description "mousedown" event handler for the owner document of the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
     * widget's bounding box.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
     * @param {EventFacade} evt The event facade for the DOM focus event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
    _onDocMouseDown: function (evt) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
        if (this._domFocus) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
            this._onDocFocus(evt);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
     * DOM focus event handler, used to sync the state of the Widget with the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
     * @method _onDocFocus
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
     * @param {EventFacade} evt The event facade for the DOM focus event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
    _onDocFocus: function (evt) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
        var widget = Widget.getByNode(evt.target),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
            activeWidget = Widget._active;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
        if (activeWidget && (activeWidget !== widget)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
            activeWidget._domFocus = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
            activeWidget._set(FOCUSED, false, {src:UI});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
            Widget._active = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
        if (widget) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
            widget._domFocus = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
            widget._set(FOCUSED, true, {src:UI});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
            Widget._active = widget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
     * Generic toString implementation for all widgets.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
     * @method toString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
     * @return {String} The default string value for the widget [ displays the NAME of the instance, and the unique id ]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
    toString: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
        // Using deprecated name prop for kweight squeeze.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
        return this.name + "[" + this.get(ID) + "]";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
     * Default unit to use for dimension values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
     * @property DEF_UNIT
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
    DEF_UNIT : "px",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
     * Default node to render the bounding box to. If not set,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
     * will default to the current document body.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
     * @property DEF_PARENT_NODE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
     * @type String | Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
    DEF_PARENT_NODE : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
     * Property defining the markup template for content box. If your Widget doesn't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
     * need the dual boundingBox/contentBox structure, set CONTENT_TEMPLATE to null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
     * and contentBox and boundingBox will both point to the same Node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
     * @property CONTENT_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
    CONTENT_TEMPLATE : DIV,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
     * Property defining the markup template for bounding box.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
     * @property BOUNDING_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
    BOUNDING_TEMPLATE : DIV,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
     * @method _guid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
    _guid : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
        return Y.guid();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
     * @method _validTabIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
     * @param {Number} tabIndex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
    _validTabIndex : function (tabIndex) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
        return (L.isNumber(tabIndex) || L.isNull(tabIndex));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
     * Binds after listeners for the list of attributes provided
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
     * @method _bindAttrUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
     * @param {Array} attrs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
    _bindAttrUI : function(attrs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
        var i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
            l = attrs.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
        for (i = 0; i < l; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
            this.after(attrs[i] + CHANGE, this._setAttrUI);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
     * Invokes the _uiSet&#61;ATTR NAME&#62; method for the list of attributes provided
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
     * @method _syncAttrUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
     * @param {Array} attrs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
    _syncAttrUI : function(attrs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
        var i, l = attrs.length, attr;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
        for (i = 0; i < l; i++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
            attr = attrs[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
            this[_UISET + _toInitialCap(attr)](this.get(attr));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
     * @method _setAttrUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
     * @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
    _setAttrUI : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
        if (e.target === this) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
            this[_UISET + _toInitialCap(e.attrName)](e.newVal, e.src);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
     * The default setter for the strings attribute. Merges partial sets
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
     * into the full string set, to allow users to partial sets of strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
     * @method _strSetter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
     * @param {Object} strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
     * @return {String} The full set of strings to set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
    _strSetter : function(strings) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
        return Y.merge(this.get(STRINGS), strings);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
     * Helper method to get a specific string value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
     * @deprecated Used by deprecated WidgetLocale implementations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
     * @method getString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
     * @param {String} key
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
     * @return {String} The string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
    getString : function(key) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
        return this.get(STRINGS)[key];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
     * Helper method to get the complete set of strings for the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
     * @deprecated  Used by deprecated WidgetLocale implementations.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
     * @method getStrings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
     * @param {String} key
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
     * @return {String} The strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
    getStrings : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
        return this.get(STRINGS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
     * The lists of UI attributes to bind and sync for widget's _bindUI and _syncUI implementations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
     * @property _UI_ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
    _UI_ATTRS : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        BIND: UI_ATTRS,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
        SYNC: UI_ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
Y.Widget = Widget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
}, '3.10.3', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
    "requires": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
        "attribute",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
        "base-base",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
        "base-pluginhost",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
        "classnamemanager",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
        "event-focus",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
        "node-base",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
        "node-style"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
    ],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
    "skinnable": true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
});