Reviewers: pdr,
Description:
Fixing a bug in CellTree where we always pass null as the key for the
rendered object instead of passing the key.
Please review this at http://gwt-code-reviews.appspot.com/1070801/show
Affected files:
M user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
M
user/test/com/google/gwt/user/cellview/client/AbstractCellTreeTestBase.java
Index: user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
===================================================================
--- user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
(revision 9169)
+++ user/src/com/google/gwt/user/cellview/client/CellTreeNodeView.java
(working copy)
@@ -186,7 +186,7 @@
}
// Render cell contents
SafeHtmlBuilder cellBuilder = new SafeHtmlBuilder();
- cell.render(value, null, cellBuilder);
+ cell.render(value, key, cellBuilder);
SafeHtml innerDiv = template.innerDiv(paddingDirection,
imageWidth,
innerClasses.toString(), image, itemValueStyle,
Index:
user/test/com/google/gwt/user/cellview/client/AbstractCellTreeTestBase.java
===================================================================
---
user/test/com/google/gwt/user/cellview/client/AbstractCellTreeTestBase.java
(revision 9169)
+++
user/test/com/google/gwt/user/cellview/client/AbstractCellTreeTestBase.java
(working copy)
@@ -22,9 +22,11 @@
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.view.client.AbstractDataProvider;
import com.google.gwt.view.client.ListDataProvider;
+import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.TreeViewModel;
import java.util.ArrayList;
@@ -192,6 +194,48 @@
}
/**
+ * Test that the correct values are sent to the Cell to be rendered.
+ */
+ public void testRenderWithKeyProvider() {
+ // Create a cell that verifies the render args.
+ final List<String> rendered = new ArrayList<String>();
+ final Cell<String> cell = new TextCell() {
+ @Override
+ public void render(String data, Object key, SafeHtmlBuilder sb) {
+ assertEquals("render() called more than once", 0, rendered.size());
+ rendered.add(data);
+
+ assertEquals("the value", data);
+ assertEquals("the key", key);
+ }
+ };
+
+ // Create a model with only one level, and one value at that level.
+ TreeViewModel model = new TreeViewModel() {
+ public NodeInfo<?> getNodeInfo(Object value) {
+ // The key provider always returns the same key.
+ ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
+ public Object getKey(String item) {
+ return "the key";
+ }
+ };
+ ListDataProvider<String> dataProvider = new
ListDataProvider<String>(
+ keyProvider);
+ dataProvider.getList().add("the value");
+ return new DefaultNodeInfo<String>(dataProvider, cell);
+ }
+
+ public boolean isLeaf(Object value) {
+ return value != null;
+ }
+ };
+
+ // Create a tree.
+ new CellTree(model, null);
+ assertEquals("Cell#render() never called", 1, rendered.size());
+ }
+
+ /**
* Test that opening a sibling node works.
*/
public void testOpenSiblingNode() {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors