Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / locale / multi-lang.js
index c4478eb..dfcb2c7 100644 (file)
-/*!
- * Ext JS Library 3.3.1
- * Copyright(c) 2006-2010 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
-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';
+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.QuickTips.init();
+        return {
+            init: function() {
+                Ext.tip.QuickTipManager.init();
             
-            /* Language chooser combobox  */
-            var store = new Ext.data.ArrayStore({
-                fields: ['code', 'language', 'charset'],
-                data : Ext.exampledata.languages // from languages.js
-            });
-            var combo = new Ext.form.ComboBox({
-                renderTo: 'languages',
-                store: store,
-                displayField:'language',
-                typeAhead: true,
-                mode: 'local',
-                triggerAction: 'all',
-                emptyText: 'Select a language...',
-                selectOnFocus: true,
-                onSelect: function(record) {
-                    window.location.search = Ext.urlEncode({"lang":record.get("code"),"charset":record.get("charset")});
-                }
-            });
-        
-            if (params.lang) {
-                // check if there's really a language with that language code
-                record = store.data.find(function(item, key){
-                    if (item.data.code == params.lang) {
-                        return true;
-                    }
-                    return false;
+                /* Language chooser combobox  */
+                var store = Ext.create('Ext.data.ArrayStore', {
+                    fields: ['code', 'language', 'charset'],
+                    data : Ext.exampledata.languages // from languages.js
                 });
-                // 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 = String.format("../../src/locale/ext-lang-{0}.js", params.lang);
                 
-                Ext.Ajax.request({
-                    url: url,
-                    success: this.onSuccess,
-                    failure: this.onFailure,
-                    scope: this 
+                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
+                        }
+                    }
                 });
-            } 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 */
-            var emailfield = new Ext.FormPanel({
-                renderTo: 'emailfield',
-                labelWidth: 100, // label settings here cascade unless overridden
-                frame: true,
-                title: 'Email Field',
-                bodyStyle: 'padding:5px 5px 0',
-                width: 360,
-                defaults: {width: 220},
-                defaultType: 'textfield',
         
-                items: [{
-                    fieldLabel: 'Email',
-                    name: 'email',
-                    vtype: 'email'
-                }]
-            });
+                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);
+                    }
+                }            
             
-            /* Datepicker */
-            var datefield = new Ext.FormPanel({
-                renderTo: 'datefield',
-                labelWidth: 100, // label settings here cascade unless overridden
-                frame: true,
-                title: 'Datepicker',
-                bodyStyle: 'padding:5px 5px 0',
-                width: 360,
-                defaults: {width: 220},
-                defaultType: 'datefield',
-                items: [{
-                    fieldLabel: 'Date',
-                    name: 'date'
-                }]
-            });
+                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'
+                    }]
+                });
             
-            // shorthand alias
-            var fm = Ext.form, Ed = Ext.grid.GridEditor;
-        
-            var monthArray = Date.monthNames.map(function (e) { return [e]; });
-        
-            var ds = new Ext.data.Store({
-                proxy: new Ext.ux.data.PagingMemoryProxy(monthArray),
-                reader: new Ext.data.ArrayReader({}, [
-                    {name: 'month'}
-                ])
-            });
-        
-            var cm = new Ext.grid.ColumnModel([{
-                header: "Months of the year",
-                dataIndex: 'month',
-                editor: new Ed(new fm.TextField({
-                    allowBlank: false
-                })),
-                width: 240,
-                defaultSortable: true
-            }]);
-        
-            var grid = new Ext.grid.GridPanel({
-                renderTo: 'grid',
-                width: 360,
-                height: 203,
-                title:'Month Browser',
-                store: ds,
-                cm: cm,
-                sm: new Ext.grid.RowSelectionModel({selectRow:Ext.emptyFn}),
+                /* 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'
+                    }]
+                });
             
-                bbar: new Ext.PagingToolbar({
-                        pageSize: 6,
-                        store: ds,
-                        displayInfo: true
-                })
-            });
+                // 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({params:{start:0, limit:6}});            
-        }
-    };
+                // trigger the data store load
+                ds.load();            
+            }
+        };
     
-}();
-Ext.onReady(MultiLangDemo.init, MultiLangDemo);
\ No newline at end of file
+    })();
+    MultiLangDemo.init();
+});
\ No newline at end of file