Set row attributes depending on current row value.
Change-Id: I00c94c9fad037048ce14b6b23f71fa4028576a74
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java b/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
index e1da850..f816056 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractCellTableBuilder.java
@@ -167,7 +167,8 @@
}
/**
- * Return if an element contains a cell. This may be faster to execute than {@link getColumn}.
+ * Return if an element contains a cell. This may be faster to execute than
+ * {@link #getColumn(Element)}.
*
* @param elem the element of interest
*/
@@ -239,6 +240,16 @@
* Start a row and return the {@link TableRowBuilder} for this row.
*/
public final TableRowBuilder startRow() {
+ return startRow(null);
+ }
+
+ /**
+ * Start a row and return the {@link TableRowBuilder} for this row. The row can be initialized
+ * according to its corresponding value.
+ *
+ * @param rowValue the value for the row corresponding to the element. Can be null.
+ */
+ public final TableRowBuilder startRow(T rowValue) {
// End any dangling rows.
while (tbody.getDepth() > 1) {
tbody.end();
@@ -254,7 +265,7 @@
TableRowBuilder row = tbody.startTR();
row.attribute(ROW_ATTRIBUTE, rowIndex);
row.attribute(SUBROW_ATTRIBUTE, subrowIndex);
- addRowAttributes(row);
+ addRowAttributes(row, rowValue);
subrowIndex++;
return row;
}
@@ -264,11 +275,24 @@
* The default does nothing.
*
* @param row the row element
+ *
+ * @see #addRowAttributes(TableRowBuilder, Object)
*/
protected void addRowAttributes(TableRowBuilder row) {
}
/**
+ * Hook for subclasses to add their own attributes to each row in the table.
+ * The default does nothing.
+ *
+ * @param row the row element
+ * @param rowValue the value for the row corresponding to the element. Can be null.
+ */
+ protected void addRowAttributes(TableRowBuilder row, T rowValue) {
+ addRowAttributes(row);
+ }
+
+ /**
* Build zero or more table rows for the specified row value.
*
* @param rowValue the value for the row to render
diff --git a/user/src/com/google/gwt/user/cellview/client/DefaultCellTableBuilder.java b/user/src/com/google/gwt/user/cellview/client/DefaultCellTableBuilder.java
index 8e09c8e..97e26ee 100644
--- a/user/src/com/google/gwt/user/cellview/client/DefaultCellTableBuilder.java
+++ b/user/src/com/google/gwt/user/cellview/client/DefaultCellTableBuilder.java
@@ -81,7 +81,7 @@
}
// Build the row.
- TableRowBuilder tr = startRow();
+ TableRowBuilder tr = startRow(rowValue);
tr.className(trClasses.toString());
// Build the columns.
diff --git a/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java b/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
index 1b74f13..96272b3 100644
--- a/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
+++ b/user/test/com/google/gwt/user/cellview/client/AbstractCellTableTestBase.java
@@ -114,13 +114,13 @@
@Override
public void buildRowImpl(String rowValue, int absRowIndex) {
builtRows.add(absRowIndex);
- TableRowBuilder tr = startRow();
+ TableRowBuilder tr = startRow(rowValue);
tr.endTR(); // End the tr.
tr.end(); // Accidentally end the table section.
// Try to start another row.
try {
- startRow();
+ startRow(rowValue);
fail("Expected IllegalStateException: tbody is already ended");
} catch (IllegalStateException e) {
// Expected.
@@ -149,7 +149,7 @@
// Add child rows to row five.
if (absRowIndex == 5) {
for (int i = 0; i < 4; i++) {
- TableRowBuilder tr = startRow();
+ TableRowBuilder tr = startRow(rowValue);
tr.startTD().colSpan(2).text("child " + i).endTD();
tr.endTR();
}
@@ -677,7 +677,7 @@
// Add some children.
for (int i = 0; i < 4; i++) {
- TableRowBuilder tr = startRow();
+ TableRowBuilder tr = startRow(rowValue);
tr.startTD().colSpan(2).text("child " + absRowIndex + ":" + i).endTD();
tr.endTR();
}