2011-09-22 16:40:31 +00:00
|
|
|
/**
|
|
|
|
|
* @namespace
|
|
|
|
|
*/
|
2011-06-27 22:25:45 +00:00
|
|
|
fabric.Observable = {
|
2012-05-12 09:44:26 +00:00
|
|
|
|
2011-06-27 22:25:45 +00:00
|
|
|
/**
|
2011-09-22 16:40:31 +00:00
|
|
|
* Observes specified event
|
|
|
|
|
* @method observe
|
2012-07-18 16:25:51 +00:00
|
|
|
* @depracated Since 0.8.34. Use `on` instead.
|
2011-06-27 22:25:45 +00:00
|
|
|
* @param {String} eventName
|
|
|
|
|
* @param {Function} handler
|
|
|
|
|
*/
|
|
|
|
|
observe: function(eventName, handler) {
|
|
|
|
|
if (!this.__eventListeners) {
|
|
|
|
|
this.__eventListeners = { };
|
|
|
|
|
}
|
2011-07-02 05:19:32 +00:00
|
|
|
// one object with key/value pairs was passed
|
|
|
|
|
if (arguments.length === 1) {
|
|
|
|
|
for (var prop in eventName) {
|
2012-07-18 16:25:51 +00:00
|
|
|
this.on(prop, eventName[prop]);
|
2011-07-02 05:19:32 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (!this.__eventListeners[eventName]) {
|
|
|
|
|
this.__eventListeners[eventName] = [ ];
|
|
|
|
|
}
|
|
|
|
|
this.__eventListeners[eventName].push(handler);
|
2011-06-27 22:25:45 +00:00
|
|
|
}
|
|
|
|
|
},
|
2012-05-12 09:44:26 +00:00
|
|
|
|
2011-06-27 22:25:45 +00:00
|
|
|
/**
|
2011-09-22 16:40:31 +00:00
|
|
|
* Stops event observing for a particular event handler
|
|
|
|
|
* @method stopObserving
|
2012-07-18 16:25:51 +00:00
|
|
|
* @depracated Since 0.8.34. Use `off` instead.
|
2011-06-27 22:25:45 +00:00
|
|
|
* @param {String} eventName
|
|
|
|
|
* @param {Function} handler
|
|
|
|
|
*/
|
|
|
|
|
stopObserving: function(eventName, handler) {
|
|
|
|
|
if (!this.__eventListeners) {
|
|
|
|
|
this.__eventListeners = { };
|
|
|
|
|
}
|
|
|
|
|
if (this.__eventListeners[eventName]) {
|
2012-10-20 18:11:16 +00:00
|
|
|
if (handler) {
|
|
|
|
|
fabric.util.removeFromArray(this.__eventListeners[eventName], handler);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
this.__eventListeners[eventName].length = 0;
|
|
|
|
|
}
|
2011-06-27 22:25:45 +00:00
|
|
|
}
|
|
|
|
|
},
|
2012-05-12 09:44:26 +00:00
|
|
|
|
2011-06-27 22:25:45 +00:00
|
|
|
/**
|
2012-05-12 09:44:26 +00:00
|
|
|
* Fires event with an optional options object
|
2011-09-22 16:40:31 +00:00
|
|
|
* @method fire
|
2011-06-27 22:25:45 +00:00
|
|
|
* @param {String} eventName
|
2012-05-12 09:44:26 +00:00
|
|
|
* @param {Object} [options]
|
2011-06-27 22:25:45 +00:00
|
|
|
*/
|
2012-05-12 09:44:26 +00:00
|
|
|
fire: function(eventName, options) {
|
2011-06-27 22:25:45 +00:00
|
|
|
if (!this.__eventListeners) {
|
2012-10-14 00:53:12 +00:00
|
|
|
this.__eventListeners = { };
|
2011-06-27 22:25:45 +00:00
|
|
|
}
|
|
|
|
|
var listenersForEvent = this.__eventListeners[eventName];
|
|
|
|
|
if (!listenersForEvent) return;
|
|
|
|
|
for (var i = 0, len = listenersForEvent.length; i < len; i++) {
|
|
|
|
|
// avoiding try/catch for perf. reasons
|
2012-05-12 09:44:26 +00:00
|
|
|
listenersForEvent[i](options || { });
|
2011-06-27 22:25:45 +00:00
|
|
|
}
|
|
|
|
|
}
|
2012-07-18 16:25:51 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
2012-07-19 09:43:46 +00:00
|
|
|
* Alias for observe
|
|
|
|
|
* @method observe
|
|
|
|
|
* @memberOf fabric.Observable
|
2012-07-18 16:25:51 +00:00
|
|
|
*/
|
|
|
|
|
fabric.Observable.on = fabric.Observable.observe;
|
|
|
|
|
|
|
|
|
|
/**
|
2012-07-19 09:43:46 +00:00
|
|
|
* Alias for stopObserving
|
|
|
|
|
* @method off
|
2012-07-18 16:25:51 +00:00
|
|
|
*/
|
|
|
|
|
fabric.Observable.off = fabric.Observable.stopObserving;
|