[richfaces-svn-commits] JBoss Rich Faces SVN: r5018 - in branches/3.1.x/ui/scrollableDataTable/src/main: javascript/ClientUI/controls/grid and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Dec 26 12:30:05 EST 2007


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>	




More information about the richfaces-svn-commits mailing list