~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/static/javascript/yui/build/plugin/plugin.js

  • Committer: Martin Albisetti
  • Date: 2008-12-30 19:20:39 UTC
  • Revision ID: argentina@gmail.com-20081230192039-kc2spvli08fo09sx
Upgrade YUI3 to PR2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
 
3
Code licensed under the BSD License:
 
4
http://developer.yahoo.net/yui/license.txt
 
5
version: 3.0.0pr2
 
6
*/
 
7
YUI.add('plugin', function(Y) {
 
8
 
 
9
/**
 
10
 * Provides the base Plugin class for building widget plugins. 
 
11
 *
 
12
 * @module plugin
 
13
 */
 
14
 
 
15
        /**
 
16
         * Plugin provides a base class for all Plugin classes.
 
17
         * 
 
18
         * @class Plugin 
 
19
         * @extends Base
 
20
         * @param {Object} config The configuration object for the
 
21
         * plugin.
 
22
         */
 
23
        function Plugin(config) {
 
24
            Plugin.superclass.constructor.apply(this, arguments);
 
25
        }
 
26
 
 
27
 
 
28
        /**
 
29
         * Static property provides a string to identify the class.
 
30
         *
 
31
         * @property Plugin.NAME
 
32
         * @type {String}
 
33
         * @static
 
34
         */
 
35
        Plugin.NAME = 'plugin';
 
36
 
 
37
        /**
 
38
         * Static property provides the namespace the plugin will be
 
39
         * registered under.
 
40
         *
 
41
         * @property Plugin.NS
 
42
         * @type {String}
 
43
         * @static
 
44
         */
 
45
        Plugin.NS = 'plugin';
 
46
 
 
47
        var proto = {
 
48
            _handles: null,
 
49
 
 
50
            /**
 
51
             * Initializer lifecycle implementation.
 
52
             * 
 
53
             * @method initializer
 
54
             * @param {Object} config Configuration object literal for the plugin
 
55
             */
 
56
            initializer : function(config) {
 
57
 
 
58
                if (config.owner) {
 
59
                    this._owner = config.owner;
 
60
                } else {
 
61
                }
 
62
 
 
63
                this._handles = [];
 
64
 
 
65
            },
 
66
 
 
67
            /**
 
68
             * desctructor lifecycle implementation.
 
69
             * 
 
70
             * Removes any listeners attached by the Plugin and restores
 
71
             * and over-ridden methods.
 
72
             * 
 
73
             * @method destructor
 
74
             */
 
75
            destructor: function() {
 
76
                // remove all handles
 
77
                if (this._handles) {
 
78
                    for (var i = 0, l = this._handles.length; i < l; i++) {
 
79
                       this._handles[i].detach();
 
80
                    }
 
81
                }
 
82
            },
 
83
 
 
84
            /**
 
85
             * Listens for events and methods fired by the owner widget.
 
86
             * The handler is called before the event handler or method is called.
 
87
             * @method doBefore
 
88
             * @param sFn The event of method to listen for.
 
89
             * @param fn The handler function to call when the listener fires.
 
90
             * @param context An optional context to call the handler with.
 
91
             * Default context is the plugin instance.
 
92
             * @return Handle A handle that can be used to detach the handler (e.g. "handle.detach()").
 
93
             */
 
94
            doBefore: function(sFn, fn, context) {
 
95
                var owner = this._owner,
 
96
                    handle;
 
97
 
 
98
                context = context || this;
 
99
 
 
100
                if (sFn in owner) { // method
 
101
                    handle = Y.Do.before(fn, this._owner, sFn, context);
 
102
                } else if (owner.on) { // event
 
103
                    handle = owner.on(sFn, fn, context);
 
104
                }
 
105
 
 
106
                this._handles.push(handle);
 
107
                return handle;
 
108
            },
 
109
 
 
110
            /**
 
111
             * Listens for events and methods fired by the owner widget.
 
112
             * The handler is called after the event handler or method is called.
 
113
             * @method doAfter
 
114
             * @param sFn The event of method to listen for.
 
115
             * @param fn The handler function to call when the listener fires.
 
116
             * @param context An optional context to call the handler with.
 
117
             * Default context is the plugin instance.
 
118
             * @return Handle A handle that can be used to detach the handler (e.g. "handle.detach()").
 
119
             */
 
120
            doAfter: function(sFn, fn, context) {
 
121
                var owner = this._owner,
 
122
                    handle;
 
123
 
 
124
                context = context || this;
 
125
 
 
126
                if (sFn in owner) { // method
 
127
                    handle = Y.Do.after(fn, this._owner, sFn, context);
 
128
                } else if (owner.after) { // event
 
129
                    handle = owner.after(sFn, fn, context);
 
130
                }
 
131
 
 
132
                this._handles.push(handle);
 
133
                return handle;
 
134
            },
 
135
 
 
136
            toString: function() {
 
137
                return this.constructor.NAME + '[' + this.constructor.NS + ']';
 
138
            }
 
139
        };
 
140
 
 
141
        Y.extend(Plugin, Y.Base, proto);
 
142
        Y.Plugin = Plugin;
 
143
 
 
144
 
 
145
}, '3.0.0pr2' ,{requires:['base']});