Author: konstantin.mishin
Date: 2007-12-26 12:30:04 -0500 (Wed, 26 Dec 2007)
New Revision: 5018
Modified:
branches/3.1.x/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
branches/3.1.x/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
Log:
RF-989
Modified:
branches/3.1.x/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
===================================================================
---
branches/3.1.x/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java 2007-12-26
17:02:10 UTC (rev 5017)
+++
branches/3.1.x/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java 2007-12-26
17:30:04 UTC (rev 5018)
@@ -335,7 +335,7 @@
if (kid.isRendered()) {
if (kid instanceof Column){
- if(state.isFrozenColumn() && !frozenTRRendered){
+ if(state.isFrozenColumn() && !frozenTRRendered &&
state.getFrozenColumnCount() > 0){
state.setFrozenPart(true);
frozenTRRendered = true;
@@ -470,15 +470,15 @@
state.setFrozenPart(isFrozen);
state.setClientId(grid.getClientId(context));
- grid.walk(context, rowsRenderer, state);
-
- int fakeRowsCount = grid.getRows() - grid.getRowCount();
- state.setFake(true);
- for (int i = 0; i < fakeRowsCount; i++) {
- rowsRenderer.process(context, null, state);
+ if (!isFrozen || state.getFrozenColumnCount() > 0) {
+ grid.walk(context, rowsRenderer, state);
+ int fakeRowsCount = grid.getRows() - grid.getRowCount();
+ state.setFake(true);
+ for (int i = 0; i < fakeRowsCount; i++) {
+ rowsRenderer.process(context, null, state);
+ }
+ state.setFake(false);
}
-
- state.setFake(false);
state.setRowIndex(0);
grid.setRowKey(null);
}
@@ -500,8 +500,26 @@
state.setFrozenPart(isFrozen);
state.setClientId(grid.getClientId(context));
state.setSepOffset(new Integer(0));
-
- ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer, writer, state);
+ if (!isFrozen || state.getFrozenColumnCount() > 0) {
+ writer.startElement(HTML.TR_ELEMENT, grid);
+ getUtils().writeAttribute(
+ writer,
+ "class",
+ "dr-sdt-hr rich-std-header-row"
+ + grid.getAttributes().get("headerClass"));
+ ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer,
+ writer, state);
+ if (!isFrozen) {
+ writer.startElement(HTML.th_ELEM, grid);
+ getUtils().writeAttribute(writer, "class",
+ "dr-sdt-hc rich-sdt-header-cell");
+ writer.startElement(HTML.DIV_ELEM, grid);
+ getUtils().writeAttribute(writer, "class", "dr-sdt-hcbody");
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.th_ELEM);
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ }
}
public void renderCols(FacesContext context, UIScrollableDataTable grid, boolean
isFrozen) throws IOException{
Modified:
branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
===================================================================
---
branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js 2007-12-26
17:02:10 UTC (rev 5017)
+++
branches/3.1.x/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js 2007-12-26
17:30:04 UTC (rev 5018)
@@ -107,7 +107,8 @@
this.helpObj = new ClientUI.common.box.Box(this.frozenContentBox.getElement(), null,
true);
- var fcount = this.headerFrozenRow.getElement().rows[0].cells.length;
+ var rows = this.headerFrozenRow.getElement().rows
+ var fcount = rows.length?rows[0].cells.length:0;
var ncount = this.headerRow.getElement().rows[0].cells.length;
var columns = new Array(fcount + ncount);
var defaultWidth = 0;
@@ -118,11 +119,11 @@
// Get columns information
var i = 0, h, j=0, cell;
var cols = this.headerFrozenRow.getElement().getElementsByTagName("col");
- var cells = this.headerFrozenRow.getElement().rows[0].cells;
+ this.frozenCells = fcount?this.headerFrozenRow.getElement().rows[0].cells:[];
var ids = this.grid.options.ids;
- var count = cells.length;
+ var count = this.frozenCells.length;
for(i=0; i<count; i++) {
- cell = cells[i];
+ cell = this.cells[i];
columns[j] = {
columnId: ids[i],
col: cols[i],
@@ -165,10 +166,10 @@
}
cols = this.headerRow.getElement().getElementsByTagName("col");
- cells = this.headerRow.getElement().rows[0].cells;
- count = cells.length;
+ this.cells = this.headerRow.getElement().rows[0].cells;
+ count = this.cells.length;
for(i=0; i<count; i++) {
- cell = cells[i];
+ cell = this.cells[i];
columns[j] = {
columnId: ids[i],
@@ -238,19 +239,17 @@
},
agjustSeparators: function() {
var i=0;
- var fcells = this.headerFrozenRow.getElement().rows[0].cells;
- var ncells = this.headerRow.getElement().rows[0].cells;
- var length = fcells.length;
+ var length = this.frozenCells.length;
var delta = 4;
- if (ncells[0].offsetWidth == ncells[0].clientWidth) {
+ if (this.cells[0].offsetWidth == this.cells[0].clientWidth) {
delta--;
}
for(var j=0; j<length; i++,j++) {
- this._columns[i].sep.moveToX(fcells[j].offsetLeft + fcells[j].offsetWidth - delta);
+ this._columns[i].sep.moveToX(this.frozenCells[j].offsetLeft +
this.frozenCells[j].offsetWidth - delta);
}
- var length = ncells.length - 1;
+ var length = this.cells.length - 1;
for(var j=0; j<length; i++,j++) {
- this._columns[i].sep.moveToX(ncells[j].offsetLeft + ncells[j].offsetWidth - delta);
+ this._columns[i].sep.moveToX(this.cells[j].offsetLeft + this.cells[j].offsetWidth -
delta);
}
},
updateSize: function() {
Modified:
branches/3.1.x/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
===================================================================
---
branches/3.1.x/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx 2007-12-26
17:02:10 UTC (rev 5017)
+++
branches/3.1.x/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx 2007-12-26
17:30:04 UTC (rev 5018)
@@ -100,13 +100,11 @@
</jsp:scriptlet>
<thead>
- <tr class="dr-sdt-hr rich-std-header-row
#{component.attributes['headerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderHeaders(context, component, true);
- ]]>
- </jsp:scriptlet>
- </tr>
+ <jsp:scriptlet>
+ <![CDATA[
+ renderHeaders(context, component, true);
+ ]]>
+ </jsp:scriptlet>
</thead>
</table>
</span>
@@ -121,16 +119,11 @@
</jsp:scriptlet>
<col width="1"/>
<thead>
- <tr class="dr-sdt-hr rich-std-header-row
#{component.attributes['headerClass']}">
- <jsp:scriptlet>
- <![CDATA[
- renderHeaders(context, component, false);
- ]]>
- </jsp:scriptlet>
- <th class="dr-sdt-hc rich-sdt-header-cell">
- <div class="dr-sdt-hcbody" />
- </th>
- </tr>
+ <jsp:scriptlet>
+ <![CDATA[
+ renderHeaders(context, component, false);
+ ]]>
+ </jsp:scriptlet>
</thead>
</table>
</span>