Bom galera, depois de muuuuito pesquisar e nao conseguir nenhuma resposta q me ajudasse realmente, acho q consegui fazer o esquema com MVP e UiBinder.
aqui vai como fiz.
<!-- Hello World Componentes ->
<?xml version="1.0" encoding="UTF-8"?>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
</ui:style>
<g:HTMLPanel>
<g:FlowPanel>
<g:TextBox ui:field="txtBoxEntrada"></g:TextBox>
<g:Button ui:field="btnOk" text="Ok"></g:Button>
</g:FlowPanel>
<g:Label ui:field="labelHello"></g:Label>
</g:HTMLPanel>
</ui:UiBinder>
public class HelloWorldView extends Composite {
public interface Presenter{
void onEntradaEditada(String entrada);
}
@UiField
protected TextBox txtBoxEntrada;
@UiField
protected Button btnOk;
@UiField
protected Label labelHello;
private Presenter presenter;
private static PainelControlesUiBinder uiBinder = GWT.create(PainelControlesUiBinder.class);
@UiTemplate("HelloWorld.ui.xml")
interface PainelControlesUiBinder extends UiBinder<Widget, HelloWorldView>{}
public HelloWorldView(){
initWidget(uiBinder.createAndBindUi(this));
}
public void setPresenter(Presenter p){
this.presenter = p;
}
@UiHandler("btnOk")
public void onButtonOkClick(ClickEvent e){
fireEntradaEditada();
}
@UiHandler("txtBoxEntrada")
public void onEnterPressionado(KeyDownEvent e){
if(e.getNativeKeyCode() == KeyCodes.KEY_ENTER){
e.preventDefault();
fireEntradaEditada();
}
}
private void fireEntradaEditada(){
this.presenter.onEntradaEditada(txtBoxEntrada.getText());
}
public void setSaida(String texto){
labelHello.setText(texto);
}
public void setEntrada(String texto){
txtBoxEntrada.setText(texto);
}
}
public class HelloWorldPresenter implements HelloWorldView.Presenter {
private HelloWorldView view;
public HelloWorldPresenter(HelloWorldView view){
this.view = view;
this.view.setPresenter(this);
this.view.setEntrada("");
this.view.setSaida("Hello World");
}
@Override
public void onEntradaEditada(String entrada) {
this.view.setEntrada("");
if(!entrada.isEmpty()){
this.view.setSaida("Hello: " + entrada);
}
}
}