Friday, May 10, 2013

CellBrowser in MVP

Hi, I using the gwt-sample-tab as a template. 

I want to add another tab with a cell browser. My presenter should get data from the database in the onBind method. ( or maybe onReset ) 

My problem is how to do this... if I instantiate the cellbrowser in the onBind method.. 

Builder<PrintProviderMock> builder = new Builder<PrintProviderMock>(model, null);
cellBrowser = builder.build();

I get a 
com.google.gwt.user.cellview.client.CellBrowser has no default (zero args) constructor. To fix this, you can define a @UiFactory method on the UiBinder's owner, or annotate a constructor of CellBrowser with @UiConstructor.

Sure, I need to create the cellbroser in the view... 
@Inject
public PrintProvidersView(PrintProvidersUiBinder uiBinder) {
final PrintProviderModel model = new PrintProviderModel();
Builder<PrintProviderMock> builder = new Builder<PrintProviderMock>(model, null);
cellBrowser = builder.build();
initWidget(uiBinder.createAndBindUi(this));
}

But how do I now update the model in the cellbrowser in the presenter ??? 


ui.xml
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
<ui:style>
</ui:style>
<g:HTMLPanel>
<div align="center">
<c:CellBrowser defaultColumnWidth='300' ui:field='cellBrowser' />
</div>
</g:HTMLPanel>
</ui:UiBinder> 

View
public class PrintProvidersView extends ViewImpl implements PrintProvidersPresenter.MyView {
interface PrintProvidersUiBinder extends UiBinder<Widget, PrintProvidersView> {
}

@UiField
CellBrowser cellBrowser;

@Inject
public PrintProvidersView(PrintProvidersUiBinder uiBinder) {
final PrintProviderModel model = new PrintProviderModel();
Builder<PrintProviderMock> builder = new Builder<PrintProviderMock>(model, null);
cellBrowser = builder.build();
initWidget(uiBinder.createAndBindUi(this));
}
public CellBrowser getCellBrowser() {
return cellBrowser;
}
}

Presenter
public class PrintProvidersPresenter extends Presenter<PrintProvidersPresenter.MyView, PrintProvidersPresenter.MyProxy> {

private final PrintProviderMockServiceAsync ppmockService = GWT.create(PrintProviderMockService.class);

public interface MyView extends View {
public CellBrowser getCellBrowser();
}


@ProxyCodeSplit
@NameToken("PrintProviders")
@TabInfo(container = ApplicationPresenter.class, label = "Print Providers", priority = 3)
public interface MyProxy extends TabContentProxyPlace<PrintProvidersPresenter> {
}

@Inject
public PrintProvidersPresenter(EventBus eventBus, MyView view, MyProxy proxy) {
super(eventBus, view, proxy);
}


@Override
protected void revealInParent() {
RevealContentEvent.fire(this, ApplicationPresenter.TYPE_SetTabContent, this);
}

@Override
protected void onBind() {
super.onBind();
                get data from database and update cellbrowser or if possible instantiate cellbrowser here without getting the error about  no default (zero args) constructor
}


@Override
protected void onReset() {
super.onReset();
}

}






--
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+unsubscribe@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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment