package com.googlecode.gwt.test.uibinder; import com.google.gwt.uibinder.client.UiChild; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; import java.util.ArrayList; import java.util.List; public class WidgetWithUiChild extends Composite { private final List<Widget> customWidgets; private final List<Label> labels; public WidgetWithUiChild() { initWidget(new FlowPanel()); labels = new ArrayList<Label>(); customWidgets = new ArrayList<Widget>(); } public int customWidgetCount() { return customWidgets.size(); } public Widget getCustomChild(int index) { return customWidgets.get(index); } public Label getLabel(int index) { FlowPanel flowPanel = (FlowPanel) this.getWidget(); return (Label) flowPanel.getWidget(index); } public int labelCount() { return labels.size(); } @UiChild void addMyUiLabel(Label l) { FlowPanel flowPanel = (FlowPanel) this.getWidget(); flowPanel.add(l); labels.add(l); } @UiChild(tagname = "customChild", limit = 1) void uiCustomChild(Widget w) { FlowPanel flowPanel = (FlowPanel) this.getWidget(); flowPanel.add(w); customWidgets.add(w); } }