How to add a gwt widget to a gwt Composite already visible at runtime using MVP?
- by mary4pfc
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.