Package Modeling :: Package interfaces :: Module ObserverCenter
[show private | hide private]
[frames | no frames]

Module Modeling.interfaces.ObserverCenter

ObserverCenter

Corresponding design patterns: observer+mediator Instant notification

First invocation on a particular object does notify the observers and is recorded so that subsequent notifications are discarded. The memory of already-notified objects can be globally reset by calling 'notifyObserversObjectWillChange' with a 'None' parameter, or on a per-object base using 'ensureSubsequentChangeWillBeNotifiedForObject'.

Observed object should call 'ObserverCenter.notifyObserversObjectWillChange(self)' to indicate to its observers that it is about to change.

The ObserverCenter and the interface 'ObservingInterface' are independant from the framework and can be used alone.

Both observers and observed objects are referenced by weak references [...more to say here...] CVS information

$Id: ObserverCenter.py,v 1.4 2004/07/20 06:21:41 sbigaret Exp $

Function Summary
  addObserver(anObserver, anObject)
Resets the 'alreadyNotified' flag Parameter 'anObserver' should conform to the 'IObserving' interface
  addOmniscientObserver(anObserver)
Parameter 'anObserver' should conform to the 'IObserving' interface
  ensureSubsequentChangeWillBeNotifiedForObject(anObject)
Call this method if you want to make sure the next invocation of 'notifyObserversObjectWillChange' will actually notify observers.
  notifyObserversObjectWillChange(anObject)
Searches all observers for object 'anObject' and send them the 'objectWillChange' message.
  observersForObject(anObject)
Returns all observers registered for 'anObject'
  removeObserver(anObserver, anObject)
Removes the supplied 'anObserver' from the list of 'anObject' 's observers.
  removeOmniscientObserver(anObserver)
Removes the supplied omniscient observer.

Function Details

addObserver(anObserver, anObject)

Resets the 'alreadyNotified' flag Parameter 'anObserver' should conform to the 'IObserving' interface

addOmniscientObserver(anObserver)

Parameter 'anObserver' should conform to the 'IObserving' interface

ensureSubsequentChangeWillBeNotifiedForObject(anObject)

Call this method if you want to make sure the next invocation of 'notifyObserversObjectWillChange' will actually notify observers. Note that you can achieve the same goal globally by calling 'notifyObserversObjectWillChange' with parameter 'None'.

notifyObserversObjectWillChange(anObject)

Searches all observers for object 'anObject' and send them the 'objectWillChange' message. Please note that this notification is sent once and will not be sent upon subsequent request. To reset, send anObject=None.

Omniscient observers are notified before observers registered for 'anObject'.

Note that any exception that might happen when sending the 'objectWillChange' message is ignored, hence all observers will receive the message.

observersForObject(anObject)

Returns all observers registered for 'anObject'

removeObserver(anObserver, anObject)

Removes the supplied 'anObserver' from the list of 'anObject' 's observers. Parameter 'anObserver' should conform to the 'IObserving' interface.

Silently returns if 'anObserver' cannot be found.

removeOmniscientObserver(anObserver)

Removes the supplied omniscient observer. Parameter 'anObserver' should conform to the 'IObserving' interface. Raises 'ValueError' if 'anObserver' is not a registered omniscient observer.

Generated by Epydoc 2.1 on Sat Mar 4 13:36:23 2006 http://epydoc.sf.net