Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/main/java/net/customware/gwt/presenter/client/PresenterHiddenEvent.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/PresenterHiddenEvent.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/PresenterHiddenEvent.java (revision 0)
- @@ -0,0 +1,106 @@
- +/**
- + *
- + */
- +package net.customware.gwt.presenter.client;
- +
- +import com.google.gwt.event.shared.GwtEvent;
- +
- +/**
- + * Fired when a {@link Presenter} is hidden.
- + *
- + * @author James Crosetto
- + *
- + *
- + */
- +public class PresenterHiddenEvent extends GwtEvent<PresenterHiddenHandler> {
- +
- + private static GwtEvent.Type<PresenterHiddenHandler> TYPE = new GwtEvent.Type<PresenterHiddenHandler>();
- +
- + /**
- + * Fires a {@link PresenterHiddenEvent} into the {@link EventBus},
- + * specifying that it was the originator.
- + *
- + * @param eventBus
- + * The event bus.
- + * @param presenter
- + * The presenter.
- + */
- + public static void fire(EventBus eventBus, Presenter presenter) {
- + fire(eventBus, presenter, true);
- + }
- +
- + /**
- + * Fires the event into the provided {@link EventBus}.
- + *
- + * @param eventBus
- + * The event bus.
- + * @param presenter
- + * The presenter.
- + * @param originator
- + * If <code>true</code>, this presenter was the originator for
- + * the request.
- + */
- + public static void fire(EventBus eventBus, Presenter presenter,
- + boolean originator) {
- + eventBus.fireEvent(new PresenterHiddenEvent(presenter, originator));
- + }
- +
- + public static GwtEvent.Type<PresenterHiddenHandler> getType() {
- + return TYPE;
- + }
- +
- + private final boolean originator;
- +
- + private final Presenter presenter;
- +
- + /**
- + * Constructor specifying that the provided Presenter is the originator.
- + *
- + * @param presenter
- + * The presenter that has been hidden.
- + */
- + public PresenterHiddenEvent(Presenter presenter) {
- + this(presenter, true);
- + }
- +
- + /**
- + * Constructor with the specified Presenter and originator status.
- + *
- + * @param presenter
- + * The presenter that has been hidden.
- + * @param originator
- + * If <code>true</code>, the presenter is the originator of the
- + * hiding chain.
- + */
- + public PresenterHiddenEvent(Presenter presenter, boolean originator) {
- + this.presenter = presenter;
- + this.originator = originator;
- + }
- +
- + @Override
- + protected void dispatch(PresenterHiddenHandler handler) {
- + handler.onPresenterHidden(this);
- +
- + }
- +
- + @Override
- + public com.google.gwt.event.shared.GwtEvent.Type<PresenterHiddenHandler> getAssociatedType() {
- + return TYPE;
- + }
- +
- + public Presenter getPresenter() {
- + return presenter;
- + }
- +
- + /**
- + * Returns <code>true</code> if the presenter in this event originated the
- + * hiding, or <code>false</code> if it is a consequence of being hidden by a
- + * parent presenter.
- + *
- + * @return <code>true</code> if the event was the originator.
- + */
- + public boolean isOriginator() {
- + return originator;
- + }
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\PresenterHiddenEvent.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
- Index: src/main/java/net/customware/gwt/presenter/client/BasicPresenter.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/BasicPresenter.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/BasicPresenter.java (working copy)
- @@ -6,7 +6,7 @@
- public abstract class BasicPresenter<D extends Display> implements Presenter {
- - /**
- + /**
- * The display for the presenter.
- */
- protected final D display;
- @@ -19,6 +19,12 @@
- private List<HandlerRegistration> handlerRegistrations = new java.util.ArrayList<HandlerRegistration>();
- private boolean bound = false;
- +
- + /**
- + * True if the Presenter is currently revealed.
- + */
- +
- + private boolean revealed = false;
- public BasicPresenter( D display, EventBus eventBus ) {
- this.display = display;
- @@ -79,6 +85,15 @@
- public boolean isBound() {
- return bound;
- }
- +
- + /**
- + * Checks if the Presenter is currently revealed.
- + *
- + * @return The current revealed status.
- + */
- + public boolean isRevealed() {
- + return revealed;
- + }
- /**
- * Returns the display for the presenter.
- @@ -108,6 +123,46 @@
- protected void firePresenterRevealedEvent( boolean originator ) {
- PresenterRevealedEvent.fire( eventBus, this, originator );
- }
- +
- + /**
- + * Fires a {@link PresenterHiddenEvent} to the {@link EventBus}.
- + * Implementations should call this when the presenter has been hidden from
- + * the user.
- + *
- + * @param originator
- + * If set to true, this specifies that this presenter was the
- + * originator of the hiding request.
- + */
- + protected void firePresenterHiddenEvent(boolean originator) {
- + PresenterHiddenEvent.fire(eventBus, this, originator);
- + }
- +
- + /**
- + * Triggers a {@link PresenterHiddenEvent}. Subclasses should override this
- + * method and call <code>super.hideDisplay()</code> if they need to perform
- + * extra operations when being hidden.
- + */
- + public void hideDisplay() {
- + hideDisplay(true);
- + }
- +
- + public void hideDisplay(boolean originator){
- + onHideDisplay();
- + revealed = false;
- + firePresenterHiddenEvent(originator);
- + }
- +
- + /**
- + * Triggers a {@link PresenterRevealedEvent}. Subclasses should override
- + * this method and call <code>super.revealDisplay()</code> if they need to
- + * perform extra operations when being revealed.
- + * @param originator True if this Presenter is the originator of the PresenterRevealedEvent; false if it is being revealed because another Presenter is being revealed.
- + */
- + public void revealDisplay(boolean originator){
- + onRevealDisplay();
- + revealed = true;
- + firePresenterRevealedEvent( originator );
- + }
- /**
- * Triggers a {@link PresenterRevealedEvent}. Subclasses should override
- @@ -115,13 +170,17 @@
- * perform extra operations when being revealed.
- */
- public void revealDisplay() {
- - onRevealDisplay();
- - firePresenterRevealedEvent( true );
- + revealDisplay(true);
- }
- /**
- * Called before firing a {@link net.customware.gwt.presenter.client.PresenterRevealedEvent}.
- */
- protected abstract void onRevealDisplay();
- +
- + /**
- + * Called before firing a {@link PresenterHiddenEvent}.
- + */
- + protected abstract void onHideDisplay();
- }
- Index: src/main/java/net/customware/gwt/presenter/client/Presenter.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/Presenter.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/Presenter.java (working copy)
- @@ -23,6 +23,13 @@
- * @return <code>true</code> if bound.
- */
- boolean isBound();
- +
- + /**
- + * Checks if the Presenter is currently revealed.
- + *
- + * @return The current revealed status.
- + */
- + boolean isRevealed();
- /**
- * Returns the {@link Display} for the current presenter.
- @@ -30,6 +37,12 @@
- * @return The display.
- */
- Display getDisplay();
- +
- + /**
- + * Requests the presenter to hide the display on screen. It should
- + * automatically ask any child displays/presenters to hide themselves also.
- + */
- + void hideDisplay();
- /**
- * Requests the presenter to reveal the display on screen. It should
- Index: src/main/java/net/customware/gwt/presenter/client/widget/WidgetContainerPresenter.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/widget/WidgetContainerPresenter.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/widget/WidgetContainerPresenter.java (working copy)
- @@ -15,7 +15,7 @@
- */
- public abstract class WidgetContainerPresenter<T extends WidgetContainerDisplay> extends WidgetPresenter<T> {
- - private final List<WidgetPresenter<?>> presenters;
- + private final List<WidgetPresenter<?>> presenters;
- private WidgetPresenter<?> currentPresenter;
- @@ -72,10 +72,16 @@
- if ( event.getPresenter() instanceof WidgetPresenter ) {
- WidgetPresenter<?> presenter = (WidgetPresenter<?>) event.getPresenter();
- if ( presenters.contains( presenter ) ) {
- + if ((currentPresenter != null)
- + && (currentPresenter != presenter) && !event.isOriginator()) {
- + currentPresenter.hideDisplay();
- + }
- // Make this presenter the focus
- setCurrentPresenter( presenter );
- // Reveal ourselves so that the child will be revealed.
- - firePresenterRevealedEvent( false );
- + if (!isRevealed()) {
- + revealDisplay(false);
- + }
- }
- }
- }
- @@ -118,6 +124,16 @@
- protected int indexOf( WidgetPresenter<?> presenter ) {
- return presenters.indexOf( presenter );
- }
- +
- + /**
- + * Hides this Presenter's display.
- + */
- + @Override
- + protected void onHideDisplay() {
- + if (currentPresenter.isRevealed()) {
- + currentPresenter.hideDisplay();
- + }
- + }
- @Override
- protected void onRevealDisplay() {
- Index: src/main/java/net/customware/gwt/presenter/client/widget/WidgetPresenter.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/widget/WidgetPresenter.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/widget/WidgetPresenter.java (working copy)
- @@ -18,4 +18,14 @@
- public WidgetPresenter( D display, EventBus eventBus ) {
- super( display, eventBus );
- }
- +
- + /**
- + * Override if you need to do something when the Display is hidden.
- + * Since most WidgetPresenters won't need to do anything when their Display
- + * is hidden, this is a dummy method to remove having to implement it.
- + */
- + @Override
- + protected void onHideDisplay() {
- +
- + }
- }
- Index: src/main/java/net/customware/gwt/presenter/client/gin/ProvidedPresenterPlace.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/gin/ProvidedPresenterPlace.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/gin/ProvidedPresenterPlace.java (working copy)
- @@ -52,8 +52,9 @@
- * @param presenter The presenter.
- */
- @Override
- - protected void preparePresenter( PlaceRequest request, T presenter ) {
- + protected boolean preparePresenter( PlaceRequest request, T presenter ) {
- // Do nothing
- + return true;
- }
- /**
- Index: src/main/java/net/customware/gwt/presenter/client/place/HidePlaceHandler.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/HidePlaceHandler.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/place/HidePlaceHandler.java (revision 0)
- @@ -0,0 +1,24 @@
- +/**
- + *
- + */
- +package net.customware.gwt.presenter.client.place;
- +
- +import com.google.gwt.event.shared.EventHandler;
- +
- +/**
- + * Handler for a {@link HidePlaceEvent}.
- + *
- + * @author James Crosetto
- + *
- + */
- +public interface HidePlaceHandler extends EventHandler {
- +
- + /**
- + * Called when a {@link Place} needs to be hidden.
- + *
- + * @param event
- + * The event.
- + */
- + void onHidePlace(HidePlaceEvent event);
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\place\HidePlaceHandler.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
- Index: src/main/java/net/customware/gwt/presenter/client/place/Place.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/Place.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/place/Place.java (working copy)
- @@ -17,6 +17,8 @@
- * @author David Peterson
- */
- public abstract class Place {
- +private HandlerRegistration hidePlaceRegistration;
- +
- private HandlerRegistration placeRequestRegistration;
- public Place() {
- @@ -54,8 +56,15 @@
- * This method is called when a matching request is received.
- *
- * @param request The place request.
- + * @return True if the request was successfully handled; false if it was not.
- */
- - protected abstract void handleRequest( PlaceRequest request );
- + protected abstract boolean handleRequest( PlaceRequest request );
- +
- + /**
- + * This method is called when this Place is supposed to hide itself.
- + * @return True if the request was successfully handled; false if it was not.
- + */
- + protected abstract boolean handleHideRequest();
- /**
- * This method is checked before calling
- @@ -96,6 +105,11 @@
- protected abstract PlaceRequest prepareRequest( PlaceRequest request );
- protected abstract void reveal();
- +
- + /**
- + * Hides this Place.
- + */
- + protected abstract void hide();
- /**
- * This method is called if the place should register itself with the event bus. Only one
- @@ -109,11 +123,29 @@
- public void onPlaceRequest( PlaceRequestEvent event ) {
- PlaceRequest request = event.getRequest();
- if ( matchesRequest( request ) ) {
- - handleRequest( request );
- - eventBus.fireEvent( new PlaceRevealedEvent( Place.this ) );
- + if(handleRequest( request )){
- + eventBus.fireEvent( new PlaceRevealedEvent( Place.this ) );
- + }
- }
- }
- } );
- +
- + /*
- + * Register a handler for HidePlaceEvents.
- + */
- + hidePlaceRegistration = eventBus.addHandler(HidePlaceEvent.getType(),
- + new HidePlaceHandler() {
- +
- +
- + public void onHidePlace(HidePlaceEvent event) {
- + if (event.getPlaceName().equals(getName())) {
- + if(handleHideRequest()){
- + eventBus.fireEvent(new PlaceHiddenEvent(Place.this));
- + }
- + }
- +
- + }
- + });
- }
- /**
- @@ -127,5 +159,10 @@
- placeRequestRegistration.removeHandler();
- placeRequestRegistration = null;
- }
- +
- + if (hidePlaceRegistration != null) {
- + hidePlaceRegistration.removeHandler();
- + hidePlaceRegistration = null;
- + }
- }
- }
- Index: src/main/java/net/customware/gwt/presenter/client/place/BasicPresenterPlace.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/BasicPresenterPlace.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/place/BasicPresenterPlace.java (working copy)
- @@ -27,8 +27,9 @@
- * Does nothing by default.
- */
- @Override
- - protected void preparePresenter( PlaceRequest request, T presenter ) {
- + protected boolean preparePresenter( PlaceRequest request, T presenter ) {
- // Do nothing.
- + return true;
- }
- /**
- Index: src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenHandler.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenHandler.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenHandler.java (revision 0)
- @@ -0,0 +1,21 @@
- +/**
- + *
- + */
- +package net.customware.gwt.presenter.client.place;
- +
- +import com.google.gwt.event.shared.EventHandler;
- +
- +/**
- + * Handler for a {@link PlaceHiddenEvent}.
- + * @author James Crosetto
- + *
- + */
- +public interface PlaceHiddenHandler extends EventHandler {
- +
- + /**
- + * Called when a Place has been hidden from the user.
- + * @param event The event.
- + */
- + void onPlaceHidden(PlaceHiddenEvent event);
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\place\PlaceHiddenHandler.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
- Index: src/main/java/net/customware/gwt/presenter/client/place/DefaultPlaceManager.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/DefaultPlaceManager.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/place/DefaultPlaceManager.java (working copy)
- @@ -9,120 +9,169 @@
- import java.util.Map;
- public abstract class DefaultPlaceManager implements PlaceManager {
- - private class PlaceEventHandler implements ValueChangeHandler<String>, PlaceRevealedHandler,
- - PlaceChangedHandler {
- + private class PlaceEventHandler implements ValueChangeHandler<String>,
- + PlaceRevealedHandler, PlaceChangedHandler {
- +
- + public void onPlaceRevealed(PlaceRevealedEvent event) {
- + updateHistory(event.getPlace());
- +
- + currentPlace = event.getPlace();
- +
- + /*
- + * ADDED for HidePlaceEvent. Only need to hide a Place when one is
- + * revealed.
- + */
- + hidePreviousPlace(event.getPlace().getName());
- + }
- +
- + public void onPlaceChanged(PlaceChangedEvent event) {
- + Place place = event.getPlace();
- + try {
- + if (place.matchesRequest(tokenFormatter.toPlaceRequest(History
- + .getToken()))) {
- + // Only update if the change comes from a place that matches
- + // the current location.
- + updateHistory(event.getPlace());
- + }
- + } catch (TokenFormatException e) {
- + // Do nothing...
- + }
- + }
- +
- + /**
- + * Handles change events from {@link History}.
- + */
- + public void onValueChange(ValueChangeEvent<String> event) {
- + try {
- + PlaceRequestEvent.fire(eventBus, tokenFormatter
- + .toPlaceRequest(event.getValue()), true);
- + } catch (TokenFormatException e) {
- + e.printStackTrace();
- + }
- + }
- +
- + }
- - public void onPlaceRevealed( PlaceRevealedEvent event ) {
- - updateHistory( event.getPlace() );
- - }
- + private final EventBus eventBus;
- - public void onPlaceChanged( PlaceChangedEvent event ) {
- - Place place = event.getPlace();
- - try {
- - if ( place.matchesRequest( tokenFormatter.toPlaceRequest( History.getToken() ) ) ) {
- - // Only update if the change comes from a place that matches
- - // the current location.
- - updateHistory( event.getPlace() );
- - }
- - } catch ( TokenFormatException e ) {
- - // Do nothing...
- - }
- - }
- + private Place currentPlace = null;
- - /**
- - * Handles change events from {@link History}.
- - */
- - public void onValueChange( ValueChangeEvent<String> event ) {
- - try {
- - PlaceRequestEvent.fire( eventBus, tokenFormatter.toPlaceRequest( event.getValue() ), true );
- - } catch ( TokenFormatException e ) {
- - e.printStackTrace();
- - }
- - }
- + /**
- + * ADDED for HidePlaceEvent. The name of the last place shown.
- + */
- + private String lastPlaceName = null;
- - }
- + private final TokenFormatter tokenFormatter;
- - private final EventBus eventBus;
- + private final Map<Class<? extends Place>, Place> placeMap;
- - private final TokenFormatter tokenFormatter;
- + public DefaultPlaceManager(EventBus eventBus, TokenFormatter tokenFormatter) {
- + this(eventBus, tokenFormatter, (Place[]) null);
- + }
- - private final Map<Class<? extends Place>, Place> placeMap;
- + public DefaultPlaceManager(EventBus eventBus,
- + TokenFormatter tokenFormatter, Place... places) {
- + this.eventBus = eventBus;
- + this.tokenFormatter = tokenFormatter;
- - public DefaultPlaceManager( EventBus eventBus, TokenFormatter tokenFormatter ) {
- - this( eventBus, tokenFormatter, (Place[]) null );
- - }
- + PlaceEventHandler handler = new PlaceEventHandler();
- - public DefaultPlaceManager( EventBus eventBus, TokenFormatter tokenFormatter, Place... places ) {
- - this.eventBus = eventBus;
- - this.tokenFormatter = tokenFormatter;
- + // Register ourselves with the History API.
- + History.addValueChangeHandler(handler);
- - PlaceEventHandler handler = new PlaceEventHandler();
- + // Listen for manual place change events.
- + eventBus.addHandler(PlaceChangedEvent.getType(), handler);
- - // Register ourselves with the History API.
- - History.addValueChangeHandler( handler );
- + // Listen for place revelation requests.
- + eventBus.addHandler(PlaceRevealedEvent.getType(), handler);
- - // Listen for manual place change events.
- - eventBus.addHandler( PlaceChangedEvent.getType(), handler );
- + placeMap = new HashMap<Class<? extends Place>, Place>();
- - // Listen for place revelation requests.
- - eventBus.addHandler( PlaceRevealedEvent.getType(), handler );
- + if (places != null) {
- + for (Place place : places) {
- + registerPlace(place);
- + }
- + }
- + }
- - placeMap = new HashMap<Class<? extends Place>, Place>();
- + /**
- + * Gets the current Place that is revealed.
- + *
- + * @return the currentPlace
- + */
- + public Place getCurrentPlace() {
- - if ( places != null ) {
- - for ( Place place : places ) {
- - registerPlace( place );
- - }
- - }
- - }
- + return currentPlace;
- + }
- - public boolean registerPlace( Place place ) {
- - if ( !placeMap.containsKey( place.getClass() ) ) {
- - place.addHandlers( eventBus );
- - placeMap.put( place.getClass(), place );
- - return true;
- - }
- - return false;
- - }
- + public boolean registerPlace(Place place) {
- + if (!placeMap.containsKey(place.getClass())) {
- + place.addHandlers(eventBus);
- + placeMap.put(place.getClass(), place);
- + return true;
- + }
- + return false;
- + }
- - public boolean deregisterPlace( Place place ) {
- - if ( !placeMap.containsKey( place.getClass() ) ) {
- - place.removeHandlers( eventBus );
- - placeMap.remove( place.getClass() );
- - return true;
- - }
- - return false;
- - }
- + public boolean deregisterPlace(Place place) {
- + if (!placeMap.containsKey(place.getClass())) {
- + place.removeHandlers(eventBus);
- + placeMap.remove(place.getClass());
- + return true;
- + }
- + return false;
- + }
- - private void updateHistory( Place place ) {
- - updateHistory( place.createRequest() );
- - }
- + private void updateHistory(Place place) {
- + updateHistory(place.createRequest());
- + }
- - // Updates History if it has changed, without firing another
- - // 'ValueChangeEvent'.
- - private void updateHistory( PlaceRequest request ) {
- - try {
- - String requestToken = tokenFormatter.toHistoryToken( request );
- - String historyToken = History.getToken();
- - if ( historyToken == null || !historyToken.equals( requestToken ) )
- - History.newItem( requestToken, false );
- - } catch ( TokenFormatException e ) {
- - // Do nothing.
- - }
- - }
- + // Updates History if it has changed, without firing another
- + // 'ValueChangeEvent'.
- + private void updateHistory(PlaceRequest request) {
- + try {
- + String requestToken = tokenFormatter.toHistoryToken(request);
- + String historyToken = History.getToken();
- + if (historyToken == null || !historyToken.equals(requestToken))
- + History.newItem(requestToken, false);
- + } catch (TokenFormatException e) {
- + // Do nothing.
- + }
- + }
- - /**
- - * Fires a {@link PlaceRequestEvent} with the current history token, if
- - * present. If no history token is set, <code>false</code> is returned.
- - *
- - * @return <code>true</code>
- - */
- - public boolean fireCurrentPlace() {
- + /**
- + * Fires a {@link PlaceRequestEvent} with the current history token, if
- + * present. If no history token is set, <code>false</code> is returned.
- + *
- + * @return <code>true</code>
- + */
- + public boolean fireCurrentPlace() {
- String current = History.getToken();
- - if ( current != null && current.trim().length() > 0 ) {
- - History.fireCurrentHistoryState();
- - return true;
- - }
- - return false;
- - }
- + if (current != null && current.trim().length() > 0) {
- + History.fireCurrentHistoryState();
- + return true;
- + }
- + return false;
- + }
- +
- + /**
- + * ADDED for HidePlaceEvent. Only fires a HidePlaceEvent if the newPlaceName
- + * is different from {@link #lastPlaceName}.
- + *
- + * @param newPlaceName
- + * The name of the Place being revealed.
- + */
- + private void hidePreviousPlace(String newPlaceName) {
- +
- + if (lastPlaceName == null) {
- +
- + lastPlaceName = newPlaceName;
- + } else if (!lastPlaceName.equals(newPlaceName)) {
- +
- + HidePlaceEvent.fire(eventBus, lastPlaceName);
- +
- + lastPlaceName = newPlaceName;
- + }
- +
- + }
- }
- Index: src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenEvent.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenEvent.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/place/PlaceHiddenEvent.java (revision 0)
- @@ -0,0 +1,54 @@
- +package net.customware.gwt.presenter.client.place;
- +
- +import net.customware.gwt.presenter.client.EventBus;
- +
- +import com.google.gwt.event.shared.GwtEvent;
- +
- +/**
- + * Fired when a Place is hidden.
- + *
- + * @author James Crosetto
- + *
- + */
- +public class PlaceHiddenEvent extends GwtEvent<PlaceHiddenHandler> {
- +
- + private static GwtEvent.Type<PlaceHiddenHandler> TYPE = new GwtEvent.Type<PlaceHiddenHandler>();
- +
- + /**
- + * Call this method to fire place hidden events.
- + *
- + * @param eventBus
- + * The eventBus.
- + * @param place
- + * The place.
- + */
- + public static void fire(EventBus eventBus, Place place) {
- + eventBus.fireEvent(new PlaceHiddenEvent(place));
- + }
- +
- + public static GwtEvent.Type<PlaceHiddenHandler> getType() {
- + return TYPE;
- + }
- +
- + private final Place place;
- +
- + public PlaceHiddenEvent(Place place) {
- + this.place = place;
- + }
- +
- + @Override
- + protected void dispatch(PlaceHiddenHandler handler) {
- + handler.onPlaceHidden(this);
- +
- + }
- +
- + @Override
- + public com.google.gwt.event.shared.GwtEvent.Type<PlaceHiddenHandler> getAssociatedType() {
- + return TYPE;
- + }
- +
- + public Place getPlace() {
- + return place;
- + }
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\place\PlaceHiddenEvent.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
- Index: src/main/java/net/customware/gwt/presenter/client/place/HidePlaceEvent.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/HidePlaceEvent.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/place/HidePlaceEvent.java (revision 0)
- @@ -0,0 +1,68 @@
- +/**
- + *
- + */
- +package net.customware.gwt.presenter.client.place;
- +
- +import net.customware.gwt.presenter.client.EventBus;
- +
- +import com.google.gwt.event.shared.GwtEvent;
- +
- +/**
- + * Event fired when a {@link Place} needs to be hidden.
- + *
- + * @author James Crosetto
- + *
- + */
- +public class HidePlaceEvent extends GwtEvent<HidePlaceHandler> {
- +
- + private static GwtEvent.Type<HidePlaceHandler> TYPE = new GwtEvent.Type<HidePlaceHandler>();
- +
- + /**
- + * Call this method to fire place hidden events.
- + *
- + * @param eventBus
- + * The eventBus.
- + * @param place
- + * The place.
- + */
- + public static void fire(EventBus eventBus, String placeName) {
- + eventBus.fireEvent(new HidePlaceEvent(placeName));
- + }
- +
- + public static GwtEvent.Type<HidePlaceHandler> getType() {
- + return TYPE;
- + }
- +
- + private final String placeName;
- +
- + /**
- + * Constructor.
- + *
- + * @param placeName
- + * The name of the {@link Place} that needs to be hidden.
- + */
- + public HidePlaceEvent(String placeName) {
- + this.placeName = placeName;
- + }
- +
- + @Override
- + protected void dispatch(HidePlaceHandler handler) {
- + handler.onHidePlace(this);
- +
- + }
- +
- + @Override
- + public com.google.gwt.event.shared.GwtEvent.Type<HidePlaceHandler> getAssociatedType() {
- + return TYPE;
- + }
- +
- + /**
- + * Returns the name of the Place that needs to be hidden.
- + *
- + * @return the placeName The name of the Place to be hidden.
- + */
- + public String getPlaceName() {
- + return placeName;
- + }
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\place\HidePlaceEvent.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
- Index: src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java (revision 74)
- +++ src/main/java/net/customware/gwt/presenter/client/place/PresenterPlace.java (working copy)
- @@ -21,6 +21,15 @@
- public abstract T getPresenter();
- /**
- + * Calls {@link Presenter#hideDisplay()} for this Place's Presenter.
- + */
- + @Override
- + public void hide() {
- +
- + getPresenter().hideDisplay();
- + }
- +
- + /**
- * Calls the {@link Presenter#revealDisplay()} method for the place's
- * presenter.
- */
- @@ -34,11 +43,26 @@
- * any custom handling.
- */
- @Override
- - protected void handleRequest( PlaceRequest request ) {
- - T presenter = getPresenter();
- - preparePresenter( request, presenter );
- + protected boolean handleRequest(PlaceRequest request) {
- +
- + T presenter = getPresenter();
- + if(preparePresenter(request, presenter)){
- presenter.revealDisplay();
- + return true;
- + }else{
- + return false;
- + }
- }
- +
- + /* (non-Javadoc)
- + * @see net.customware.gwt.presenter.client.place.Place#handleHideRequest()
- + */
- + @Override
- + protected boolean handleHideRequest() {
- +
- + getPresenter().hideDisplay();
- + return true;
- + }
- /**
- * This method is called on matching place requests before the presenter is
- @@ -47,8 +71,10 @@
- *
- * @param request The request.
- * @param presenter The presenter.
- + * @return True if the presenter was successfully prepared with the given request;
- + * false if it was unable to prepare the presenter with the given request.
- */
- - protected abstract void preparePresenter( PlaceRequest request, T presenter );
- + protected abstract boolean preparePresenter( PlaceRequest request, T presenter );
- @Override
- protected PlaceRequest prepareRequest( PlaceRequest request ) {
- @@ -100,7 +126,7 @@
- }
- @Override
- - protected void addHandlers( final EventBus eventBus ) {
- + public void addHandlers( final EventBus eventBus ) {
- super.addHandlers( eventBus );
- presenterChangedRegistration = eventBus.addHandler( PresenterChangedEvent.getType(), new PresenterChangedHandler() {
- @@ -129,7 +155,7 @@
- }
- @Override
- - protected void removeHandlers( EventBus eventBus ) {
- + public void removeHandlers( EventBus eventBus ) {
- super.removeHandlers( eventBus );
- if ( presenterChangedRegistration != null ) {
- Index: src/main/java/net/customware/gwt/presenter/client/PresenterHiddenHandler.java
- ===================================================================
- --- src/main/java/net/customware/gwt/presenter/client/PresenterHiddenHandler.java (revision 0)
- +++ src/main/java/net/customware/gwt/presenter/client/PresenterHiddenHandler.java (revision 0)
- @@ -0,0 +1,24 @@
- +/**
- + *
- + */
- +package net.customware.gwt.presenter.client;
- +
- +import com.google.gwt.event.shared.EventHandler;
- +
- +/**
- + * Handler for a {@link PresenterHiddenEvent}.
- + *
- + * @author James Crosetto
- + *
- + */
- +public interface PresenterHiddenHandler extends EventHandler {
- +
- + /**
- + * Called when a {@link Presenter} has been hidden from the user.
- + *
- + * @param event
- + * The event.
- + */
- + void onPresenterHidden(PresenterHiddenEvent event);
- +
- +}
- Property changes on: src\main\java\net\customware\gwt\presenter\client\PresenterHiddenHandler.java
- ___________________________________________________________________
- Added: svn:mime-type
- + text/plain
Advertisement
Add Comment
Please, Sign In to add comment