UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

86 lines (68 loc) 2.19 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2006 STZ-IDA, Germany, http://www.stz-ida.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Til Schneider (til132) * Fabian Jakobs (fjakobs) ************************************************************************ */ /** * An abstract cell editor factory creating text/password/spinner/... fields. */ qx.Class.define("qx.ui.table.celleditor.AbstractField", { extend: qx.core.Object, implement: qx.ui.table.ICellEditorFactory, type: "abstract", properties: { /** * function that validates the result * the function will be called with the new value and the old value and is * supposed to return the value that is set as the table value. **/ validationFunction: { check: "Function", nullable: true, init: null } }, members: { /** * Factory to create the editor widget * * @return {qx.ui.core.Widget} The editor widget */ _createEditor() { throw new Error("Abstract method call!"); }, // interface implementation createCellEditor(cellInfo) { var cellEditor = this._createEditor(); cellEditor.originalValue = cellInfo.value; if (cellInfo.value === null || cellInfo.value === undefined) { cellInfo.value = ""; } cellEditor.setValue("" + cellInfo.value); cellEditor.addListener("appear", function () { cellEditor.selectAllText(); }); return cellEditor; }, // interface implementation getCellEditorValue(cellEditor) { var value = cellEditor.getValue(); // validation function will be called with new and old value var validationFunc = this.getValidationFunction(); if (validationFunc) { value = validationFunc(value, cellEditor.originalValue); } if (typeof cellEditor.originalValue == "number") { value = parseFloat(value); } return value; } } });