All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sksamuel.jqm4gwt.JQMPageEvent Maven / Gradle / Ivy

package com.sksamuel.jqm4gwt;

import com.google.gwt.event.logical.shared.HasAttachHandlers;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;

public class JQMPageEvent extends GwtEvent {

    public interface Handler extends EventHandler {
        void onInit(JQMPageEvent event);
        void onBeforeShow(JQMPageEvent event);
        void onBeforeHide(JQMPageEvent event);
        void onShow(JQMPageEvent event);
        void onHide(JQMPageEvent event);
    }

    public static class DefaultHandler implements Handler {
        @Override
        public void onInit(JQMPageEvent event) {
        }

        @Override
        public void onBeforeShow(JQMPageEvent event) {
        }

        @Override
        public void onBeforeHide(JQMPageEvent event) {
        }

        @Override
        public void onShow(JQMPageEvent event) {
        }

        @Override
        public void onHide(JQMPageEvent event) {
        }
    }

    static Type TYPE;

    /**
     * Fires an {@link JQMPageEvent} on all registered handlers in the handler source.
     *
     * @param  The handler source type
     * @param source - the source of the handlers
     */
    public static  void fire(S source, PageState pageState,
            JQMPage prevPage, JQMPage nextPage) {
      if (TYPE != null) {
        JQMPageEvent event = new JQMPageEvent(pageState, prevPage, nextPage);
        source.fireEvent(event);
      }
    }

    public static Type getType() {
      if (TYPE == null) {
        TYPE = new Type();
      }
      return TYPE;
    }

    public enum PageState { INIT, BEFORE_SHOW, SHOW, BEFORE_HIDE, HIDE }

    private final PageState pageState;

    private final JQMPage prevPage;
    private final JQMPage nextPage;

    protected JQMPageEvent(PageState pageState, JQMPage prevPage, JQMPage nextPage) {
        this.pageState = pageState;
        this.prevPage = prevPage;
        this.nextPage = nextPage;
    }

    public PageState getPageState() {
        return pageState;
    }

    /**
     * When HIDE - current page to be hidden. 
* When SHOW - previous page we are transitioning from. **/ public JQMPage getPrevPage() { return prevPage; } /** * When HIDE - next page to be shown.
* When SHOW - current page we are transitioning to. **/ public JQMPage getNextPage() { return nextPage; } @Override public final Type getAssociatedType() { return TYPE; } @Override public String toDebugString() { assertLive(); String s = super.toDebugString() + " pageState = " + pageState; s += "; prevPage = " + (prevPage != null ? prevPage.getId() : "null"); s += "; nextPage = " + (nextPage != null ? nextPage.getId() : "null"); return s; } @Override protected void dispatch(JQMPageEvent.Handler handler) { switch (pageState) { case INIT: handler.onInit(this); break; case BEFORE_HIDE: handler.onBeforeHide(this); break; case HIDE: handler.onHide(this); break; case BEFORE_SHOW: handler.onBeforeShow(this); break; case SHOW: handler.onShow(this); break; } } }