Ext.define('extensions.ColorCombo', { extend:'Ext.form.ComboBox',//'Ext.form.field.Picker',//'Ext.form.field.Date', alias: 'widget.colorCombo', requires: ['Ext.picker.Color'], constructor: function(){ this.callParent(arguments); }, // createPicker: function() { // var me = this; // Ext.create('Ext.picker.Color', { // pickerField: me, // ownerCt: me.ownerCt, // renderTo: document.body, // style: {backgroundColor: "#fff"}, // floating: true, // hidden: true, // focusOnShow: true, // listeners: { // scope: me, // select: me.onSelect // }, // keyNavConfig: { // esc: function() { // me.collapse(); // } // } // }); // } createPicker: function() { var me = this, picker, menuCls = Ext.baseCSSPrefix + 'menu', opts = Ext.apply({ pickerField: me, selModel: { mode: me.multiSelect ? 'SIMPLE' : 'SINGLE' }, floating: true, hidden: true, ownerCt: me.ownerCt, cls: me.el.up('.' + menuCls) ? menuCls : '', store: me.store, displayField: me.displayField, focusOnToFront: false, pageSize: me.pageSize, tpl: me.tpl }, me.listConfig, me.defaultListConfig); picker = me.picker = Ext.create('Ext.picker.Color', opts); if (me.pageSize) { picker.pagingToolbar.on('beforechange', me.onPageChange, me); } me.mon(picker, { itemclick: me.onItemClick, refresh: me.onListRefresh, scope: me }); me.mon(picker.getSelectionModel(), { 'beforeselect': me.onBeforeSelect, 'beforedeselect': me.onBeforeDeselect, 'selectionchange': me.onListSelectionChange, scope: me }); return picker; }, /** * @private * Enables the key nav for the BoundList when it is expanded. */ onExpand: function() { var me = this, keyNav = me.listKeyNav, selectOnTab = me.selectOnTab, picker = me.getPicker(); // Handle BoundList navigation from the input field. Insert a tab listener specially to enable selectOnTab. if (keyNav) { keyNav.enable(); } else { keyNav = me.listKeyNav = Ext.create('Ext.picker.Color', this.inputEl, { boundList: picker, forceKeyDown: true, tab: function(e) { if (selectOnTab) { this.selectHighlighted(e); me.triggerBlur(); } // Tab key event is allowed to propagate to field return true; } }); } // While list is expanded, stop tab monitoring from Ext.form.field.Trigger so it doesn't short-circuit selectOnTab if (selectOnTab) { me.ignoreMonitorTab = true; } Ext.defer(keyNav.enable, 1, keyNav); //wait a bit so it doesn't react to the down arrow opening the picker me.inputEl.focus(); } // // +me.getPicker??? });