X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/25ef3491bd9ae007ff1fc2b0d7943e6eaaccf775..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/examples/desktop/js/App.js diff --git a/examples/desktop/js/App.js b/examples/desktop/js/App.js old mode 100644 new mode 100755 index 877dec24..383cd086 --- a/examples/desktop/js/App.js +++ b/examples/desktop/js/App.js @@ -1,83 +1,158 @@ /*! - * Ext JS Library 3.0.3 - * Copyright(c) 2006-2009 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license + * Ext JS Library 4.0 + * Copyright(c) 2006-2011 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.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(); - } - } -}); \ No newline at end of file + +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: [] + }; + + Ext.apply(cfg, me.startConfig); + + Ext.each(me.modules, function (module) { + if (module.launcher) { + cfg.menu.push(module.launcher); + } + }); + + return cfg; + }, + + /** + * 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(); + } + } +});