public class ActivityManager extends java.lang.Object implements PlaceChangeEvent.Handler, PlaceChangeRequestEvent.Handler
Activity
objects that should be kicked off in response to
PlaceChangeEvent
events. Each activity can start itself
asynchronously, and provides a widget to be shown when it's ready to run.Constructor and Description |
---|
ActivityManager(ActivityMapper mapper,
EventBus eventBus)
Create an ActivityManager.
|
Modifier and Type | Method and Description |
---|---|
EventBus |
getActiveEventBus()
Returns an event bus which is in use by the currently running activity.
|
void |
onPlaceChange(PlaceChangeEvent event)
Deactivate the current activity, find the next one from our ActivityMapper,
and start it.
|
void |
onPlaceChangeRequest(PlaceChangeRequestEvent event)
Reject the place change if the current activity is not willing to stop.
|
void |
setDisplay(AcceptsOneWidget display)
Sets the display for the receiver, and has the side effect of starting or
stopping its monitoring the event bus for place change events.
|
public ActivityManager(ActivityMapper mapper, EventBus eventBus)
setDisplay(com.google.gwt.user.client.ui.AcceptsOneWidget)
.mapper
- finds the Activity
for a given
Place
eventBus
- source of PlaceChangeEvent
and
PlaceChangeRequestEvent
events.public EventBus getActiveEventBus()
Any handlers attached to the returned event bus will be de-registered when the current activity is stopped.
public void onPlaceChange(PlaceChangeEvent event)
The current activity's widget will be hidden immediately, which can cause flicker if the next activity provides its widget asynchronously. That can be minimized by decent caching. Perenially slow activities might mitigate this by providing a widget immediately, with some kind of "loading" treatment.
onPlaceChange
in interface PlaceChangeEvent.Handler
event
- the PlaceChangeEvent
public void onPlaceChangeRequest(PlaceChangeRequestEvent event)
onPlaceChangeRequest
in interface PlaceChangeRequestEvent.Handler
event
- the PlaceChangeRequestEvent
PlaceChangeRequestEvent.Handler.onPlaceChangeRequest(PlaceChangeRequestEvent)
public void setDisplay(AcceptsOneWidget display)
If you are disposing of an ActivityManager, it is important to call setDisplay(null) to get it to deregister from the event bus, so that it can be garbage collected.
display
- an instance of AcceptsOneWidget