src/cm/media/js/lib/yui/yui_3.10.3/docs/event/synth-example.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Creating an Arrow Event for DOM Subscription</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            <h1>Example: Creating an Arrow Event for DOM Subscription</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
                <div class="content"><style scoped>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    #demo {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        position: relative;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    #homebase {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        margin-left: 100px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        position: absolute;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        left: 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        top: 40px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        height: 150px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        width: 200px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    .robot {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        height: 210px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        width: 180px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        position: absolute;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        top: 0px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        left: 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        outline-style: none;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        opacity: 0.5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        filter: alpha(opacity=50);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    .yui3-focused {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        opacity: 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        z-index: 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        filter: alpha(opacity=100);        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    #B {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        left: 125px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    #demo input {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        margin-left: 4em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    #demo label {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        font-size: 87%;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        color: #555;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    #detach {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
        margin-top: 150px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
        This example will illustrate how to use the synthetic event creation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
        API.  We'll create an <code>arrow</code> event that fires in response
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        to the user pressing the arrow keys (up, down, left, right) and adds a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        <code>direction</code> property to the generated event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    <p>Subscribing to this new event will look like this:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
<pre class="code prettyprint">node.on(&quot;arrow&quot;, onArrowHandler);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        Support will also be added for delegation, allowing a single subscriber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        from a node higher up the DOM tree, to listen for the new event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        emanating from its descendant elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
<pre class="code prettyprint">containerNode.delegate(&quot;arrow&quot;, onArrowHandler, &quot;.robot&quot;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    <p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        This example is not applicable to touch devices, since they don't have arrow keys.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    </p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
<div class="example yui3-skin-sam">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    <div id="demo">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    <p>Step 1. <button type="button" id="attach" tabindex="1">subscribe</button> to the <code>arrow</code> event.<br>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    <input type="checkbox" id="delegate" value="1" tabindex="1">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
        <label for="delegate">Use a delegated subscription</label></p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    <p>Step 2. Click on a toaster-bot and move it around with the arrow keys.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    <div id="homebase">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        <img id="A" class="robot" tabindex="3" src="../assets/event/toast-8b-left.png" />
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        <img id="B" class="robot" tabindex="3" src="../assets/event/toast-8b-right.png" />
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    <button type="button" id="detach" tabindex="4">Detach subscriptions</button>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
YUI({ filter: 'raw' }).use('node', 'event-synthetic', 'transition', function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
    Y.Event.define("arrow", {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        // Webkit and IE repeat keydown when you hold down arrow keys.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
        // Opera links keypress to page scroll; others keydown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        // Firefox prevents page scroll via preventDefault() on either
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        // keydown or keypress.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        _event: (Y.UA.webkit || Y.UA.ie) ? 'keydown' : 'keypress',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        _keys: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            '37': 'left',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            '38': 'up',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            '39': 'right',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
            '40': 'down'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
        _keyHandler: function (e, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
            if (this._keys[e.keyCode]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                e.direction = this._keys[e.keyCode];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
                notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            sub._detacher = node.on(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                                    this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
        detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
            sub._detacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
        delegate: function (node, sub, notifier, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            sub._delegateDetacher = node.delegate(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                                                  filter, this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        detachDelegate: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
            sub._delegateDetacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    var robotA = Y.one('#A'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        robotB = Y.one('#B'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        subs,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
        moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    robotA.setData('x', parseInt(robotA.getStyle('left'), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    robotA.setData('y', parseInt(robotA.getStyle('top'), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    robotB.setData('x', parseInt(robotB.getStyle('left'), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    robotB.setData('y', parseInt(robotB.getStyle('top'), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    // create variables for image path/filenames
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
    // Use 8bit pngs for IE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
    var imgBits = (Y.UA.ie && Y.UA.ie < 9) ? '-8b-' : '-24b-',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        imgNamePre = '../assets/event/toast' + imgBits,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        imgUp = imgNamePre + 'up.png',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        imgDown = imgNamePre + 'down.png',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        imgLeft = imgNamePre + 'left.png',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        imgRight = imgNamePre + 'right.png';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    Y.one('#A').setAttribute('src', imgLeft);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    Y.one('#B').setAttribute('src', imgRight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    function move(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        // to prevent page scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        if(moving){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            return; // Don't move during a transition (a move)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        }else{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
            moving = true; // During moving, block other arrow keys from moving
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        var xy = this.getData(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
            imgWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
            imgHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
            // var scale is used to make the image size and distance moved
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            // proportional to the Y position of the image
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            scale = (150 + xy.y) / 150, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
            moveXDistance = 40,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
            moveYDistance = 20;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        switch (e.direction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
            case 'up':
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
                if(xy.y < -100){ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
                    moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
                    return; // Stop moving when image gets too small
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
                }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
                xy.y -= Math.round(moveYDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
                e.target.setAttribute('src', imgUp);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            case 'down':  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
                if(xy.y > 90){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
                    moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
                    return; // Stop moving when image gets too big
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
                }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
                xy.y += Math.round(moveYDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
                e.target.setAttribute('src', imgDown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
            case 'left':
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
                xy.x -= Math.round(moveXDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
                e.target.setAttribute('src', imgLeft);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            case 'right':
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                xy.x += Math.round(moveXDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                e.target.setAttribute('src', imgRight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        scale = 150 / (150 - xy.y); // calculate scale with new Y dimentions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        imgWidth = Math.round(scale * 180) + 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        imgHeight = Math.round(scale * 210) + 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        this.transition({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            top : (xy.y + 'px'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            left: (xy.x + 'px'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            width: imgWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            height: imgHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            duration: .8
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        }, function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
            moving = false; // now that move is done, allow arrow keys to move again
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        this.setData('x', xy.x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        this.setData('y', xy.y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    function detachSubs() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            subs.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            subs = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
            Y.all('.robot').removeClass('yui3-focused');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
    Y.one("#attach").on("click", function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        detachSubs();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        if (Y.one("#delegate").get('checked')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            subs = Y.one('#demo').delegate('arrow', move, '.robot');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
            subs = new Y.EventHandle([
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                robotA.on("arrow", move),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
                robotB.on("arrow", move)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            ]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    Y.one("#detach").on("click", detachSubs);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    Y.all('.robot').on('focus', function(e){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
            Y.all('.robot').removeClass('yui3-focused');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            e.target.addClass('yui3-focused');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    Y.all('.robot').on('click', function(e){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        e.target.focus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
<h2><code>on</code>, <code>fire</code>, and <code>detach</code></h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
    The three interesting moments in the lifecycle of a DOM event subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    are
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
<ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    <li>The event is subscribed to</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    <li>The event is fired</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
    <li>The event is unsubscribed from</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
</ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    Create a new synthetic DOM event with `Y.Event.define( <em>name</em>,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    <em>config</em> )`.  Define the implementation logic for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    <code>on</code> and <code>detach</code> moments in the configuration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    Typically the condition triggering the event firing is set up in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    <code>on</code> phase.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
<pre class="code prettyprint">Y.Event.define(&quot;arrow&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
    on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        &#x2F;&#x2F; what happens when a subscription is made
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
        &#x2F;&#x2F; if (condition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
            notifier.fire(); &#x2F;&#x2F; subscribers executed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
        &#x2F;&#x2F; }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        &#x2F;&#x2F; what happens when a subscription is removed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
    In the case of arrow handling, the trigger is simply a key event with a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
    <code>keyCode</code> between 37 and 40.  There are a few browser quirks with arrow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
    handling that warrant listening to <code>keydown</code> for some browsers and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    <code>keypress</code> for others, so we'll take care of that transparently for <code>arrow</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
    subscribers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
</p> 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
<pre class="code prettyprint">Y.Event.define(&quot;arrow&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        var directions = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            37: &#x27;left&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            38: &#x27;up&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            39: &#x27;right&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            40: &#x27;down&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        &#x2F;&#x2F; Webkit and IE repeat keydown when you hold down arrow keys.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        &#x2F;&#x2F; Opera links keypress to page scroll; others keydown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        &#x2F;&#x2F; Firefox prevents page scroll via preventDefault() on either
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        &#x2F;&#x2F; keydown or keypress.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        &#x2F;&#x2F; Bummer to sniff, but can&#x27;t test the repeating behavior, and a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        &#x2F;&#x2F; feature test for the scrolling would more than double the code size.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        var eventName = (Y.UA.webkit || Y.UA.ie) ? &#x27;keydown&#x27; : &#x27;keypress&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        &#x2F;&#x2F; To make detaching the associated DOM event easy, store the detach
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        &#x2F;&#x2F; handle from the DOM subscription on the synthethic subscription
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        &#x2F;&#x2F; object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        sub._detacher = node.on(eventName, function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            &#x2F;&#x2F; Only notify subscribers if one of the arrow keys was pressed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            if (directions[e.keyCode]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                &#x2F;&#x2F; Add the extra property
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                e.direction = directions[e.keyCode];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                &#x2F;&#x2F; Firing the notifier event executes the arrow subscribers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
                &#x2F;&#x2F; Pass along the key event, which will be renamed &quot;arrow&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
                notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
    detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        &#x2F;&#x2F; Detach the key event subscription using the stored detach handle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
        sub._detacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
} );</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
<h2>Add Delegation Support</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    Since the <code>arrow</code> event is simply a filtered <code>keydown</code> or <code>keypress</code> event,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    no special handling needs to be done for delegate subscriptions.  We will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    extract the key event handler and use it for both <code>on(&quot;arrow&quot;, ...)</code> and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
    <code>delegate(&quot;arrow&quot;, ...)</code> subscriptions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
<pre class="code prettyprint">Y.Event.define(&quot;arrow&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
    &#x2F;&#x2F; Webkit and IE repeat keydown when you hold down arrow keys.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
    &#x2F;&#x2F; Opera links keypress to page scroll; others keydown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    &#x2F;&#x2F; Firefox prevents page scroll via preventDefault() on either
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
    &#x2F;&#x2F; keydown or keypress.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    _event: (Y.UA.webkit || Y.UA.ie) ? &#x27;keydown&#x27; : &#x27;keypress&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
    _keys: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
        &#x27;37&#x27;: &#x27;left&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
        &#x27;38&#x27;: &#x27;up&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        &#x27;39&#x27;: &#x27;right&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        &#x27;40&#x27;: &#x27;down&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    _keyHandler: function (e, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        if (this._keys[e.keyCode]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
            e.direction = this._keys[e.keyCode];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
    on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
        &#x2F;&#x2F; Use the extended subscription signature to set the &#x27;this&#x27; object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
        &#x2F;&#x2F; in the callback and pass the notifier as a second parameter to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        &#x2F;&#x2F; _keyHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
        sub._detacher = node.on(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
                                this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
        sub._detacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    &#x2F;&#x2F; Note the delegate handler receives a fourth parameter, the filter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    &#x2F;&#x2F; passed (e.g.) container.delegate(&#x27;click&#x27;, callback, &#x27;.HERE&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    &#x2F;&#x2F; The filter could be either a string or a function.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    delegate: function (node, sub, notifier, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        sub._delegateDetacher = node.delegate(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
                                              filter, this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
    &#x2F;&#x2F; Delegate uses a separate detach function to facilitate undoing more
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
    &#x2F;&#x2F; complex wiring created in the delegate logic above.  Not needed here.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
    detachDelegate: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
        sub._delegateDetacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
<h2>Use it</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
    Subscribe to the new event or detach the event as you would any other DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
    event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
<pre class="code prettyprint">function move(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    &#x2F;&#x2F; to prevent page scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
    &#x2F;&#x2F; See full code listing to show the data set up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
    var xy = this.getData();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
    switch (e.direction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        case &#x27;up&#x27;:    xy.y -= 10; break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        case &#x27;down&#x27;:  xy.y += 10; break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
        case &#x27;left&#x27;:  xy.x -= 10; break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
        case &#x27;right&#x27;: xy.x += 10; break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
    this.transition({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
        top : (xy.y + &#x27;px&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
        left: (xy.x + &#x27;px&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        duration: .2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
&#x2F;&#x2F; Subscribe using node.on(&quot;arrow&quot;, ...);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
Y.one(&quot;#A&quot;).on(&quot;arrow&quot;, move),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
Y.one(&quot;#B&quot;).on(&quot;arrow&quot;, move)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
&#x2F;&#x2F; OR using container.delegate(&quot;arrow&quot;, ...);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
subs = Y.one(&#x27;#demo&#x27;).delegate(&#x27;arrow&#x27;, move, &#x27;.robot&#x27;);</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
<h2>Bonus Step: to the Gallery!</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    Synthetic events are perfect candidates for Gallery modules.  There are a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
    number already hosted there, and there are plenty of UI interaction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
    patterns that would benefit from being encapsulated in synthetic
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
    events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
<p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
    The <code>arrow</code> event in this example is also
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
    <a href="http://yuilibrary.com/gallery/show/event-arrow">in the gallery</a>,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
    but with additional functionality.  Check out
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
    <a href="https://github.com/lsmith/yui3-gallery/blob/master/build/gallery-event-arrow/gallery-event-arrow-debug.js">its source</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
    to see what you can do with synthetic events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
<h2>Full Code Listing</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
<pre class="code prettyprint">&lt;div id=&quot;demo&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
    &lt;p&gt;Step 1. &lt;button type=&quot;button&quot; id=&quot;attach&quot; tabindex=&quot;1&quot;&gt;subscribe&lt;&#x2F;button&gt; to the &lt;code&gt;arrow&lt;&#x2F;code&gt; event.&lt;br&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
    &lt;input type=&quot;checkbox&quot; id=&quot;delegate&quot; value=&quot;1&quot; tabindex=&quot;1&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        &lt;label for=&quot;delegate&quot;&gt;Use a delegated subscription&lt;&#x2F;label&gt;&lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    &lt;p&gt;Step 2. Click on a toaster-bot and move it around with the arrow keys.&lt;&#x2F;p&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
    &lt;div id=&quot;homebase&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        &lt;img id=&quot;A&quot; class=&quot;robot&quot; tabindex=&quot;3&quot; src=&quot;..&#x2F;assets&#x2F;event&#x2F;toast-8b-left.png&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        &lt;img id=&quot;B&quot; class=&quot;robot&quot; tabindex=&quot;3&quot; src=&quot;..&#x2F;assets&#x2F;event&#x2F;toast-8b-right.png&quot; &#x2F;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
    &lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
    &lt;button type=&quot;button&quot; id=&quot;detach&quot; tabindex=&quot;4&quot;&gt;Detach subscriptions&lt;&#x2F;button&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
&lt;script&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
YUI({ filter: &#x27;raw&#x27; }).use(&#x27;node&#x27;, &#x27;event-synthetic&#x27;, &#x27;transition&#x27;, function (Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
    Y.Event.define(&quot;arrow&quot;, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        &#x2F;&#x2F; Webkit and IE repeat keydown when you hold down arrow keys.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
        &#x2F;&#x2F; Opera links keypress to page scroll; others keydown.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
        &#x2F;&#x2F; Firefox prevents page scroll via preventDefault() on either
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        &#x2F;&#x2F; keydown or keypress.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        _event: (Y.UA.webkit || Y.UA.ie) ? &#x27;keydown&#x27; : &#x27;keypress&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        _keys: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
            &#x27;37&#x27;: &#x27;left&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            &#x27;38&#x27;: &#x27;up&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
            &#x27;39&#x27;: &#x27;right&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
            &#x27;40&#x27;: &#x27;down&#x27;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
        _keyHandler: function (e, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
            if (this._keys[e.keyCode]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
                e.direction = this._keys[e.keyCode];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
                notifier.fire(e);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
        on: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
            sub._detacher = node.on(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
                                    this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
        detach: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            sub._detacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
        delegate: function (node, sub, notifier, filter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
            sub._delegateDetacher = node.delegate(this._event, this._keyHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
                                                  filter, this, notifier);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
        detachDelegate: function (node, sub, notifier) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
            sub._delegateDetacher.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
    var robotA = Y.one(&#x27;#A&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        robotB = Y.one(&#x27;#B&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
        subs,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
        moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    robotA.setData(&#x27;x&#x27;, parseInt(robotA.getStyle(&#x27;left&#x27;), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
    robotA.setData(&#x27;y&#x27;, parseInt(robotA.getStyle(&#x27;top&#x27;), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
    robotB.setData(&#x27;x&#x27;, parseInt(robotB.getStyle(&#x27;left&#x27;), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
    robotB.setData(&#x27;y&#x27;, parseInt(robotB.getStyle(&#x27;top&#x27;), 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    &#x2F;&#x2F; create variables for image path&#x2F;filenames
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    &#x2F;&#x2F; Use 8bit pngs for IE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
    var imgBits = (Y.UA.ie &amp;&amp; Y.UA.ie &lt; 9) ? &#x27;-8b-&#x27; : &#x27;-24b-&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        imgNamePre = &#x27;..&#x2F;assets&#x2F;event&#x2F;toast&#x27; + imgBits,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
        imgUp = imgNamePre + &#x27;up.png&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
        imgDown = imgNamePre + &#x27;down.png&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
        imgLeft = imgNamePre + &#x27;left.png&#x27;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
        imgRight = imgNamePre + &#x27;right.png&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
    Y.one(&#x27;#A&#x27;).setAttribute(&#x27;src&#x27;, imgLeft);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
    Y.one(&#x27;#B&#x27;).setAttribute(&#x27;src&#x27;, imgRight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    function move(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
        &#x2F;&#x2F; to prevent page scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
        if(moving){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
            return; &#x2F;&#x2F; Don&#x27;t move during a transition (a move)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
        }else{
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
            moving = true; &#x2F;&#x2F; During moving, block other arrow keys from moving
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
        var xy = this.getData(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
            imgWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
            imgHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
            &#x2F;&#x2F; var scale is used to make the image size and distance moved
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
            &#x2F;&#x2F; proportional to the Y position of the image
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            scale = (150 + xy.y) &#x2F; 150, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
            moveXDistance = 40,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
            moveYDistance = 20;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
           
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
        switch (e.direction) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
            case &#x27;up&#x27;:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
                if(xy.y &lt; -100){ 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                    moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                    return; &#x2F;&#x2F; Stop moving when image gets too small
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                xy.y -= Math.round(moveYDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                e.target.setAttribute(&#x27;src&#x27;, imgUp);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            case &#x27;down&#x27;:  
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                if(xy.y &gt; 90){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                    moving = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                    return; &#x2F;&#x2F; Stop moving when image gets too big
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                }    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                xy.y += Math.round(moveYDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
                e.target.setAttribute(&#x27;src&#x27;, imgDown);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
            case &#x27;left&#x27;:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
                xy.x -= Math.round(moveXDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
                e.target.setAttribute(&#x27;src&#x27;, imgLeft);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
            case &#x27;right&#x27;:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
                xy.x += Math.round(moveXDistance * scale);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
                e.target.setAttribute(&#x27;src&#x27;, imgRight);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        scale = 150 &#x2F; (150 - xy.y); &#x2F;&#x2F; calculate scale with new Y dimentions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
        imgWidth = Math.round(scale * 180) + &#x27;px&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        imgHeight = Math.round(scale * 210) + &#x27;px&#x27;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
        this.transition({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
            top : (xy.y + &#x27;px&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
            left: (xy.x + &#x27;px&#x27;),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
            width: imgWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
            height: imgHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
            duration: .8
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        }, function(){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
            moving = false; &#x2F;&#x2F; now that move is done, allow arrow keys to move again
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
        this.setData(&#x27;x&#x27;, xy.x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
        this.setData(&#x27;y&#x27;, xy.y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
    function detachSubs() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
            subs.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
            subs = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
            Y.all(&#x27;.robot&#x27;).removeClass(&#x27;yui3-focused&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    Y.one(&quot;#attach&quot;).on(&quot;click&quot;, function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
        detachSubs();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
        if (Y.one(&quot;#delegate&quot;).get(&#x27;checked&#x27;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
            subs = Y.one(&#x27;#demo&#x27;).delegate(&#x27;arrow&#x27;, move, &#x27;.robot&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
            subs = new Y.EventHandle([
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
                robotA.on(&quot;arrow&quot;, move),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
                robotB.on(&quot;arrow&quot;, move)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
            ]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
    Y.one(&quot;#detach&quot;).on(&quot;click&quot;, detachSubs);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    Y.all(&#x27;.robot&#x27;).on(&#x27;focus&#x27;, function(e){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
        if (subs) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
            Y.all(&#x27;.robot&#x27;).removeClass(&#x27;yui3-focused&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
            e.target.addClass(&#x27;yui3-focused&#x27;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
    Y.all(&#x27;.robot&#x27;).on(&#x27;click&#x27;, function(e){
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
        e.target.focus();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
                                        <li data-description="Use the Event Utility to attach simple DOM event handlers.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
                                            <a href="basic-example.html">Simple DOM Events</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
                                        <li data-description="Using the synthetic event API to create a DOM event that fires in response to arrow keys being pressed.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
                                            <a href="synth-example.html">Creating an Arrow Event for DOM Subscription</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
                                        <li data-description="Supporting cross-device swipe gestures, using the event-move gesture events">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
                                            <a href="swipe-example.html">Supporting A Swipe Left Gesture</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
                            <h2 class="no-toc">Examples That Use This Component</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
                                        <li data-description="Creating an accessible menu button using the Focus Manager Node Plugin, Event&#x27;s delegation support and mouseenter event, along with the Overlay widget and Node&#x27;s support for the WAI-ARIA Roles and States.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                                            <a href="../node-focusmanager/node-focusmanager-button.html">Accessible Menu Button</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
                                        <li data-description="Shows how to extend the base widget class, to create your own Widgets.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
                                            <a href="../widget/widget-extend.html">Extending the Base Widget Class</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
                                        <li data-description="Example Photo Browser application.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
                                            <a href="../dd/photo-browser.html">Photo Browser</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
                                        <li data-description="Portal style example using Drag &amp; Drop Event Bubbling and Animation.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
                                            <a href="../dd/portal-drag.html">Portal Style Example</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
                                        <li data-description="Use IO to request data over HTTP.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
                                            <a href="../io/get.html">HTTP GET to request data</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
    assets: '../assets/event',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
    name: 'synth-example',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
    title: 'Creating an Arrow Event for DOM Subscription',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
YUI.Env.Tests.examples.push('basic-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
YUI.Env.Tests.examples.push('synth-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
YUI.Env.Tests.examples.push('swipe-example');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
YUI.Env.Tests.examples.push('node-focusmanager-button');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
YUI.Env.Tests.examples.push('widget-extend');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
YUI.Env.Tests.examples.push('photo-browser');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
YUI.Env.Tests.examples.push('portal-drag');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
YUI.Env.Tests.examples.push('get');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
</html>