Revision: 10662
Author: pengzhu...@google.com
Date: Wed Sep 21 06:39:41 2011
Log: Add a support for header builder to return row index for multi-row
header/footer.
Review at http://gwt-code-reviews.appspot.com/1555803
Review by: jlaba...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=10662
Modified:
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractHeaderOrFooterBuilder.java
/trunk/user/src/com/google/gwt/user/cellview/client/FooterBuilder.java
/trunk/user/src/com/google/gwt/user/cellview/client/HeaderBuilder.java
=======================================
---
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
Tue Sep 20 12:53:34 2011
+++
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
Wed Sep 21 06:39:41 2011
@@ -1745,7 +1745,9 @@
isHeader ? headerBuilder.getHeader(headerParent) :
footerBuilder
.getHeader(footerParent);
if (header != null && cellConsumesEventType(header.getCell(),
eventType)) {
- Context context = new Context(0, col, header.getKey());
+ int headerIndex = isHeader ?
headerBuilder.getRowIndex(targetTableRow) :
+ footerBuilder.getRowIndex(targetTableRow);
+ Context context = new Context(headerIndex, col, header.getKey());
header.onBrowserEvent(context, headerParent, event);
}
}
=======================================
---
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractHeaderOrFooterBuilder.java
Wed Aug 31 03:58:11 2011
+++
/trunk/user/src/com/google/gwt/user/cellview/client/AbstractHeaderOrFooterBuilder.java
Wed Sep 21 06:39:41 2011
@@ -27,6 +27,7 @@
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.Position;
import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.dom.client.TableRowElement;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtml;
@@ -81,6 +82,11 @@
* The attribute used to indicate that an element contains a header.
*/
private static final String HEADER_ATTRIBUTE = "__gwt_header";
+
+ /**
+ * The attribute used to specify the row index of a TR element in the
header.
+ */
+ private static final String ROW_ATTRIBUTE = "__gwt_header_row";
private static final int ICON_PADDING = 6;
@@ -93,6 +99,7 @@
private SafeHtml sortDescIconHtml;
private final int sortDescIconWidth;
private final AbstractCellTable<T> table;
+ private int rowIndex;
// The following fields are reset on every build.
private HtmlTableSectionBuilder section;
@@ -163,6 +170,11 @@
return (headerId == null) ? null : idToHeaderMap.getValue(headerId);
}
+ @Override
+ public int getRowIndex(TableRowElement row) {
+ return Integer.parseInt(row.getAttribute(ROW_ATTRIBUTE));
+ }
+
/**
* Check if this builder is building a header or footer table.
*
@@ -348,6 +360,8 @@
// Start the next row.
TableRowBuilder row = section.startTR();
+ row.attribute(ROW_ATTRIBUTE, rowIndex);
+ rowIndex++;
return row;
}
@@ -358,6 +372,7 @@
.createTHeadBuilder();
idToHeaderMap.clear();
idToColumnMap.clear();
+ rowIndex = 0;
// Build the header.
if (!buildHeaderOrFooterImpl()) {
=======================================
--- /trunk/user/src/com/google/gwt/user/cellview/client/FooterBuilder.java
Wed Aug 31 03:58:11 2011
+++ /trunk/user/src/com/google/gwt/user/cellview/client/FooterBuilder.java
Wed Sep 21 06:39:41 2011
@@ -17,6 +17,7 @@
import com.google.gwt.dom.builder.shared.TableSectionBuilder;
import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.TableRowElement;
/**
* Builds the DOM elements for the footer section of a CellTable. It also
@@ -78,6 +79,15 @@
*/
Header<?> getHeader(Element elem);
+ /**
+ * Get the row index from the associated
+ * {@link TableRowElement} (an TR element).
+ *
+ * @param row the row element
+ * @return the row value index
+ */
+ int getRowIndex(TableRowElement row);
+
/**
* Check if an element contains a {@link Column}. This method should
return
* false if and only if {@link #getColumn(Element)} would return null.
=======================================
--- /trunk/user/src/com/google/gwt/user/cellview/client/HeaderBuilder.java
Wed Aug 31 03:58:11 2011
+++ /trunk/user/src/com/google/gwt/user/cellview/client/HeaderBuilder.java
Wed Sep 21 06:39:41 2011
@@ -17,6 +17,7 @@
import com.google.gwt.dom.builder.shared.TableSectionBuilder;
import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.TableRowElement;
/**
* Builds the DOM elements for the header section of a CellTable. It also
@@ -78,6 +79,15 @@
*/
Header<?> getHeader(Element elem);
+ /**
+ * Get the row index from the associated
+ * {@link TableRowElement} (an TR element).
+ *
+ * @param row the row element
+ * @return the row value index
+ */
+ int getRowIndex(TableRowElement row);
+
/**
* Check if an element contains a {@link Column}. This method should
return
* false if and only if {@link #getColumn(Element)} would return null.
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors