]>
git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/CellEditorFactory.js
6651813373ca3c2113fe3cfc85ade9353bac9ff5
1 /*******************************************************************************
5 ******************************************************************************/
8 * A cell editor factory creating text fields or disabled text fields.
11 qx
.Class
.define("org.argeo.slc.ria.execution.CellEditorFactory",
13 extend
: qx
.ui
.table
.cellrenderer
.Default
,
14 implement
: qx
.ui
.table
.ICellEditorFactory
,
17 * ****************************************************************************
19 * ****************************************************************************
22 construct : function() {
27 * ****************************************************************************
29 * ****************************************************************************
35 * function that validates the result the function will be called with
36 * the new value and the old value and is supposed to return the value
37 * that is set as the table value.
39 validationFunction
: {
48 * ****************************************************************************
50 * ****************************************************************************
55 _getContentHtml : function(cellInfo
) {
56 var table
= cellInfo
.table
;
57 var tableModel
= table
.getTableModel();
58 var rowData
= tableModel
.getRowData(cellInfo
.row
);
59 var metaData
= rowData
[2];
60 if (metaData
.disabled
) {
61 return '<span style="color:#999;">' + qx
.bom
.String
.escape(this._formatValue(cellInfo
)) + '</span>';
63 return qx
.bom
.String
.escape(this._formatValue(cellInfo
));
68 // interface implementation
69 createCellEditor : function(cellInfo
) {
70 var table
= cellInfo
.table
;
71 var tableModel
= table
.getTableModel();
72 var rowData
= tableModel
.getRowData(cellInfo
.row
);
73 var metaData
= rowData
[2];
74 if (metaData
.disabled
) {
75 return null; // var cellEditor = new
76 // qx.ui.table.celleditor.TextField();
78 if(metaData
.type
== "primitive"){
79 var cellEditor
= new qx
.ui
.form
.TextField
;
80 cellEditor
.setAppearance("table-editor-textfield");
81 cellEditor
.originalValue
= cellInfo
.value
;
82 if (cellInfo
.value
=== null) {
85 cellEditor
.setValue("" + cellInfo
.value
);
87 cellEditor
.addListener("appear", function() {
88 cellEditor
.selectAllText();
92 if (metaData
.subType
== "integer") {
93 validationFunc = function(newValue
, oldValue
){
94 var isNum
= !isNaN(newValue
* 1);
96 alert("Warning, this field only accepts Integers!");
102 cellEditor
.setUserData("validationFunc", validationFunc
);
103 }else if(metaData
.type
== "ref"){
104 var cellEditor
= new qx
.ui
.form
.SelectBox().set({
105 appearance
: "table-editor-selectbox"
107 cellEditor
.setUserData("validationFunc", function(value
, oldValue
){
108 if(value
== "__empty__"){
109 alert("Warning, value cannot be empty! You must select at least one option below.");
115 var value
= cellInfo
.value
;
116 cellEditor
.originalValue
= value
;
117 // replace null values
118 if ( value
=== null ) {
122 var li
= new qx
.ui
.form
.ListItem("");
123 li
.setModel("__empty__");
126 var list
= metaData
.refList
;
131 for (var i
=0,l
=list
.length
; i
<l
; i
++)
134 if ( row
instanceof Array
) {
135 // Array [key, description] where description can be null
136 item
= new qx
.ui
.form
.ListItem(row
[0]);
137 item
.setModel(row
[0]);
139 item
.setToolTip(new qx
.ui
.tooltip
.ToolTip(row
[1]));
142 item
= new qx
.ui
.form
.ListItem(row
);
145 cellEditor
.add(item
);
146 if(value
== item
.getModel()){
147 cellEditor
.setSelection([item
]);
152 cellEditor
.setModelSelection(["" + value
]);
153 cellEditor
.addListener("appear", function() {
161 // interface implementation
162 getCellEditorValue : function(cellEditor
) {
164 if(cellEditor
.classname
== "qx.ui.form.TextField"){
165 value
= cellEditor
.getValue();
167 var sel
= cellEditor
.getModelSelection();
168 value
= sel
.getItem(0);
170 var validationFunc
= cellEditor
.getUserData("validationFunc");
172 // validation function will be called with new and old value
173 // var validationFunc = this.getValidationFunction();
174 if (validationFunc
) {
175 value
= validationFunc(value
, cellEditor
.originalValue
);
178 if (typeof cellEditor
.originalValue
== "number") {
179 value
= parseFloat(value
);