Replace SafeHtmlTemplates with ElementBuilder in RenderablePanel git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10460 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/Composite.java b/user/src/com/google/gwt/user/client/ui/Composite.java index 779755a..ab1f714 100644 --- a/user/src/com/google/gwt/user/client/ui/Composite.java +++ b/user/src/com/google/gwt/user/client/ui/Composite.java
@@ -15,12 +15,12 @@ */ package com.google.gwt.user.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.builder.shared.HtmlBuilderFactory; +import com.google.gwt.dom.builder.shared.HtmlSpanBuilder; import com.google.gwt.dom.client.Element; -import com.google.gwt.safehtml.client.SafeHtmlTemplates; +import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; -import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; @@ -43,13 +43,6 @@ */ public abstract class Composite extends Widget implements IsRenderable { - interface HTMLTemplates extends SafeHtmlTemplates { - @Template("<span id=\"{0}\"></span>") - SafeHtml renderWithId(String id); - } - private static final HTMLTemplates TEMPLATE = - GWT.create(HTMLTemplates.class); - private Widget widget; private IsRenderable renderable; @@ -104,14 +97,14 @@ } @Override - @SuppressWarnings("deprecation") public final void render(RenderableStamper stamper, SafeHtmlBuilder builder) { if (renderable != null) { renderable.render(stamper, builder); } else { - // TODO(rdcastro): Investigate whether SafeHtml or ElementBuilder stamping should be used - // to avoid any performance regressions. - builder.append(TEMPLATE.renderWithId(stamper.getToken())); + HtmlSpanBuilder spanBuilder = HtmlBuilderFactory.get() + .createSpanBuilder(); + stamper.stamp(spanBuilder).end(); + builder.append(spanBuilder.asSafeHtml()); } }
diff --git a/user/src/com/google/gwt/user/client/ui/RenderablePanel.java b/user/src/com/google/gwt/user/client/ui/RenderablePanel.java index d3c8857..6e3b216 100644 --- a/user/src/com/google/gwt/user/client/ui/RenderablePanel.java +++ b/user/src/com/google/gwt/user/client/ui/RenderablePanel.java
@@ -15,10 +15,10 @@ */ package com.google.gwt.user.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.builder.shared.HtmlDivBuilder; +import com.google.gwt.dom.builder.shared.HtmlBuilderFactory; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; -import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.user.client.Command; @@ -38,16 +38,6 @@ private static String TAG_NAME = "div"; - interface HTMLTemplates extends SafeHtmlTemplates { - @Template("<div id=\"{0}\">{1}</div>") - SafeHtml renderWithId(String id, SafeHtml innerHtml); - - @Template("<div id=\"{0}\" class=\"{1}\">{2}</div>") - SafeHtml renderWithIdAndClass(String id, String styleName, SafeHtml innerHtml); - } - private static final HTMLTemplates TEMPLATE = - GWT.create(HTMLTemplates.class); - private static void ensureHiddenDiv() { // If it's already been created, don't do anything. if (hiddenDiv != null) { @@ -193,19 +183,19 @@ } @Override - @SuppressWarnings("deprecation") public void render(RenderableStamper stamper, SafeHtmlBuilder builder) { String styleName = getStyleName(); - // TODO(rdcastro): Investigate whether SafeHtml or ElementBuilder stamping should be used here - // to avoid any performance regressions. - String id = stamper.getToken(); + HtmlDivBuilder divBuilder = HtmlBuilderFactory.get() + .createDivBuilder(); if (styleName != null) { - builder.append(TEMPLATE.renderWithIdAndClass(id, styleName, getInnerHtml())); + divBuilder.className(styleName); styleName = null; - } else { - builder.append(TEMPLATE.renderWithId(id, getInnerHtml())); } + stamper.stamp(divBuilder); + divBuilder.html(getInnerHtml()).end(); + + builder.append(divBuilder.asSafeHtml()); } @Override
diff --git a/user/src/com/google/gwt/user/client/ui/RenderableStamper.java b/user/src/com/google/gwt/user/client/ui/RenderableStamper.java index d16516c..3393271 100644 --- a/user/src/com/google/gwt/user/client/ui/RenderableStamper.java +++ b/user/src/com/google/gwt/user/client/ui/RenderableStamper.java
@@ -15,7 +15,7 @@ */ package com.google.gwt.user.client.ui; -import com.google.gwt.dom.builder.shared.ElementBuilderBase; +import com.google.gwt.dom.builder.shared.HtmlElementBuilderBase; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.safehtml.shared.SafeHtml; @@ -55,15 +55,6 @@ } /** - * Exposes the token used for stamping {@link IsRenderable} objects. - * @deprecated This method is born deprecated, and should not be used in new code. - */ - @Deprecated - public String getToken() { - return token; - } - - /** * Stamps an HTML element in such a way that it can be later found in the DOM tree. * To be used by {@link IsRenderable} objects built using {@link SafeHtml} directly, this assumes * the element to be stamped is the first found in the given {@link SafeHtml}. @@ -94,7 +85,12 @@ * To be used by {@link IsRenderable} objects built using ElementBuilder, this assumes * the given elementBuilder is for the root element that should later be claimed. */ - public void stamp(ElementBuilderBase<?> elementBuilder) { + public <T extends HtmlElementBuilderBase<?>> T stamp(T elementBuilder) { elementBuilder.id(token); + return elementBuilder; + } + + private String getToken() { + return token; } }