Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / sandbox / js / App.js
diff --git a/examples/sandbox/js/App.js b/examples/sandbox/js/App.js
new file mode 100644 (file)
index 0000000..3ec41a8
--- /dev/null
@@ -0,0 +1,83 @@
+/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 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