Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / locale / multi-lang.js
index ac0860f..dfcb2c7 100644 (file)
-/*\r
- * Ext JS Library 2.2.1\r
- * Copyright(c) 2006-2009, Ext JS, LLC.\r
- * licensing@extjs.com\r
- * \r
- * http://extjs.com/license\r
- */\r
-\r
-\r
-Ext.onReady(function(){\r
-    Ext.QuickTips.init();\r
-    Ext.form.Field.prototype.msgTarget = 'side';\r
-    \r
-    /* Language chooser combobox  */\r
-    var store = new Ext.data.SimpleStore({\r
-        fields: ['code', 'language', 'charset'],\r
-        data : Ext.exampledata.languages // from languages.js\r
-    });\r
-    var combo = new Ext.form.ComboBox({\r
-        store: store,\r
-        displayField:'language',\r
-        typeAhead: true,\r
-        mode: 'local',\r
-        triggerAction: 'all',\r
-        emptyText:'Select a language...',\r
-        selectOnFocus:true,\r
-       onSelect: function(record) {\r
-           window.location.search = Ext.urlEncode({"lang":record.get("code"),"charset":record.get("charset")});\r
-       }\r
-    });\r
-    combo.render('languages');\r
-\r
-    // get the selected language code parameter from url (if exists)\r
-    var params = Ext.urlDecode(window.location.search.substring(1));\r
-    if (params.lang) {\r
-       // check if there's really a language with that language code\r
-       record = store.data.find(function(item, key) {\r
-           if (item.data.code==params.lang){\r
-               return true;\r
-           }\r
-           return false;\r
-       });\r
-       // if language was found in store assign it as current value in combobox\r
-       if (record) {\r
-           combo.setValue(record.data.language);\r
-       }\r
-    }\r
-\r
-    /* Email field */\r
-    var emailfield = new Ext.FormPanel({\r
-        labelWidth: 100, // label settings here cascade unless overridden\r
-        frame:true,\r
-        title: 'Email Field',\r
-        bodyStyle:'padding:5px 5px 0',\r
-        width: 360,\r
-        defaults: {width: 220},\r
-        defaultType: 'textfield',\r
-\r
-        items: [{\r
-                fieldLabel: 'Email',\r
-                name: 'email',\r
-                vtype:'email'\r
-            }\r
-        ]\r
-    });\r
-    emailfield.render('emailfield');\r
-\r
-    /* Datepicker */\r
-    var datefield = new Ext.FormPanel({\r
-        labelWidth: 100, // label settings here cascade unless overridden\r
-        frame:true,\r
-        title: 'Datepicker',\r
-        bodyStyle:'padding:5px 5px 0',\r
-        width: 360,\r
-        defaults: {width: 220},\r
-        defaultType: 'datefield',\r
-\r
-        items: [{\r
-                fieldLabel: 'Date',\r
-                name: 'date'\r
-            }\r
-        ]\r
-    });\r
-    datefield.render('datefield');\r
-    \r
-    // shorthand alias\r
-    var fm = Ext.form, Ed = Ext.grid.GridEditor;\r
-    var monthArray = Date.monthNames.map(function (e) { return [e]; });    \r
-    var ds = new Ext.data.Store({\r
-               proxy: new Ext.data.PagingMemoryProxy(monthArray),\r
-               reader: new Ext.data.ArrayReader({}, [\r
-                       {name: 'month'}\r
-               ])\r
-    });\r
-    var cm = new Ext.grid.ColumnModel([{\r
-           header: "Months of the year",\r
-           dataIndex: 'month',\r
-           editor: new Ed(new fm.TextField({\r
-               allowBlank: false\r
-           })),\r
-           width: 240\r
-        }]);\r
-    cm.defaultSortable = true;\r
-    var grid = new Ext.grid.GridPanel({\r
-       el:'grid',\r
-       width: 360,\r
-       height: 203,\r
-       title:'Month Browser',\r
-       store: ds,\r
-       cm: cm,\r
-       sm: new Ext.grid.RowSelectionModel({selectRow:Ext.emptyFn}),\r
-\r
-       bbar: new Ext.PagingToolbar({\r
-            pageSize: 6,\r
-            store: ds,\r
-            displayInfo: true\r
-        })\r
-    })\r
-    grid.render();\r
-\r
-    // trigger the data store load\r
-    ds.load({params:{start:0, limit:6}});    \r
-});\r
+Ext.Loader.setConfig({enabled: true});
+
+Ext.Loader.setPath('Ext.ux', '../ux/');
+
+Ext.require([
+    'Ext.data.*',
+    'Ext.tip.QuickTipManager',
+    'Ext.form.*',
+    'Ext.ux.data.PagingMemoryProxy',
+    'Ext.grid.Panel'
+]);
+
+Ext.onReady(function(){
+    MultiLangDemo = (function() {
+        // get the selected language code parameter from url (if exists)
+        var params = Ext.urlDecode(window.location.search.substring(1));
+        //Ext.form.Field.prototype.msgTarget = 'side';
+                
+        return {
+            init: function() {
+                Ext.tip.QuickTipManager.init();
+            
+                /* Language chooser combobox  */
+                var store = Ext.create('Ext.data.ArrayStore', {
+                    fields: ['code', 'language', 'charset'],
+                    data : Ext.exampledata.languages // from languages.js
+                });
+                
+                var combo = Ext.create('Ext.form.field.ComboBox', {
+                    renderTo: 'languages',
+                    store: store,
+                    displayField:'language',
+                    queryMode: 'local',
+                    emptyText: 'Select a language...',
+                    hideLabel: true,
+                    listeners: {
+                        select: {
+                            fn: function(cb, records) {
+                                var record = records[0];
+                                window.location.search = Ext.urlEncode({"lang":record.get("code"),"charset":record.get("charset")});
+                            },
+                            scope: this
+                        }
+                    }
+                });
+        
+                if (params.lang) {
+                    // check if there's really a language with that language code
+                    var record = store.findRecord('code', params.lang, null, null, null, true);
+                    // if language was found in store assign it as current value in combobox
+                    if (record) {
+                        combo.setValue(record.data.language);
+                    }
+                }            
+            
+                if (params.lang) {
+                    var url = Ext.util.Format.format("../../locale/ext-lang-{0}.js", params.lang);
+                
+                    Ext.Ajax.request({
+                        url: url,
+                        success: this.onSuccess,
+                        failure: this.onFailure,
+                        scope: this 
+                    });
+                } else {
+                    this.setupDemo();
+                }
+            },
+            onSuccess: function(response, opts) {
+                eval(response.responseText);
+                this.setupDemo();
+            },
+            onFailure: function() {
+                Ext.Msg.alert('Failure', 'Failed to load locale file.');
+                this.setupDemo();
+            },
+            setupDemo: function() {
+                /* Email field */
+                Ext.create('Ext.FormPanel', {
+                    renderTo: 'emailfield',
+                    labelWidth: 100, // label settings here cascade unless overridden
+                    frame: true,
+                    title: 'Email Field',
+                    bodyStyle: 'padding:5px 5px 0',
+                    width: 380,
+                    defaults: {
+                        msgTarget: 'side',
+                        width: 340
+                    },
+                    defaultType: 'textfield',
+                    items: [{
+                        fieldLabel: 'Email',
+                        name: 'email',
+                        vtype: 'email'
+                    }]
+                });
+            
+                /* Datepicker */
+                Ext.create('Ext.FormPanel', {
+                    renderTo: 'datefield',
+                    labelWidth: 100, // label settings here cascade unless overridden
+                    frame: true,
+                    title: 'Datepicker',
+                    bodyStyle: 'padding:5px 5px 0',
+                    width: 380,
+                    defaults: {
+                        msgTarget: 'side',
+                        width: 340
+                    },
+                    defaultType: 'datefield',
+                    items: [{
+                        fieldLabel: 'Date',
+                        name: 'date'
+                    }]
+                });
+            
+                // shorthand alias                
+                var monthArray = Ext.Array.map(Ext.Date.monthNames, function (e) { return [e]; });
+                var ds = Ext.create('Ext.data.Store', {
+                     fields: ['month'],
+                     remoteSort: true,
+                     pageSize: 6,
+                     proxy: {
+                         type: 'pagingmemory',
+                         data: monthArray,
+                         reader: {
+                             type: 'array'
+                         }
+                     }
+                 });
+                             
+                 Ext.create('Ext.grid.Panel', {
+                     renderTo: 'grid',
+                     width: 380,
+                     height: 203,
+                     title:'Month Browser',
+                     columns:[{
+                         text: 'Month of the year',
+                         dataIndex: 'month',
+                         width: 240 
+                     }],
+                     store: ds,            
+                     bbar: Ext.create('Ext.toolbar.Paging', {
+                             pageSize: 6,
+                             store: ds,
+                             displayInfo: true
+                     })
+                 });
+            
+                // trigger the data store load
+                ds.load();            
+            }
+        };
+    
+    })();
+    MultiLangDemo.init();
+});
\ No newline at end of file