raimund@570: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@570:  * Software engineering by Intevation GmbH
raimund@570:  *
raimund@570:  * This file is Free Software under the GNU GPL (v>=3)
raimund@570:  * and comes with ABSOLUTELY NO WARRANTY! Check out
raimund@570:  * the documentation coming with IMIS-Labordaten-Application for details.
raimund@570:  */
raimund@570: 
raimund@570: Ext.define('Lada.override.RowEditor', {
raimund@570:     override: 'Ext.grid.RowEditor',
raimund@570: 
raimund@570:     addFieldsForColumn: function(column, initial) {
raimund@570:         var me = this,
raimund@570:             i,
raimund@570:             length, field;
raimund@570: 
raimund@570:         if (Ext.isArray(column)) {
raimund@570:             for (i = 0, length = column.length; i < length; i++) {
raimund@570:                 me.addFieldsForColumn(column[i], initial);
raimund@570:             }
raimund@570:             return;
raimund@570:         }
raimund@570: 
raimund@570:         if (column.getEditor) {
raimund@570:             // Get a default display field if necessary
raimund@570:             field = column.getEditor(null, {
raimund@570:                 xtype: 'displayfield',
raimund@570:                 // Override Field's implementation so that the default display fields will not return values. This is done because
raimund@570:                 // the display field will pick up column renderers from the grid.
raimund@570:                 getModelData: function() {
raimund@570:                     return null;
raimund@570:                 }
raimund@570:             });
raimund@570:             if (column.align === 'right') {
raimund@570:                 field.fieldStyle = 'text-align:right';
raimund@570:             }
raimund@570: 
raimund@570:             if (column.xtype === 'actioncolumn') {
raimund@570:                 field.fieldCls += ' ' + Ext.baseCSSPrefix + 'form-action-col-field'
raimund@570:             }
raimund@570: 
raimund@570:             if (me.isVisible() && me.context) {
raimund@570:                 if (field.is('displayfield')) {
raimund@570:                     me.renderColumnData(field, me.context.record, column);
raimund@570:                 }
raimund@570:                 else {
raimund@570:                     field.suspendEvents();
raimund@570:                     field.setValue(me.context.record.get(column.dataIndex));
raimund@570:                     field.resumeEvents();
raimund@570:                 }
raimund@570:             }
raimund@570:             if (column.hidden) {
raimund@570:                 me.onColumnHide(column);
raimund@570:             } else if (column.rendered && !initial) {
raimund@570:                 // Setting after initial render
raimund@570:                 me.onColumnShow(column);
raimund@570:             }
raimund@570:         }
raimund@570:         me.mon(field, 'change', me.onFieldChange, me);
raimund@570:     }
raimund@570: });