I have setup a global ClientBundle for my app that contains a global
CssResource. I want the global CssResource to make available certain
constants (such as colors, font sizes, and so forth) so those style
definitions may easily be reused elsewhere in my application - as
dependent styles, if you will.

Below are several code files illustrating what I'm trying to do:

>> Global.java

public interface Global extends ClientBundle {

  public interface Style extends CssResource {
    String getLightColor();
    String getDarkColor();
  }

  @Source("global.css")
  Style style();

}

<<


>> global.css

@def darkColor #333333;
@def lightColor #CCCCCC;

<<


>> MyEntryPoint.java

public class MyEntryPoint implements EntryPoint {

  public void onModuleLoad() {
    GWT.<Global> create(Global.class).style().ensureInjected();
    RootPanelLayout.get().add(new MyWidget());
  }

}

<<


>> MyWidget.java

public class MyWidget extends Composite {

  interface Binder extends UiBinder<Widget, MyWidget> {}
  private static Binder binder = GWT.create(Binder.class);

  public MyWidget() {
    initWidget(binder.createAndBind(this));
  }

}

<<


>> MyWidget.ui.xml

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
  xmlns:g="urn:import:com.google.gwt.user.client.ui">

  <ui:with field="global" type="Global" />

  <ui:style>
    @def DARK value('global.style.darkColor');

    .myStyle {
      background-color: value('global.style.darkColor'); /* method 1:
this doesn't work */
    }
    .foo {
      background-color: DARK; /* method 2: this doesn't work either */
    }
  </ui:style>

  <g:HTML styleName="{style.myStyle}">
    <span class="{style.foo}" style="color:
{global.style.lightColor};">Method 3: This text is colored properly
when using the inline style attribute.</span>
  </g:HTML>

</ui:UiBinder>

<<



Does anyone have a suggestion as to how I could use the colors defined
in Global.Style in other contexts, such as UiBinder *.ui.xml layouts?

With methods 1 or 2 above, I get a compiler error as follows:
00:38:55.817 [ERROR] Could not find no-arg method named global in type
MyWidget_BinderImpl_GenBundle

Clearly the generators can find the styles I'm interested in, since
method 3 does work, albeit incredibly cumbersome...

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

Reply via email to