autofill

by Johan Vandeplas

HTML

<script src="https://cdn.sencha.com/ext/gpl/4.2.1/ext-all-dev.js"></script>
<link rel="stylesheet" href="https://cdn.sencha.com/ext/gpl/4.2.1/resources/css/ext-all.css">

JavaScript

/** undocumented file */
Ext.define('Ceres.view.ux.CellEditing', {
    extend: 'Ext.grid.plugin.CellEditing',

    alias: 'plugin.cerescellediting',
    layout: 'hbox',

    clipboardEl: null,
    prevFocus: null,


    init: function (grid) {
        var me = this,
            mainGrid = grid;

        me.callParent(arguments);

        me.isLocked = grid.isLocked;

        if (grid.ownerLockable) {
            mainGrid = grid.ownerLockable;
        }

        // wait for the grid to be rendered so it has an .el
        if (!mainGrid.hasCellEditingListeners) {
            mainGrid.on('render', function () {
                mainGrid.mon(mainGrid.el, 'keypress', function (e, t) {
                    var el = Ext.get(t);
                    if (!el.hasCls('x-grid-row') && !el.hasCls('x-grid-view') && !el.hasCls('x-grid-data-row')) {
                        return; //if not executed on a grid row return
                    }
                    if (e.keyCode === e.DELETE) { //Firefox seems to trigger keypress for a delete key press
                        return;
                    }
                    var pos = mainGrid.selModel.getCurrentPosition(),
                        self = pos ? pos.view.editingPlugin : null,
                        charCode = e.getCharCode(); // save the charCode because e changes to a focus event after the startEditByPosition

                    if (!pos) {
                        return false;
                    }

                    t = pos.view.getCellByPosition(pos).parent('tr').el.dom;

                    if (self.editing || charCode === e.LEFT || charCode === e.RIGHT || charCode === e.UP || charCode === e.DOWN || charCode === e.ENTER || charCode === e.TAB) {
                        return false;
                    }
                    if (!pos.columnHeader.getEditor()) {
                        return false;
                    }

                    self.startEditByPosition(pos);
                    if (self.activeEditor)...