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