@qooxdoo/framework
Version:
The JS Framework for Coders
96 lines (74 loc) • 2.25 kB
JavaScript
/* ************************************************************************
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 : function() {
throw new Error("Abstract method call!");
},
// interface implementation
createCellEditor : function(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 : function(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;
}
}
});