/ext-4.1.0_b3/examples/desktop/js/App.js
https://bitbucket.org/srogerf/javascript · JavaScript · 167 lines · 117 code · 29 blank · 21 comment · 14 complexity · 4d8689be974c8ae2e4954bfc4aa5eb52 MD5 · raw file
- /*!
- * Ext JS Library 4.0
- * Copyright(c) 2006-2011 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
- Ext.define('Ext.ux.desktop.App', {
- mixins: {
- observable: 'Ext.util.Observable'
- },
- requires: [
- 'Ext.container.Viewport',
- 'Ext.ux.desktop.Desktop'
- ],
- isReady: false,
- modules: null,
- useQuickTips: true,
- constructor: function (config) {
- var me = this;
- me.addEvents(
- 'ready',
- 'beforeunload'
- );
- me.mixins.observable.constructor.call(this, config);
- if (Ext.isReady) {
- Ext.Function.defer(me.init, 10, me);
- } else {
- Ext.onReady(me.init, me);
- }
- },
- init: function() {
- var me = this, desktopCfg;
- if (me.useQuickTips) {
- Ext.QuickTips.init();
- }
- me.modules = me.getModules();
- if (me.modules) {
- me.initModules(me.modules);
- }
- desktopCfg = me.getDesktopConfig();
- me.desktop = new Ext.ux.desktop.Desktop(desktopCfg);
- me.viewport = new Ext.container.Viewport({
- layout: 'fit',
- items: [ me.desktop ]
- });
- Ext.EventManager.on(window, 'beforeunload', me.onUnload, me);
- me.isReady = true;
- me.fireEvent('ready', me);
- },
- /**
- * This method returns the configuration object for the Desktop object. A derived
- * class can override this method, call the base version to build the config and
- * then modify the returned object before returning it.
- */
- getDesktopConfig: function () {
- var me = this, cfg = {
- app: me,
- taskbarConfig: me.getTaskbarConfig()
- };
- Ext.apply(cfg, me.desktopConfig);
- return cfg;
- },
- getModules: Ext.emptyFn,
- /**
- * This method returns the configuration object for the Start Button. A derived
- * class can override this method, call the base version to build the config and
- * then modify the returned object before returning it.
- */
- getStartConfig: function () {
- var me = this,
- cfg = {
- app: me,
- menu: []
- },
- launcher;
- Ext.apply(cfg, me.startConfig);
- Ext.each(me.modules, function (module) {
- launcher = module.launcher;
- if (launcher) {
- launcher.handler = launcher.handler || Ext.bind(me.createWindow, me, [module]);
- cfg.menu.push(module.launcher);
- }
- });
- return cfg;
- },
- createWindow: function(module) {
- var window = module.createWindow();
- window.show();
- },
- /**
- * This method returns the configuration object for the TaskBar. A derived class
- * can override this method, call the base version to build the config and then
- * modify the returned object before returning it.
- */
- getTaskbarConfig: function () {
- var me = this, cfg = {
- app: me,
- startConfig: me.getStartConfig()
- };
- Ext.apply(cfg, me.taskbarConfig);
- return cfg;
- },
- initModules : function(modules) {
- var me = this;
- Ext.each(modules, function (module) {
- module.app = me;
- });
- },
- getModule : function(name) {
- var ms = this.modules;
- for (var i = 0, len = ms.length; i < len; i++) {
- var m = ms[i];
- if (m.id == name || m.appType == name) {
- return m;
- }
- }
- return null;
- },
- onReady : function(fn, scope) {
- if (this.isReady) {
- fn.call(scope, this);
- } else {
- this.on({
- ready: fn,
- scope: scope,
- single: true
- });
- }
- },
- getDesktop : function() {
- return this.desktop;
- },
- onUnload : function(e) {
- if (this.fireEvent('beforeunload', this) === false) {
- e.stopEvent();
- }
- }
- });