public class BaseView extends Composite implements MyBaseView, HasWidgets {
public interface BaseViewPresenter {
void onButton1Clicked(ClickEvent event);
... etc ...
}
... uibinder stuff...
... ui fields/elements of base view...
/* the panel containing the sub-view */
@UiField
FlowPanel contentPanel;
private BaseViewPresenter presenter;
...constructor...
@Override
public void add(Widget w) {
contentPanel.add(w);
}
@Override
public void clear() {
contentPanel.clear();
}
@Override
public Iterator<Widget> iterator() {
return contentPanel.iterator();
}
@Override
public boolean remove(Widget w) {
return contentPanel.remove(w);
}
}
The BaseView.ui.xml file has your buttons in the base view and of course the content panel, nothing exotic.
public class SubEditView extends Composite implements MySubView {
public interface MySubViewPresenter {
void onSave();
....
}
... uibinder stuff ...
... ui fields/elements of sub view, sub view presenter declaration...
/* the base view that wraps this sub view */
@UiField
BaseView baseView;
... constructor, class methods, click handlers delegating to presenter, etc ...
}
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:v="urn:import:com.example.app.client.ui">
<v:BaseView ui:field="baseView">
... sub view xml content here ...
</v:CatalogViewLayout>
</ui:UiBinder>