123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /*
- *+------------------------------------------------------------------------+
- *| Licensed Materials - Property of IBM
- *| IBM Cognos Products: Viewer
- *| (C) Copyright IBM Corp. 2001, 2011
- *|
- *| US Government Users Restricted Rights - Use, duplication or
- *| disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- *|
- *+------------------------------------------------------------------------+
- */
- /*-----------------------------------------------------------------------------------------------------
- Class : CObserver
- Description :
- -----------------------------------------------------------------------------------------------------*/
- function CObserver(subject) {
- this.m_subject = subject;
- this.m_observers = [];
- }
- function CObserver_attach(observer, callback, evt) {
- // verify that when attaching an observer, the observer has implemented a 'update' function
- if(observer == null || typeof observer.update != "function") {
- alert('Notification Frame Work Error : attach failed');
- return false;
- }
- var stateChange = new CState(this.m_subject, observer, callback ? callback : null, evt ? evt : null);
- this.m_observers[this.m_observers.length] = stateChange;
- return true;
- }
- function CObserver_detach(observer) {
- }
- function CObserver_hasObserver(observer)
- {
- var bHasObserver = false;
- for (var idxObs = 0; idxObs < this.m_observers.length; idxObs++)
- {
- if (this.m_observers[idxObs].getObserver() == observer)
- {
- bHasObserver = true;
- break;
- }
- }
- return bHasObserver;
- }
- function CObserver_notify(evt) {
- var i = 0;
- if(typeof evt != "undefined" && evt != null) {
- for(i = 0; i < this.m_observers.length; ++i) {
- if(this.m_observers[i].getEvt() == evt) {
- var theObserver = this.m_observers[i].getObserver();
- var theCallback = this.m_observers[i].getCallback();
- var cachedHandler = theObserver.update;
- theObserver.update = theCallback;
- theObserver.update(this.m_observers[i]);
- theObserver.update = cachedHandler;
- }
- }
- } else {
- for(i = 0; i < this.m_observers.length; ++i) {
- this.m_observers[i].getObserver().update(this.m_observers[i].getSubject());
- }
- }
- }
- CObserver.prototype.attach = CObserver_attach;
- CObserver.prototype.detach = CObserver_detach;
- CObserver.prototype.notify = CObserver_notify;
- CObserver.prototype.hasObserver = CObserver_hasObserver;
- /*-----------------------------------------------------------------------------------------------------
- Class : CState
- Description :
- -----------------------------------------------------------------------------------------------------*/
- function CState(subject, observer, callback,evt) {
- this.m_subject = subject;
- this.m_observer = observer;
- this.m_callback = callback;
- this.m_evt = evt;
- }
- function CState_getObserver() {
- return this.m_observer;
- }
- function CState_getCallback() {
- return this.m_callback;
- }
- function CState_getSubject() {
- return this.m_subject;
- }
- function CState_getEvt() {
- return this.m_evt;
- }
- CState.prototype.getObserver = CState_getObserver;
- CState.prototype.getCallback = CState_getCallback;
- CState.prototype.getSubject = CState_getSubject;
- CState.prototype.getEvt = CState_getEvt;
|