package com.gwt.mvp.client.event;
import com.google.gwt.event.shared.GwtEvent;
import com.gwt.mvp.client.EventBus;
import com.gwt.mvp.client.Presenter;
/**
* Presenters can send this event to the {@link EventBus} to notify other
* interested parties when the presenter has been 'revealed' on the screen. This
* is particularly useful for situations where a presenter contains other
* presenters and wants needs to reveal itself when a child presenter is
* revealed.
*
*
* @author jguibert
* @author David Peterson
*/
public class PresenterRevealedEvent extends GwtEvent<PresenterRevealedHandler> {
public static final GwtEvent.Type<PresenterRevealedHandler> TYPE = new GwtEvent.Type<PresenterRevealedHandler>();
private final Presenter presenter;
private final boolean originator;
/**
* Constructs a new revelation event, specifying that it is the originator.
*
* @param presenter The presenter.
*/
public PresenterRevealedEvent(final Presenter presenter) {
this(presenter, true);
}
/**
* Constructs a new revelation event, with the specified 'originator'
* status.
*
* @param presenter The presenter that has been revealed.
* @param originator If <code>true</code>, the presenter is the originator of
* the revelation chain.
*/
public PresenterRevealedEvent(final Presenter presenter, final boolean originator) {
this.presenter = presenter;
this.originator = originator;
}
public Presenter getPresenter() {
return presenter;
}
/**
* Returns <code>true</code> if the presenter in this event originated the
* revelation, or <code>false</code> if it is a consequence of being
* revealed by a child presenter.
*
* @return <code>true</code> if the event was the originator.
*/
public boolean isOriginator() {
return originator;
}
@Override
protected void dispatch(final PresenterRevealedHandler handler) {
handler.onPresenterRevealed(this);
}
@Override
public GwtEvent.Type<PresenterRevealedHandler> getAssociatedType() {
return TYPE;
}
}