aolists-webtop
Version:
Web interface for aoLists
80 lines (68 loc) • 1.93 kB
JavaScript
/*
* 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();
}
}
});