If you write a widget and that widget uses a button and that button has a 
default style defined in a BaseCssResource then you should use that 
BaseCssResource directly in your widget. You should not make your 
WidgetCssResource extend the BaseCssResource. Why? Because as soon as you 
do so, all the CSS rules of BaseCssResource will be duplicated (even if the 
BaseCssResource is annotated with @Shared, which will cause the issue you 
describe) and that is not what you want. Imagine you have 50 widgets and 
each of their CssResources extends the BaseCssResource. You would end up 
with 50 times the same base CSS code injected in your html page (either 
with the same CSS class names if you use @Shared on your BaseCssResource or 
with different CSS class names if not).

What you should do in all your widgets is:

<ui:with field="bundle" type="...." />

<ui:style>
  .redbutton { background-color:red; }
</ui:style>

<button class="{bundle.baseCss.button} {style.redbutton}">

And in your custom widget constructor you would do

public MyWidget() {
  bundle.baseCss().ensureInjected();
}

That way your base CSS is only injected once into your HTML page and all 
your widgets use these rules directly instead of duplicating them over and 
over again. It is also clear, just by looking at the xml/code, that the 
base CSS is shared by multiple widgets and that the <ui:style> CSS is only 
local to that single widget.


-- J.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to