commit extjs-2.2.1
[extjs.git] / examples / desktop / js / App.js
1 /*\r
2  * Ext JS Library 2.2.1\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 Ext.app.App = function(cfg){\r
10     Ext.apply(this, cfg);\r
11     this.addEvents({\r
12         'ready' : true,\r
13         'beforeunload' : true\r
14     });\r
15 \r
16     Ext.onReady(this.initApp, this);\r
17 };\r
18 \r
19 Ext.extend(Ext.app.App, Ext.util.Observable, {\r
20     isReady: false,\r
21     startMenu: null,\r
22     modules: null,\r
23 \r
24     getStartConfig : function(){\r
25 \r
26     },\r
27 \r
28     initApp : function(){\r
29         this.startConfig = this.startConfig || this.getStartConfig();\r
30 \r
31         this.desktop = new Ext.Desktop(this);\r
32 \r
33                 this.launcher = this.desktop.taskbar.startMenu;\r
34 \r
35                 this.modules = this.getModules();\r
36         if(this.modules){\r
37             this.initModules(this.modules);\r
38         }\r
39 \r
40         this.init();\r
41 \r
42         Ext.EventManager.on(window, 'beforeunload', this.onUnload, this);\r
43                 this.fireEvent('ready', this);\r
44         this.isReady = true;\r
45     },\r
46 \r
47     getModules : Ext.emptyFn,\r
48     init : Ext.emptyFn,\r
49 \r
50     initModules : function(ms){\r
51                 for(var i = 0, len = ms.length; i < len; i++){\r
52             var m = ms[i];\r
53             this.launcher.add(m.launcher);\r
54             m.app = this;\r
55         }\r
56     },\r
57 \r
58     getModule : function(name){\r
59         var ms = this.modules;\r
60         for(var i = 0, len = ms.length; i < len; i++){\r
61                 if(ms[i].id == name || ms[i].appType == name){\r
62                         return ms[i];\r
63                         }\r
64         }\r
65         return '';\r
66     },\r
67 \r
68     onReady : function(fn, scope){\r
69         if(!this.isReady){\r
70             this.on('ready', fn, scope);\r
71         }else{\r
72             fn.call(scope, this);\r
73         }\r
74     },\r
75 \r
76     getDesktop : function(){\r
77         return this.desktop;\r
78     },\r
79 \r
80     onUnload : function(e){\r
81         if(this.fireEvent('beforeunload', this) === false){\r
82             e.stopEvent();\r
83         }\r
84     }\r
85 });