// Obiekt implementujący wzorzec KVC/KVO
Editor.Object = Class.extend({
+ _className: 'Editor.Object',
_observers: {},
+ _guid: null,
+
+ init: function() {
+ this._observers = {};
+ },
+
+ description: function() {
+ return this._className + '(guid = ' + this.guid() + ')';
+ },
addObserver: function(observer, property, callback) {
+ // console.log('Add observer', observer.description(), 'to', this.description(), '[', property, ']');
if (!this._observers[property]) {
this._observers[property] = {}
}
- this._observers[property][this.guid()] = callback;
+ this._observers[property][observer.guid()] = callback;
return this;
},
this.removeObserver(observer, property)
}
} else {
+ // console.log('Remove observer', observer.description(), 'from', this.description(), '[', property, ']');
delete this._observers[property][observer.guid()];
}
return this;
notifyObservers: function(property) {
var currentValue = this[property];
for (var guid in this._observers[property]) {
- this._observers[property][guid](property, currentValue);
+ // console.log(this._observers[property][guid]);
+ // console.log('Notifying', guid, 'of', this.description(), '[', property, ']');
+ this._observers[property][guid](property, currentValue, this);
}
return this;
},