Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GWT: use the same UI template for multiple pages?

how can I use the same UI template (*.ui.xml file) with multiple Java objects extending from Composite?

I need to build several pages that should display basically the same information with the same layout, but on one page some fields will be editable, and on a different page other fields will be editable. I would like to specify layout only once in ui.xml, and create different behaviors in different *.java classes.

Eclipse is giving me a syntax error "FirstAppUI.ui.xml is missing" on

@UiTemplate("Template.ui.xml")
public class FirstAppUI extends Composite {
  interface FirstAppUIUiBinder extends
          UiBinder<Widget, FirstAppUI> {
  }
}

thanks! jane prusakova

like image 249
jprusakova Avatar asked Feb 28 '23 05:02

jprusakova


1 Answers

I think you need to place the @UiTemplate annotation on the Binder, not on the Composite class

This code works for me:

public class TestUiBinder extends Composite {

  @UiTemplate("SomeTemplate.ui.xml")
  interface TestUiBinderUiBinder extends UiBinder<Widget, TestUiBinder> {}
  private static TestUiBinderUiBinder uiBinder = GWT.create(TestUiBinderUiBinder.class);

  public TestUiBinder() {
    initWidget(uiBinder.createAndBindUi(this));
  }
}

public class AnotherTestUiBinder extends Composite {

  @UiTemplate("SomeTemplate.ui.xml")
  interface TestUiBinderUiBinder extends UiBinder<Widget, AnotherTestUiBinder> {}
  private static TestUiBinderUiBinder uiBinder = GWT.create(TestUiBinderUiBinder.class);

  public AnotherTestUiBinder() {
    initWidget(uiBinder.createAndBindUi(this));
  }
}

This seems somewhat similar to the solution for applying different templates to the same widget.

like image 136
Jason Hall Avatar answered Mar 08 '23 16:03

Jason Hall