com.google.gwt.gwtpages.client.page.impl.UiBoundPage.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.gwtpages.client.page.impl.UiBoundPage.java

Source

package com.google.gwt.gwtpages.client.page.impl;

import com.google.gwt.gwtpages.client.PageRequestSession;
import com.google.gwt.gwtpages.client.Pages;
import com.google.gwt.gwtpages.client.page.AsyncPageCallback;
import com.google.gwt.gwtpages.client.page.Page;
import com.google.gwt.gwtpages.client.page.parameters.PageParameters;
import com.google.gwt.gwtpages.client.ui.HandlerRegistrationCache;
import com.google.gwt.user.client.ui.Widget;

/**
 * Convenience base class for pages which are not following the MVP pattern.
 * This extends Composite and is handy for use with the UiBinder.
 * 
 * @author Joe Hudson
 * 
 */
public abstract class UiBoundPage<WidgetToCreate extends Widget> implements Page {

    protected Pages pages;
    protected WidgetToCreate widget;
    private HandlerRegistrationCache handlerCache;

    /**
     * This method is call after the page and ui widget have been created and
     * the widget has been set on this page
     * 
     * @param widget
     *            the widget implementation
     */
    protected abstract void onConstruct(WidgetToCreate view);

    public void onEnterPage(PageParameters parameters, PageRequestSession session, AsyncPageCallback callback) {
    }

    public void onExitPage() {
    }

    public void init(Pages pages) {
        this.pages = pages;
    }

    public void destroy(Pages pages) {
        this.pages = null;
        if (null != handlerCache)
            handlerCache.unbind();
    }

    public Widget asWidget() {
        throw new RuntimeException("You must use GWT.create(...) to create '" + getClass().getName() + "'");
    }

    protected void bindHandlers() {
    }

    protected HandlerRegistrationCache getHandlerCache() {
        if (null == handlerCache)
            handlerCache = createHandlerCache();
        return handlerCache;
    }

    protected HandlerRegistrationCache createHandlerCache() {
        return new HandlerRegistrationCache();
    }
}