/* * Ext JS Library 2.0 Copyright(c) 2006-2007, Ext JS, LLC. licensing@extjs.com * * http://extjs.com/license */ Ext.app.App = function(cfg) { Ext.apply(this, cfg); this.addEvents({ 'ready' : true, 'beforeunload' : true }); Ext.onReady(this.initApp, this); }; Ext.extend(Ext.app.App, Ext.util.Observable, { isReady : false, startMenu : null, modules : null, getStartConfig : function() { }, initApp : function() { this.startConfig = this.startConfig || this.getStartConfig(); this.desktop = new Ext.Desktop(this); this.launcher = this.desktop.taskbar.startMenu; this.modules = this.getModules(); if (this.modules) { this.initModules(this.modules); } this.init(); Ext.EventManager .on(window, 'beforeunload', this.onUnload, this); this.fireEvent('ready', this); this.isReady = true; }, getModules : Ext.emptyFn, init : Ext.emptyFn, initModules : function(ms) { for (var i = 0, len = ms.length; i < len; i++) { var m = ms[i]; this.launcher.add(m.launcher); m.app = this; } }, getModule : function(name) { var ms = this.modules; for (var i = 0, len = ms.length; i < len; i++) { if (ms[i].id == name || ms[i].appType == name) { return ms[i]; } } return ''; }, onReady : function(fn, scope) { if (!this.isReady) { this.on('ready', fn, scope); } else { fn.call(scope, this); } }, getDesktop : function() { return this.desktop; }, onUnload : function(e) { if (this.fireEvent('beforeunload', this) === false) { e.stopEvent(); } } });