How to add a gwt widget to a gwt Composite already visible at runtime using MVP?

Posted by mary4pfc on Stack Overflow See other posts from Stack Overflow or by mary4pfc
Published on 2010-05-04T11:50:58Z Indexed on 2010/05/04 20:28 UTC
Read the original article Hit count: 220

Filed under:
|

Hi! I'm building an application whose menus depend on user roles. Once user is logged in and, therefore, her roles are known, I want to create the Hyperlinks related to the user and add them to the menu. I'm using MVP. Here's my code for the presenter:

public class AdminMenuAreaPresenter extends WidgetPresenter<AdminMenuAreaPresenter.Display>
{

    public interface Display extends WidgetDisplay{

        public void addLink(String link);


    }

    private DispatchAsync dispatcher;

    private SessionManager sessionManager;

    @Inject
    public AdminMenuAreaPresenter(AdminMenuAreaPresenter.Display display, EventBus bus, DispatchAsync dispatcher, SessionManager sessionManager){
        super(display, bus);
        this.dispatcher = dispatcher;
        this.sessionManager = sessionManager;
        this.bind();
    }

    @Override
    protected void onBind() {
        super.onBind();
        registerHandler(eventBus.addHandler(LoginEvent.TYPE,
 new LoginEventHandler() {

            @Override
            public void onLogin(LoginEvent event) {
                display.addLink("register user");
            }
        }));

    }

        @Override
    protected void onUnbind() {
        // TODO Auto-generated method stub

    }


    @Override
    protected void onRevealDisplay() {
        // TODO Auto-generated method stub

    }

}

And here's the View:

public class AdminMenuAreaView extends Composite implements AdminMenuAreaPresenter.Display{


    private VerticalPanel vPanel;
    private Hyperlink registerUserLink;

    public AdminMenuAreaView(){ 
        vPanel = new VerticalPanel();           
        initWidget(vPanel);
    }

    @Override
    public Widget asWidget() {
        return this;
    }

        public void addLink(String s){

    registerUserLink = new Hyperlink(s, "this is new target");
    this.vPanel.add(registerUserLink);
    registerUserLink.setVisible(true);  
}

public HasClickHandlers getRegisterUserLink(){
    return registerUserLink;
}

What am I doing wrong? Flow program goes throgh the addLink() method, but nothing is added to the view either dom document.

Thank you.

© Stack Overflow or respective owner

Related posts about gwt

Related posts about mvp