Hello,
Yes, IMHO these are very frequent operations to any grid like structure. I
dont know where to write those .. so writing them in this post.
qx.Proto.addRow = function(newRow) {
this._rowArr.push(newRow);
var rowArr = this._rowArr;
if
(this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
var data = { firstRow:rowArr.length - 1, lastRow:rowArr.length - 1,
firstColumn:0, lastColumn:this.getColumnCount() - 1 };
this.dispatchEvent(new
qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED,
data), true);
}
this._clearSorting();
};
qx.Proto.removeRow = function() {
var len = this._rowArr.length;
if (len === 0) {
return null;
}
var row = this._rowArr.pop();
var rowArr = this._rowArr;
if
(this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
len = rowArr.length;
var rowIndex = (len === 0 ? 0 : len - 1);
var data = { firstRow:rowIndex, lastRow:rowIndex, firstColumn:0,
lastColumn:this.getColumnCount() - 1 };
this.dispatchEvent(new
qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED,
data), true);
}
return row;
};
qx.Proto.deleteRow = function(rowIndex) {
var len = this._rowArr.length || 0;
if (len <= 0 || rowIndex < 0 || rowIndex >= len) {
return null;
}
var row = null;
if ((len == 1 && rowIndex === 0) || (len - 1 == rowIndex)) {
row = this.removeRow();
}
else {
row = this._rowArr[rowIndex];
var i = rowIndex;
do {
this._rowArr[i] = this._rowArr[i + 1];
i += 1;
} while (i < (len - 1));
}
row = this.removeRow();
var rowArr = this._rowArr;
if
(this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
var data = { firstRow:rowIndex, lastRow:rowArr.length - 1,
firstColumn:0, lastColumn:this.getColumnCount() - 1 };
this.dispatchEvent(new
qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED,
data), true);
}
return row;
};
qx.Proto.removeAll = function(rowIndex) {
// OR
// this.setData([]);
//
var len = this._rowArr.length || 0;
if (len === 0) {
return true;
}
do {
this._rowArr.pop();
len -= 1;
} while (len > 0);
var rowArr = this._rowArr;
if
(this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED)) {
var data = { firstRow:0, lastRow:rowArr.length - 1, firstColumn:0,
lastColumn:this.getColumnCount() - 1 };
this.dispatchEvent(new
qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED,
data), true);
}
this._clearSorting();
return true;
};
qx.Proto.updateRow = function(rowIndex, newRow) {
this._rowArr[rowIndex] = newRow;
if
(this.hasEventListeners(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED))
{
var data = { firstRow:rowIndex, lastRow:rowIndex, firstColumn:0,
lastColumn:this._rowArr[0].length };
this.dispatchEvent(new
qx.event.type.DataEvent(qx.ui.table.TableModel.EVENT_TYPE_DATA_CHANGED,
newRow), true);
}
this._clearSorting();
};
qx.Proto.findFirst = function(colIndex, value, ignoreCase) {
var len = this._rowArr.length;
if (len === 0) {
return -1;
}
var txtToCmp = value;
if (qx.util.Validation.isValidBoolean(ignoreCase) && ignoreCase ===
true) {
txtToCmp = txtToCmp.toLowerCase();
}
var i = 0;
do {
if (this._rowArr[i][colIndex] == txtToCmp) {
return i;
}
i += 1;
len -= 1;
} while (len > 0);
return -1;
};
qx.Proto.findLast = function(colIndex, value, ignoreCase) {
var len = this._rowArr.length;
if (len === 0) {
return -1;
}
var txtToCmp = value;
if (qx.util.Validation.isValidBoolean(ignoreCase) && ignoreCase ===
true) {
txtToCmp = txtToCmp.toLowerCase();
}
len -= 1;
do {
if (this._rowArr[len][colIndex] == txtToCmp) {
return len;
}
len -= 1;
} while (len >= 0);
return -1;
};
dperez wrote:
>
> Hi Alee,
>
> Maybe it would be interesting to add this functionality to
> SimpleTableModel, because nearly every user of this class needs to
> add/edit/modify data.
>
>
> Alee wrote:
>>
>> This solved the problem, but the thing is table will be having many rows
>> and there are 4-5 tables in a tab view, so dont you think this will turn
>> down performance. Also, I have subclassed the SimpleTableModel, because I
>> also added few more methods like ..
>>
>> addRow, DeleteRow, RemoveRow, updateRow. These could also be done without
>> sub-classing but IMHO sub-classing way kept the code more clean.
>>
>
>
--
View this message in context:
http://www.nabble.com/Table-UI-Updation-Problem-tf2175737.html#a6020872
Sent from the qooxdoo-devel forum at Nabble.com.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel