package com.gwt.mvp.client.presenter.loading;
import com.gwt.mvp.client.Display;
import com.gwt.mvp.client.EventBus;
import com.gwt.mvp.client.presenter.BasePresenter;
/**
* <code>LoadingPresenter</code> presnter implement mecanism for showing a loading panel.
* <p>
* From an idea original of David Chandler Blog @see http://turbomanage.wordpress.com/category/google-web-toolkit/
* </p>
*
* @author jguibert
* @author ibouakl
*/
public class LoadingPresenter extends BasePresenter<LoadingPresenter.LoadingDisplay> {
/**
* <code>LoadingDisplay</code> interface define methods to control hide/show mechanism.
*
* @author Jerome Guibert
*/
public interface LoadingDisplay extends Display {
/**
* Hide Loading display.
*/
void hide();
/**
* show Loading display.
*/
void show();
}
/**
* Build a new instance of <code>LoadingPresenter</code>.
*
* @param display
* @param eventBus
*/
public LoadingPresenter(LoadingDisplay display, EventBus eventBus) {
super(display, eventBus);
bind();
}
@Override
protected void onBind() {
registerHandler(this.eventBus.addHandler(LoadingEvent.TYPE, new LoadingEventHandler() {
@Override
public void onLoadingEvent(boolean isComplete) {
if (isComplete) {
display.hide();
} else {
display.show();
}
}
}));
}
@Override
protected void onUnbind() {
}
@Override
protected void onRevealDisplay() {
display.hide();
}
@Override
protected void onDisposeDisplay() {
}
}