UNPKG

aolists-webtop

Version:

Web interface for aoLists

80 lines (68 loc) 1.93 kB
/* * Ext JS Library 2.2.1 * Copyright(c) 2006-2009, 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(); } } });