if (cols > 0) {
for (int j = 0; j < cols; j++) {
if (isColumnCollapsed(colids[j])) {
continue;
}
Property p = null;
Object value = "";
boolean isGenerated = columnGenerators
.containsKey(colids[j]);
if (!isGenerated) {
p = getContainerProperty(id, colids[j]);
}
// check in current pageBuffer already has row
int index = firstIndex + i;
if (p != null || isGenerated) {
if (index < firstIndexNotInCache
&& index >= pageBufferFirstIndex) {
// we have data already in our cache,
// recycle it instead of fetching it via
// getValue/getPropertyValue
int indexInOldBuffer = index
- pageBufferFirstIndex;
value = pageBuffer[CELL_FIRSTCOL + j][indexInOldBuffer];
if (!isGenerated && iscomponent[j]
|| !(value instanceof Component)) {
listenProperty(p, oldListenedProperties);
}
} else {
if (isGenerated) {
ColumnGenerator cg = columnGenerators
.get(colids[j]);
value = cg
.generateCell(this, id, colids[j]);
} else if (iscomponent[j]) {
value = p.getValue();
listenProperty(p, oldListenedProperties);
} else if (p != null) {
value = getPropertyValue(id, colids[j], p);
/*
* If returned value is Component (via