--- /dev/null
+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js">Ext.app.App = function(cfg){\r
+ Ext.apply(this, cfg);\r
+ this.addEvents({\r
+ 'ready' : true,\r
+ 'beforeunload' : true\r
+ });\r
+\r
+ Ext.onReady(this.initApp, this);\r
+};\r
+\r
+Ext.extend(Ext.app.App, Ext.util.Observable, {\r
+ isReady: false,\r
+ startMenu: null,\r
+ modules: null,\r
+\r
+ getStartConfig : function(){\r
+\r
+ },\r
+\r
+ initApp : function(){\r
+ this.startConfig = this.startConfig || this.getStartConfig();\r
+\r
+ this.desktop = new Ext.Desktop(this);\r
+\r
+ this.launcher = this.desktop.taskbar.startMenu;\r
+\r
+ this.modules = this.getModules();\r
+ if(this.modules){\r
+ this.initModules(this.modules);\r
+ }\r
+\r
+ this.init();\r
+\r
+ Ext.EventManager.on(window, 'beforeunload', this.onUnload, this);\r
+ this.fireEvent('ready', this);\r
+ this.isReady = true;\r
+ },\r
+\r
+ getModules : Ext.emptyFn,\r
+ init : Ext.emptyFn,\r
+\r
+ initModules : function(ms){\r
+ for(var i = 0, len = ms.length; i < len; i++){\r
+ var m = ms[i];\r
+ this.launcher.add(m.launcher);\r
+ m.app = this;\r
+ }\r
+ },\r
+\r
+ getModule : function(name){\r
+ var ms = this.modules;\r
+ for(var i = 0, len = ms.length; i < len; i++){\r
+ if(ms[i].id == name || ms[i].appType == name){\r
+ return ms[i];\r
+ }\r
+ }\r
+ return '';\r
+ },\r
+\r
+ onReady : function(fn, scope){\r
+ if(!this.isReady){\r
+ this.on('ready', fn, scope);\r
+ }else{\r
+ fn.call(scope, this);\r
+ }\r
+ },\r
+\r
+ getDesktop : function(){\r
+ return this.desktop;\r
+ },\r
+\r
+ onUnload : function(e){\r
+ if(this.fireEvent('beforeunload', this) === false){\r
+ e.stopEvent();\r
+ }\r
+ }\r
+});</pre> \r
+</body>\r
+</html>
\ No newline at end of file