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