I uploaded a patch to rietveld for issue 5998 but until now I did not see it 
appear in the GWT-Contributors newsgroup ...
Is that normal ? What did I do wrong ?
 
Anyway, here is a copy of the message in question. If anybody wants to 
review this and hopefully commit it then I would be a happy man. I need this 
fix for a project that I am working on (involving using SafeHtml to bulk 
render my gui based on XML/Schemas). It really flies, but without this patch 
I can not wrap the Image widgets correctly.
 
Reviewers: jlabanca, rjrjr,

Description:
See:
http://code.google.com/p/google-web-toolkit/issues/detail?id=5998

This <http://code.google.com/p/google-web-toolkit/issues/detail?id=5998This>is 
my first patch, so sorry if I did something wrong.
I added a unittest on Image that checks if a subclass can now implement
a wrap method.

Please review this at http://gwt-code-reviews.appspot.com/1370804/

Affected <http://gwt-code-reviews.appspot.com/1370804/Affected> files:
 user/src/com/google/gwt/user/client/ui/Image.java
 user/test/com/google/gwt/user/client/ui/ImageTest.java


Index: user/test/com/google/gwt/user/client/ui/ImageTest.java
===================================================================
--- user/test/com/google/gwt/user/client/ui/ImageTest.java      (revision 
9789)
+++ user/test/com/google/gwt/user/client/ui/ImageTest.java      (working 
copy)
@@ -18,6 +18,7 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ErrorEvent;
 import com.google.gwt.event.dom.client.ErrorHandler;
 import com.google.gwt.event.dom.client.LoadEvent;
@@ -50,6 +51,25 @@
    }
  }

+  private static class TestImage extends Image {
+    public TestImage( Element element ) {
+      super(element);
+    }
+
+    public static TestImage wrap( Element element ) {
+      // Assert that the element is attached.
+      assert Document.get().getBody().isOrHasChild(element);
+
+      TestImage image = new TestImage(element);
+
+      // Mark it attached and remember it for cleanup.
+      image.onAttach();
+      RootPanel.detachOnWindowClose(image);
+
+      return image;
+    }
+  }
+
  private abstract static class TestLoadHandler implements LoadHandler {
    private boolean finished = false;

@@ -581,7 +601,21 @@
    assertEquals(16, image.getHeight());
    assertEquals("clipped", getCurrentImageStateName(image));
  }
+
+  /**
+   * Tests that it is possible to make a subclass of Image that can be 
wrapped.
+   */
+  public void testWrapOfSubclass() {
+    String uid = Document.get().createUniqueId();
+    DivElement div = Document.get().createDivElement();
+    div.setInnerHTML("<img id='" + uid + "' src='counting-forward.png'>");
+    Document.get().getBody().appendChild(div);

+    final TestImage image = 
TestImage.wrap(Document.get().getElementById(uid));
+
+    assertNotNull(image);
+  }
+
  private void assertResourceWorked(Image image, ImageResource prettyPiccy) 
{
    assertEquals(prettyPiccy.getURL(), image.getUrl());
    assertEquals(prettyPiccy.getTop(), image.getOriginTop());
Index: user/src/com/google/gwt/user/client/ui/Image.java
===================================================================
--- user/src/com/google/gwt/user/client/ui/Image.java   (revision 9789)
+++ user/src/com/google/gwt/user/client/ui/Image.java   (working copy)
@@ -409,8 +409,6 @@
    assert Document.get().getBody().isOrHasChild(element);

    Image image = new Image(element);
-    image.changeState(new UnclippedState(element));
-
    // Mark it attached and remember it for cleanup.
    image.onAttach();
    RootPanel.detachOnWindowClose(image);
@@ -481,6 +479,7 @@
  protected Image(Element element) {
    ImageElement.as(element);
    setElement(element);
+    changeState(new UnclippedState(element));
  }

  public HandlerRegistration addClickHandler(ClickHandler handler) {

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to