]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/OPEN_ILS_STAFF_CLIENT/util/controller.js
another great renaming. package names have to be lowercase apparently
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / OPEN_ILS_STAFF_CLIENT / util / controller.js
1 dump('entering util/controller.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.controller = function () {
5
6         JSAN.use('util.error'); this.error = new util.error();
7
8         return this;
9 };
10
11 util.controller.prototype = {
12
13         'cmds' : {},
14
15         'init' : function (params) {
16
17                 if (typeof params.control_map == 'undefined') throw('util.controller.init: No control_map');
18
19                 this.control_map = params.control_map;
20                 this.window_knows_me_by = params.window_knows_me_by;
21                 this.render_list = [];
22                 this.view = {};
23                 
24                 for (var i in this.control_map) {
25                         var cmd = document.getElementById(i);
26                         if (cmd) {
27                                 for (var j in this.control_map[i][0]) {
28                                         if (this.control_map[i][1]) {
29                                                 var ev_type = this.control_map[i][0][j];
30                                                 switch(ev_type) {
31                                                         case 'render':
32                                                                 this.render_list.push( [i, this.control_map[i][1](cmd)] ); 
33                                                         break;
34                                                         case 'oncommand':
35                                                                 if (!this.window_knows_me_by) 
36                                                                         throw('util.controller: on_command requires window_knows_me_by');
37                                                                 var s = 'try{'+this.window_knows_me_by+".cmds."+i+"();}catch(E){alert(E);}";
38                                                                 cmd.setAttribute(ev_type, s);
39                                                                 this.cmds[i] = this.control_map[i][1];
40                                                         break;
41                                                         default: cmd.addEventListener(ev_type,this.control_map[i][1],false);
42                                                 }
43                                         }
44                                 }
45                         }
46                         this.view[i] = cmd;
47                 }
48         },
49
50         'render' : function(id) {
51                 for (var i in this.render_list) {
52                         try {
53                                 if (id) {
54                                         if (id == this.render_list[i][0]) this.render_list[i][1]();
55                                 } else {
56                                         this.render_list[i][1]();
57                                 }
58                         } catch(E) {
59                                 var error = 'Problem in circ.checkout.render with\n' 
60                                         + this.render_list[i] + '\n\n' + js2JSON(E);
61                                 this.error.sdump('D_ERROR',error);
62                         }
63                 }
64         }
65 }
66 dump('exiting util/controller.js\n');