]> git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-src/class/org/argeo/ria/event/UIBus.js
Delay the interruptClose setting to avoid IE closing the perspective on download.
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-src / class / org / argeo / ria / event / UIBus.js
1 /**
2 * A generic channel for posting reload events.
3 */
4 qx.Class.define("org.argeo.ria.event.UIBus",
5 {
6 type : "singleton",
7 extend : qx.core.Object,
8
9 properties :{
10 listeners : {
11 check : "Map"
12 },
13 notifiers : {
14 check : "Array"
15 }
16 },
17 construct : function(){
18 this.base(arguments);
19 this.setListeners({});
20 this.setNotifiers([]);
21 },
22 members : {
23 addListener : function(eventType, listenerFunction, contextObject){
24 var notifiers = this.getNotifiers();
25 for(var i=0;i<notifiers.length;i++){
26 notifiers[i].addListener(eventType);
27 }
28 var typeListeners = this.getListeners()[eventType];
29 if(!typeListeners) {
30 typeListeners = new Array();
31 this.getListeners()[eventType] = typeListeners;
32 }
33 var func = listenerFunction;
34 if(contextObject){
35 func = qx.lang.Function.bind(listenerFunction, contextObject);
36 }
37 typeListeners.push(func);
38 },
39 removeListener : function(eventType, listenerFunction, contextObject){
40 var notifiers = this.getNotifiers();
41 for(var i=0;i<notifiers.length;i++){
42 notifiers[i].removeListener(eventType);
43 }
44 var typeListeners = this.getListeners()[eventType];
45 if(!typeListeners) return;
46 var func = listenerFunction;
47 if(contextObject){
48 func = qx.lang.Function.bind(listenerFunction, contextObject);
49 }
50 for(var i=0;i<typeListeners.length;i++){
51 if(typeListeners[i] == func){
52 delete(typeListeners[i]);
53 return;
54 }
55 }
56 },
57 dispatchEvent : function(eventType, eventData){
58 var listeners = this.getListeners()[eventType];
59 if(listeners && listeners.length){
60 for(var i=0;i<listeners.length;i++){
61 listeners[i](eventData);
62 }
63 }
64 },
65 registerNotifier : function(notifier){
66 this.getNotifiers().push(notifier);
67 }
68 }
69 });