package de.tud.kom.socom.web.client.profile;
import com.google.gwt.user.client.ui.RootPanel;
import de.tud.kom.socom.web.client.AppController;
import de.tud.kom.socom.web.client.baseelements.AbstractMainPresenter;
import de.tud.kom.socom.web.client.baseelements.ViewWithErrorsInterface;
import de.tud.kom.socom.web.client.eventhandler.LoginEventHandler;
import de.tud.kom.socom.web.client.events.LoginErrorNetworkUserNotFoundEvent;
import de.tud.kom.socom.web.client.events.LoginErrorWrongUserIDPasswortEvent;
import de.tud.kom.socom.web.client.events.LoginEvent;
import de.tud.kom.socom.web.client.events.LogoutEvent;
public class ProfilePresenter extends AbstractMainPresenter implements LoginEventHandler {
public interface ProfileViewInterface extends ViewWithErrorsInterface
{
}
// FIXME this class is only a skeleton..not finished YET + it's View as well
private static ProfilePresenter instance;
private ProfileViewInterface view;
private ProfilePresenter(AppController appController)
{
super(appController);
appController.getEventHandler().addHandler(LoginEvent.TYPE, this);
}
public static ProfilePresenter getInstance(AppController appController)
{
if (instance == null) instance = new ProfilePresenter(appController);
return instance;
}
@Override
public void init()
{
this.view = new ProfileView(this);
setView(view);
}
@Override
public void go(RootPanel targetPanel)
{
// dirty hack for backwards stuff
init(); // redoing it with correct userId
setTargetPanel(targetPanel);
}
private void refresh() {
// only do this if we are visible and attached and try to do it with AbstractPresenter methods
if (this.view!=null && getTargetPanel() != null && getTargetPanel().getWidgetIndex(this.view.asWidget()) >= 0)
{
getTargetPanel().remove(view.asWidget());
}
go(getTargetPanel());
}
@Override
public void onLoginSuccessEvent(LoginEvent event) {
if(view.asWidget().isAttached())
refresh();
}
@Override
public void onLogoutEvent(LogoutEvent event) {
if(view.asWidget().isAttached())
refresh();
}
@Override
public void onLoginNetworkSuccessEvent(LoginEvent event) {
if(view.asWidget().isAttached())
refresh();
}
@Override
public void onLoginErrorNetworkUserNotFound(
LoginErrorNetworkUserNotFoundEvent loginErrorNetworkUserNotFound) {
// ignore
}
@Override
public void onLoginErrorWrongUserIDPasswortEvent(
LoginErrorWrongUserIDPasswortEvent loginErrorWrongUserIDPasswortEvent) {
// ignore
}
}