src/cm/media/js/lib/yui/yui_3.0.0b1/examples/widget/widget-tooltip.html
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
<html>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
<head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
	<title>YUI Library Examples: Widget: Creating a simple Tooltip widget</title>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
<style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
    /*Supplemental CSS for the YUI distribution*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    #custom-doc { width: 95%; min-width: 950px; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
<style type="text/css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    .yui-tooltip {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
        position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    .yui-tooltip-content {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        color: #000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        padding: 2px 5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
        border-color: #D4C237 #A6982B #A6982B #A6982B;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
        border-width: 1px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
        border-style: solid;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
        background-color: #FFEE69;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
    .yui-tooltip-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
        visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    div.yui-hastooltip {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        border:1px solid #243356;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        background-color:#406ED9;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        color:#ffffff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
        width:25em;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        margin:20px 0px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
        cursor:default;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
    div.yui-hastooltip span {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        font-style:italic;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
        font-weight:bold;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
        color:#ABCEFF;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
    .yui-tooltip-content strong {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        font-weight:bold;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
</head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
<body id="yahoo-com" class=" yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
<div id="custom-doc" class="yui-t2">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
<div id="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
	<div id="ygunav">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
		<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
            <em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
            </em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
		</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
		<form action="http://search.yahoo.com/search" id="sitesearchform">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
            <input name="vs" type="hidden" value="developer.yahoo.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
            <input name="vs" type="hidden" value="yuiblog.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
		    <div id="sitesearch">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
			    <input type="text" id="searchinput" name="p">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
		    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
		</form>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
	<div id="pagetitle"><h1>YUI Library Examples: Widget: Creating a simple Tooltip widget</h1></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
<div id="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
	<div id="bar-note"><p><strong>Note:</strong> This is YUI 3.x. Looking for <a href="http://developer.yahoo.com/yui/">YUI 2.x</a>?</p></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
	<div id="yui-main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
		<div class="yui-b">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
		  <div class="yui-ge">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
			  <div class="yui-u first example" id="main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
	<h2>Widget: Creating a simple Tooltip widget</h2>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
	<div id="example" class="promo">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
	<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
	This is an advanced example, in which we create a Tooltip widget, by extending the base <code>Widget</code> class, and adding <code>WidgetStack</code> and <code>WidgetPosition</code> extensions, through <code>Base.build</code>.	</p>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
	<div class="module example-container ">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
			<div class="hd exampleHd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
			<p class="newWindowButton yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
                <a href="widget-tooltip_clean.html" target="_blank">View example in new window.</a>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
		</div>		<div id="example-canvas" class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
	<div id="delegate">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
    <div class="yui-hastooltip" title="Tooltip 1" id="tt1">Tooltip One <span>(content from title)</span></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
    <div class="yui-hastooltip" title="Tooltip 2" id="tt2">Tooltip Two <span>(content set in event listener)</span></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
    <div class="yui-hastooltip" title="Tooltip 3" id="tt3">Tooltip Three <span>(content from lookup)</span></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
    <div class="yui-hastooltip" title="Tooltip 4" id="tt4">Tooltip Four <span>(content from title)</span><label></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
    <input type="checkbox" id="prevent" /> Prevent Tooltip Four</label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
<script type="text/javascript">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
YUI({base:"../../build/", timeout: 10000}).use("widget", "widget-position", "widget-stack", function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
    var Lang = Y.Lang,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
        Node = Y.Node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
    /* Tooltip constructor */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
    function Tooltip(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
        Tooltip.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
    /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
       Required NAME static field, used to identify the Widget class and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
       used as an event prefix, to generate class names etc. (set to the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
       class name in camel case). 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
    Tooltip.NAME = "tooltip";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
    /* Static constants */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
    Tooltip.OFFSET_X = 15;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
    Tooltip.OFFSET_Y = 15;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
    Tooltip.OFFSCREEN_X = -10000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
    Tooltip.OFFSCREEN_Y = -10000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
    /* Default Tooltip Attributes */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
    Tooltip.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
        /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
         * The tooltip content. This can either be a fixed content value, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
         * or a map of id-to-values, designed to be used when a single
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
         * tooltip is mapped to multiple trigger elements.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
        content : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
            value: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
        /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
         * The set of nodes to bind to the tooltip instance. Can be a string, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
         * or a node instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
        triggerNodes : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
            value: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
            setter: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
                if (val && Lang.isString(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
                    val = Node.all(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
                return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
         * The delegate node to which event listeners should be attached.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
         * This node should be an ancestor of all trigger nodes bound
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
         * to the instance. By default the document is used.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
        delegate : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
            value: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
            setter: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
                return Node.get(val) || Node.get("document");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
         * The time to wait, after the mouse enters the trigger node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
         * to display the tooltip
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        showDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
            value:250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
         * The time to wait, after the mouse leaves the trigger node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
         * to hide the tooltip
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
        hideDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
            value:10
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
         * The time to wait, after the tooltip is first displayed for 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
         * a trigger node, to hide it, if the mouse has not left the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
         * trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        autoHideDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
            value:2000
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
         * Override the default visibility set by the widget base class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        visible : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
            value:false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
         * Override the default XY value set by the widget base class,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
         * to position the tooltip offscreen
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
        xy: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
            value:[Tooltip.OFFSCREEN_X, Tooltip.OFFSCREEN_Y]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
    /* Extend the base Widget class */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
    Y.extend(Tooltip, Y.Widget, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
         * Initialization Code: Sets up privately used state
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
         * properties, and publishes the events Tooltip introduces
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
        initializer : function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
            this._triggerClassName = this.getClassName("trigger");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
            // Currently bound trigger node information
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            this._currTrigger = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
                node: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
                title: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
                mouseX: Tooltip.OFFSCREEN_X,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
                mouseY: Tooltip.OFFSCREEN_Y
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
            // Event handles - mouse over is set on the delegate
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
            // element, mousemove and mouseout are set on the trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
            this._eventHandles = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
                delegate: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
                trigger: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
                    mouseMove : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
                    mouseOut: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
            // Show/hide timers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
            this._timers = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
                show: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
                hide: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
            // Publish events introduced by Tooltip. Note the triggerEnter event is preventable,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
            // with the default behavior defined in the _defTriggerEnterFn method 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
            this.publish("triggerEnter", {defaultFn: this._defTriggerEnterFn, preventable:true});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
            this.publish("triggerLeave", {preventable:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
         * Destruction Code: Clears event handles, timers,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
         * and current trigger information
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
        destructor : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
            this._clearCurrentTrigger();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
            this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
            this._clearHandles();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
         * bindUI is used to bind attribute change and dom event
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
         * listeners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
        bindUI : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
            this.after("delegateChange", this._afterSetDelegate);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
            this.after("nodesChange", this._afterSetNodes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
            this._bindDelegate();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
         * syncUI is used to update the rendered DOM, based on the current
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
         * Tooltip state
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
        syncUI : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
            this._uiSetNodes(this.get("triggerNodes"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
         * Public method, which can be used by triggerEvent event listeners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
         * to set the content of the tooltip for the current trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
        setTriggerContent : function(content) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
            var contentBox = this.get("contentBox");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
            contentBox.set("innerHTML", "");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
            if (content) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
                if (content instanceof Node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
                    for (var i = 0, l = content.size(); i < l; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
                        contentBox.appendChild(content.item(i));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
                } else if (Lang.isString(content)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
                    contentBox.set("innerHTML", content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
         * Gets the closest ancestor of the given node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
         * which is a tooltip trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        getParentTrigger : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
            var cn = this._triggerClassName;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            return (node.hasClass(cn)) ? node : node.ancestor(function(node) {node.hasClass(cn)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
         * Default attribute change listener for 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
         * the triggerNodes attribute
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
        _afterSetNodes : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
            this._uiSetNodes(e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
         * Default attribute change listener for 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
         * the delegate attribute
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
        _afterSetDelegate : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            this._bindDelegate(e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
         * Updates the rendered DOM to reflect the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
         * set of trigger nodes passed in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
        _uiSetNodes : function(nodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
            if (this._triggerNodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
                this._triggerNodes.removeClass(this._triggerClassName);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
            if (nodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
                this._triggerNodes = nodes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
                this._triggerNodes.addClass(this._triggerClassName);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
         * Attaches the default mouseover DOM listener to the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
         * current delegate node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
        _bindDelegate : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
            var eventHandles = this._eventHandles;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
            if (eventHandles.delegate) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
                eventHandles.delegate.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
                eventHandles.delegate = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
            eventHandles.delegate = Y.on("mouseover", Y.bind(this._onDelegateMouseOver, this), this.get("delegate"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
         * Default mouse over DOM event listener.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
         * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
         * Delegates to the _enterTrigger method,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
         * if the mouseover enters a trigger node.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
        _onDelegateMouseOver : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
            var node = this.getParentTrigger(e.target);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
            if (node && (!this._currTrigger.node || !node.compareTo(this._currTrigger.node))) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
                this._enterTrigger(node, e.pageX, e.pageY);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
         * Default mouse out DOM event listener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
         * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
         * Delegates to _leaveTrigger if the mouseout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
         * leaves the current trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
        _onNodeMouseOut : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
            var to = e.relatedTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
            var trigger = e.currentTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
            if (!trigger.contains(to)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
                this._leaveTrigger(trigger);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
         * Default mouse move DOM event listener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
        _onNodeMouseMove : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
            this._overTrigger(e.pageX, e.pageY);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
         * Default handler invoked when the mouse enters
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
         * a trigger node. Fires the triggerEnter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
         * event which can be prevented by listeners to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
         * show the tooltip from being displayed.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
        _enterTrigger : function(node, x, y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
            this._setCurrentTrigger(node, x, y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
            this.fire("triggerEnter", {node:node, pageX:x, pageY:y});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
         * Default handler for the triggerEvent event,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
         * which will setup the timer to display the tooltip,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
         * if the default handler has not been prevented.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
        _defTriggerEnterFn : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
            var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
            if (!this.get("disabled")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
                this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
                var delay = (this.get("visible")) ? 0 : this.get("showDelay");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
                this._timers.show = Y.later(delay, this, this._showTooltip, [node]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
         * Default handler invoked when the mouse leaves
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
         * the current trigger node. Fires the triggerLeave
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
         * event and sets up the hide timer
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
        _leaveTrigger : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            this.fire("triggerLeave");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
            this._clearCurrentTrigger();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
            this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
            this._timers.hide = Y.later(this.get("hideDelay"), this, this._hideTooltip);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
         * Default handler invoked for mousemove events
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
         * on the trigger node. Stores the current mouse 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
         * x, y positions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
        _overTrigger : function(x, y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
            this._currTrigger.mouseX = x;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
            this._currTrigger.mouseY = y;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
         * Shows the tooltip, after moving it to the current mouse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
         * position.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
        _showTooltip : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
            var x = this._currTrigger.mouseX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
            var y = this._currTrigger.mouseY;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
            this.move(x + Tooltip.OFFSET_X, y + Tooltip.OFFSET_Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
            this.show();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
            this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
            this._timers.hide = Y.later(this.get("autoHideDelay"), this, this._hideTooltip);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
         * Hides the tooltip, after clearing existing timers.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
        _hideTooltip : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
            this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
            this.hide();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
         * Set the rendered content of the tooltip for the current
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
         * trigger, based on (in order of precedence):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
         * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
         * a). The string/node content attribute value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
         * b). From the content lookup map if it is set, or 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
         * c). From the title attribute if set.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
        _setTriggerContent : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
            var content = this.get("content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
            if (content && !(content instanceof Node || Lang.isString(content))) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
                content = content[node.get("id")] || node.getAttribute("title");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
            this.setTriggerContent(content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
         * Set the currently bound trigger node information, clearing 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
         * out the title attribute if set and setting up mousemove/out 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
         * listeners.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
        _setCurrentTrigger : function(node, x, y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
            var currTrigger = this._currTrigger,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
                triggerHandles = this._eventHandles.trigger;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
            this._setTriggerContent(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
            triggerHandles.mouseMove = Y.on("mousemove", Y.bind(this._onNodeMouseMove, this), node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
            triggerHandles.mouseOut = Y.on("mouseout", Y.bind(this._onNodeMouseOut, this), node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
            var title = node.getAttribute("title");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
            node.setAttribute("title", "");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
            currTrigger.mouseX = x;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
            currTrigger.mouseY = y;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
            currTrigger.node = node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
            currTrigger.title = title;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
         * Clear out the current trigger state, restoring
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
         * the title attribute on the trigger node, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
         * if it was originally set.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
        _clearCurrentTrigger : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
            var currTrigger = this._currTrigger,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
                triggerHandles = this._eventHandles.trigger;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
            if (currTrigger.node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
                var node = currTrigger.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
                var title = currTrigger.title || "";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
                currTrigger.node = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
                currTrigger.title = "";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
                triggerHandles.mouseMove.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
                triggerHandles.mouseOut.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
                triggerHandles.mouseMove = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
                triggerHandles.mouseOut = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
                node.setAttribute("title", title);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
         * Cancel any existing show/hide timers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
        _clearTimers : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
            var timers = this._timers;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
            if (timers.hide) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
                timers.hide.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
                timers.hide = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
            if (timers.show) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
              timers.show.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
              timers.show = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
         * Detach any stored event handles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
        _clearHandles : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
            var eventHandles = this._eventHandles;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
            if (eventHandles.delegate) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
                this._eventHandles.delegate.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
            if (eventHandles.trigger.mouseOut) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
                eventHandles.trigger.mouseOut.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
            if (eventHandles.trigger.mouseMove) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
                eventHandles.trigger.mouseMove.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
    // dynamic:false = Modify the existing Tooltip class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
    Tooltip = Y.Base.build(Tooltip.NAME, Tooltip, [Y.WidgetPosition, Y.WidgetStack], {dynamic:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
    var tt = new Tooltip({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
        triggerNodes:".yui-hastooltip",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
        delegate: "#delegate",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
        content: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
            tt3: "Tooltip 3 (from lookup)"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
        shim:false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
        zIndex:2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
    tt.render();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
    tt.on("triggerEnter", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
        var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
        if (node && node.get("id") == "tt2") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
            this.setTriggerContent("Tooltip 2 (from triggerEvent)");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
    var prevent = Y.Node.get("#prevent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
    tt.on("triggerEnter", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
        var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
        if (prevent.get("checked")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
            if (node && node.get("id") == "tt4") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
                e.preventDefault();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
	</div>			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
	<h3>Creating A Tooltip Widget Class</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
<h4>Basic Class Structure</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
<p>As with the basic <a href="widget-extend.html">"Extending Widget"</a> example, the <code>Tooltip</code> class will extend the <code>Widget</code> base class and follows the same pattern we use for other classes which extend Base.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
<p>Namely:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
    <li>Set up the constructor to invoke the superclass constructor</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
    <li>Define a <code>NAME</code> property, to identify the class</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
    <li>Define the default attribute configuration, using the <code>ATTRS</code> property</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
    <li>Implement prototype methods</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
<p>This basic structure is shown below:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
    /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
     *  Required NAME static field, used to identify the Widget class and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
     *  used as an event prefix, to generate class names etc. (set to the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
     *  class name in camel case). 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
    Tooltip.NAME = "tooltip";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
    /* Default Tooltip Attributes */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
    Tooltip.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
        /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
         * The tooltip content. This can either be a fixed content value, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
         * or a map of id-to-values, designed to be used when a single
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
         * tooltip is mapped to multiple trigger elements.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
        content : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
            value: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
        /* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
         * The set of nodes to bind to the tooltip instance. Can be a string, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
         * or a node instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
        triggerNodes : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
            value: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
            setter: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
                if (val && Lang.isString(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
                    val = Node.all(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
                return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
         * The delegate node to which event listeners should be attached.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
         * This node should be an ancestor of all trigger nodes bound
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
         * to the instance. By default the document is used.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
        delegate : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
            value: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
            setter: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
                return Node.get(val) || Node.get("document");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
         * The time to wait, after the mouse enters the trigger node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
         * to display the tooltip
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
        showDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
            value:250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
         * The time to wait, after the mouse leaves the trigger node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
         * to hide the tooltip
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
        hideDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
            value:10
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
         * The time to wait, after the tooltip is first displayed for 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
         * a trigger node, to hide it, if the mouse has not left the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
         * trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
        autoHideDelay : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
            value:2000
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
         * Override the default visibility set by the widget base class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
        visible : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
            value:false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
         * Override the default XY value set by the widget base class,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
         * to position the tooltip offscreen
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
        xy: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
            value:[Tooltip.OFFSCREEN_X, Tooltip.OFFSCREEN_Y]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
    Y.extend(Tooltip, Y.Widget, { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
        // Prototype methods/properties
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
<h4>Adding WidgetPosition and WidgetStack Extension Support</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
<p>The Tooltip class also needs basic positioning and stacking (z-index, shimming) support. As with the <a href="widget-build.html">Custom Widget Classes</a> example, we use
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
<code>Base.build</code> to add this support to the <code>Tooltip</code> class. However in this case, we want to modify the Tooltip class, as opposed to extending it 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
to create a completely new class, hence we set the <code>dynamic</code> configuration property to <code>false</code>:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
    // dynamic:false = Modify the existing Tooltip class
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
    Tooltip = Y.Base.build("tooltip", Tooltip, [Y.WidgetPosition, Y.WidgetStack], {dynamic:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
<h4>Lifecycle Methods: initializer, destructor</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
<p>The <code>initializer</code> method is invoked during the <code>init</code> lifecycle phase, after the attributes are configured for each class. <code>Tooltip</code> uses it 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
to setup the private state variables it will use to store the trigger node currently being serviced by the tooltip instance, event handles and show/hide timers.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
    initializer : function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
        this._triggerClassName = this.getClassName("trigger");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
        // Currently bound trigger node information
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
        this._currTrigger = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
            node: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
            title: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
            mouseX: Tooltip.OFFSCREEN_X,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
            mouseY: Tooltip.OFFSCREEN_Y
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
        // Event handles - mouse over is set on the delegate
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
        // element, mousemove and mouseout are set on the trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
        this._eventHandles = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
            delegate: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
            trigger: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
                mouseMove : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
                mouseOut: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
        // Show/hide timers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
        this._timers = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
            show: null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
            hide: null
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
        // Publish events introduced by Tooltip. Note the triggerEnter event is preventable,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
        // with the default behavior defined in the _defTriggerEnterFn method 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
        this.publish("triggerEnter", {defaultFn: this._defTriggerEnterFn, preventable:true});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
        this.publish("triggerLeave", {preventable:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
<p>The <code>destructor</code> is used to clear out stored state, detach any event handles and clear out the show/hide timers:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
    destructor : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
        this._clearCurrentTrigger();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
        this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
        this._clearHandles();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
<h4>Lifecycle Methods: bindUI, syncUI</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
<p>The <code>bindUI</code> and <code>syncUI</code> are invoked by the base Widget class' <code>renderer</code> method.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
<p><code>bindUI</code> is used to bind the attribute change listeners used to update the rendered UI from the current state of the widget and also to bind
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
the DOM listeners required to enable the UI for interaction.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
<p><code>syncUI</code> is used to sync the UI state from the current widget state, when initially rendered.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
<p><em>NOTE:</em> Widget's <code>renderer</code> method also invokes the <code>renderUI</code> method, which is responsible for laying down any additional content elements a widget requires. However
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
tooltip does not have any additional elements in needs to add to the DOM, outside of the default Widget boundingBox and contentBox.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
    bindUI : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
        this.after("delegateChange", this._afterSetDelegate);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
        this.after("nodesChange", this._afterSetNodes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
        this._bindDelegate();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
    syncUI : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
        this._uiSetNodes(this.get("triggerNodes"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
<h4>Attribute Supporting Methods</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
<p>Tooltip's <code>triggerNodes</code>, which defines the set of nodes which should trigger this tooltip instance,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
has a couple of supporting methods associated with it.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
<p>The <code>_afterSetNodes</code> method is the default attribute change event handler for the <code>triggerNodes</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
attribute. It invokes the <code>_uiSetNodes</code> method, which marks all trigger nodes with a trigger class name (<code>yui-tooltip-trigger</code>) when set.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
    _afterSetNodes : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
        this._uiSetNodes(e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
    _uiSetNodes : function(nodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
        if (this._triggerNodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
            this._triggerNodes.removeClass(this._triggerClassName);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
        if (nodes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
            this._triggerNodes = nodes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
            this._triggerNodes.addClass(this._triggerClassName);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
<p>Similarly the <code>_afterSetDelegate</code> method is the default attributechange listener for the <code>delegate</code> attribute,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
and invokes <code>_bindDelegate</code> to set up the listeners when a new delegate node is set.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
    _afterSetDelegate : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
        this._bindDelegate(e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
    _bindDelegate : function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
        var eventHandles = this._eventHandles;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
        if (eventHandles.delegate) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
            eventHandles.delegate.detach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
            eventHandles.delegate = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
        eventHandles.delegate = Y.on("mouseover", Y.bind(this._onDelegateMouseOver, this), this.get("delegate"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
<h4>DOM Event Handlers</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
<p>Tooltips interaction revolves around the <code>mouseover</code>, <code>mousemove</code> and <code>mouseout</code> DOM events. The mouseover listener is the only listener set up initially, on the <code>delegate</code> node:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
    _onDelegateMouseOver : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
        var node = this.getParentTrigger(e.target);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
        if (node && (!this._currTrigger.node || !node.compareTo(this._currTrigger.node))) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
            this._enterTrigger(node, e.pageX, e.pageY);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
<p>It attempts to determine if the mouse is entering a trigger node. It ignores mouseover events generated from elements 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
inside the current trigger node (for example when mousing out of a child element of a trigger node). If it determines that the mouse is entering a trigger node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
the delegates to the <code>_enterTrigger</code> method to setup the current trigger state and attaches mousemove and mouseout listeners on the current trigger node.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
<p>The mouse out listener delegates to the <code>_leaveTrigger</code> method, if it determines the mouse is leaving the trigger node:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
    _onNodeMouseOut : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
        var to = e.relatedTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
        var trigger = e.currentTarget;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
        if (!trigger.contains(to)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
            this._leaveTrigger(trigger);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
<p>The mouse move listener delegates to the <code>_overTrigger</code> method to store the current mouse XY co-ordinates (used to position the Tooltip when it is displayed after the <code>showDelay</code>):</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
    _onNodeMouseMove : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
        this._overTrigger(e.pageX, e.pageY);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
<h4>Trigger Event Delegates: _enterTrigger, _leaveTrigger, _overTrigger</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
<p>As seen above, the DOM event handlers delegate to the <code>_enterTrigger, _leaveTrigger and _overTrigger</code> methods to update the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
Tooltip state based on the currently active trigger node.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
<p>The <code>_enterTrigger</code> method sets the current trigger state (which node is the current tooltip trigger, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
what the current mouse XY position is, etc.). The method also fires the <code>triggerEnter</code> event, whose default function actually handles 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
showing the tooltip after the configured <code>showDelay</code> period. The <code>triggerEnter</code> event can be prevented by listeners, allowing 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
users to prevent the tooltip from being shown if required. (<code>triggerEnter</code> listeners are passed the current trigger node and pageX, pageY mouse co-ordinates as event facade properties):</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
    _enterTrigger : function(node, x, y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
        this._setCurrentTrigger(node, x, y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
        this.fire("triggerEnter", null, node, x, y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
    _defTriggerEnterFn : function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
        var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
        if (!this.get("disabled")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
            this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
            var delay = (this.get("visible")) ? 0 : this.get("showDelay");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
            this._timers.show = Y.later(delay, this, this._showTooltip, [node]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
<p>Similarly the <code>_leaveTrigger</code> method is invoked when the mouse leaves a trigger node, and clears any stored state, timers and listeners before setting up
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
the <code>hideDelay</code> timer. It fires a <code>triggerLeave</code> event, but cannot be prevented, and has no default behavior to prevent:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
    _leaveTrigger : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
        this.fire("triggerLeave");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
        this._clearCurrentTrigger();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
        this._clearTimers();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
        this._timers.hide = Y.later(this.get("hideDelay"), this, this._hideTooltip);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
<p>As mentioned previously, the <code>_overTrigger</code> method simply stores the current mouse XY co-ordinates for use when the tooltip is shown:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
    _overTrigger : function(x, y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
        this._currTrigger.mouseX = x;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
        this._currTrigger.mouseY = y;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
<h4>Setting Tooltip Content</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
<p>Since the content for a tooltip is usually a function of the trigger node and not constant, <code>Tooltip</code> provides a number of ways to set the content.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
<ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
    <li>Setting the <code>content</code> attribute to a string or node. In this case, the value of the <code>content</code> attribute is used
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
    for all triggerNodes</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
    <li>Setting the <code>content</code> attribute to an object literal, containing a map of triggerNode id to content. The content for a trigger node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
    will be set using the map, when the tooltip is triggered for the node.</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
    <li>Setting the title attribute on the trigger node. The value of the title attribute is used to set the tooltip content,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
    when triggered for the node.</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
    <li>By calling the <code>setTriggerContent</code> method to set content for a specific trigger node, in a <code>triggerEnter</code> event listener.</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
</ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
<p>The precedence of these methods is handled in the <code>_setTriggerContent</code> method, invoked when the mouse enters a trigger:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
    _setTriggerContent : function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
        var content = this.get("content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
        if (content && !(content instanceof Node || Lang.isString(content))) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
            content = content[node.get("id")] || node.getAttribute("title");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
        this.setTriggerContent(content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
    setTriggerContent : function(content) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
        var contentBox = this.get("contentBox");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
        contentBox.set("innerHTML", "");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
        if (content) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
            if (content instanceof Node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
                for (var i = 0, l = content.size(); i < l; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
                    contentBox.appendChild(content.item(i));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
            } else if (Lang.isString(content)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
                contentBox.set("innerHTML", content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
<p>Calling the public <code>setTriggerContent</code> in a <code>triggerEvent</code> listener will over-ride content set using the <code>content</code> attribute or the trigger node's title value.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
<h4>Using Tooltip</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
<p>For this example, we set up 4 DIV elements which will act as tooltip triggers. They are all marked using a <code>yui-hastooltip</code> class, so that they can be queried using a simple selector, passed as the value for the <code>triggerNodes</code> attribute in the tooltip's constructor Also all 4 trigger nodes are contained in a wrapper DIV with <code>id="delegate"</code> which will act as the <code>delegate</code> node.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
    var tt = new Tooltip({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
        triggerNodes:".yui-hastooltip",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
        delegate: "#delegate",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
        content: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
            tt3: "Tooltip 3 (from lookup)"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
        shim:false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
        zIndex:2
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
    tt.render();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
<p>The tooltip content for each of the trigger nodes is setup differently. The first trigger node uses the title attribute to set it's content. The third trigger node's content is set using the content map set in the constructor above. The second trigger node's content is set using a <code>triggerEnter</code> event listener and the <code>setTriggerContent</code> method as shown below:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
    tt.on("triggerEnter", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
        var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
        if (node && node.get("id") == "tt2") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
            this.setTriggerContent("Tooltip 2 (from triggerEvent)");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1003
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1004
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
<p>The fourth trigger node's content is set using it's title attribute, however it also has a <code>triggerEvent</code> listener which prevents the tooltip from being displayed for it, if the checkbox is checked.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
    var prevent = Y.Node.get("#prevent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
    tt.on("triggerEnter", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
        var node = e.node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
        if (prevent.get("checked")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
            if (node && node.get("id") == "tt4") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
                e.preventDefault();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
				</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
				<div class="yui-u sidebar">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
					<div id="examples" class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
						<h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
    Widget Examples:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
						<div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
							<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
								<li><a href='../widget/widget-extend.html'>Extending the base widget class</a></li><li><a href='../widget/widget-build.html'>Creating custom widget classes</a></li><li class='selected'><a href='../widget/widget-tooltip.html'>Creating a simple Tooltip widget</a></li>							</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
						</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
					<div class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
						<h4>More Widget Resources:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
                        <div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
						<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
							<!-- <li><a href="http://developer.yahoo.com/yui/widget/">User's Guide</a> (external)</li> -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
						<li><a href="../../api/module_widget.html">API Documentation</a></li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
			  </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
<div class="yui-b toc3" id="tocWrapper">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
<!-- TABLE OF CONTENTS -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
<div id="toc">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
<li class="sect first">YUI 3.x Project</li><li class="item"><a title="The Yahoo! User Interface (YUI) Library, 3.x Branch, " href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site (external)</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="The YUI Library can be downloaded from SourceForge" href="http://sourceforge.net/projects/yui/">YUI 3 on Sourceforge (external)</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/3/license.html">YUI License (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI (Global Prerequisite) - Functional Examples" href="../../examples/yui/index.html">YUI (Global Prerequisite)</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="item"><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin</a></li><li class="selected "><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget</a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema</a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource</a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType</a></li><li class="item"><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="History - Functional Examples" href="../../examples/history/index.html">History</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Queue - Functional Examples" href="../../examples/queue/index.html">Queue</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay</a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider</a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin</a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin</a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console</a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="item"><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">The YUI Community</li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="item"><a title="The Yahoo! Group YDN-JavaScript hosts the YUI community forum" href="http://tech.groups.yahoo.com/group/ydn-javascript/">YUI Forum (external)</a></li><li class="item"><a title="The Yahoo! Group yui3 is dedicated to the 3.x branch of the Yahoo! User Interface (YUI) Library." href="http://tech.groups.yahoo.com/group/yui3/">YUI 3 Forum (external)</a></li><li class="item"><a title="YUI is used by Yahoo! and by hundreds of other sites, including many you know and love." href="/yui/poweredby/">YUI Sightings (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li><li class="sect">YUI Articles on the YUI Website</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Reporting Bugs and Making Feature Requests for YUI Components" href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests (external)</a></li><li class="item"><a title="Serve YUI source files from Yahoo! -- free, fast, and simple" href="http://developer.yahoo.com/yui/3/articles/hosting/">Serving YUI Files from Yahoo! (external)</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1058
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1059
	</div><!--closes bd-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
	<div id="ft">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
<script src="../../assets/dpSyntaxHighlighter.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
dp.SyntaxHighlighter.HighlightAll('code'); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
</body>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
</html>