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

Reply via email to