--[[ * @author PureMVC Lua Native Port by Sean * @author Copyright(c) 2006-2012 Futurescale, Inc., Some rights reserved. * * @class puremvc.Observer * * A base Observer implementation. * * An Observer is an object that encapsulates information * about an interested object with a method that should * be called when a particular Notification is broadcast. * * In PureMVC, the Observer class assumes these responsibilities: * * - Encapsulate the notification (callback) method of the interested object. * - Encapsulate the notification context (this) of the interested object. * - Provide methods for setting the notification method and context. * - Provide a method for notifying the interested object. * * * The notification method on the interested object should take * one parameter of type Notification. * * * @param {Function} notifyMethod * the notification method of the interested object * @param {Object} notifyContext * the notification context of the interested object * @constructor ]] local Observer = class('Observer') function Observer:ctor(notifyMethod, notifyContext) self:setNotifyMethod(notifyMethod) self:setNotifyContext(notifyContext) end --[[ * Set the Observers notification method. * * The notification method should take one parameter of type Notification * @param {Function} notifyMethod * the notification (callback) method of the interested object. * @return {void} ]] function Observer:setNotifyMethod(notifyMethod) self.notify = notifyMethod end --[[ * Set the Observers notification context. * * @param {Object} notifyContext * the notification context (this) of the interested object. * * @return {void} ]] function Observer:setNotifyContext(notifyContext) self.context = notifyContext end --[[ * Get the Function that this Observer will invoke when it is notified. * * @private * @return {Function} ]] function Observer:getNotifyMethod() return self.notify end --[[ * Get the Object that will serve as the Observers callback execution context * * @private * @return {Object} ]] function Observer:getNotifyContext() return self.context end --[[ * Notify the interested object. * * @param {puremvc.Notification} notification * The Notification to pass to the interested objects notification method * @return {void} ]] function Observer:notifyObserver(notification) self.notify(self.context, notification) end --[[ * Compare an object to this Observers notification context. * * @param {Object} object * * @return {boolean} ]] function Observer:compareNotifyContext(object) return object == self.context end return Observer