com.google.gwt.gwtpages.demo.client.pages.LayoutsPage.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.gwtpages.demo.client.pages.LayoutsPage.java

Source

package com.google.gwt.gwtpages.demo.client.pages;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.gwtpages.client.GotoPageCommand;
import com.google.gwt.gwtpages.client.PageRequestSession;
import com.google.gwt.gwtpages.client.Pages;
import com.google.gwt.gwtpages.client.applicationpresenter.CompositeLayoutApplicationPresenter;
import com.google.gwt.gwtpages.client.page.AsyncPageCallback;
import com.google.gwt.gwtpages.client.page.LoadedPageContainer;
import com.google.gwt.gwtpages.client.page.impl.UiBoundPage;
import com.google.gwt.gwtpages.client.page.parameters.PageParameters;
import com.google.gwt.gwtpages.demo.client.GWT_Pages_Demo;
import com.google.gwt.gwtpages.demo.client.components.SourceLinkPanel;
import com.google.gwt.gwtpages.demo.client.components.SourceReferencePanel;
import com.google.gwt.gwtpages.demo.client.pages.layout.DefaultLayoutPage;
import com.google.gwt.gwtpages.demo.client.pages.layout.NoLayoutPage;
import com.google.gwt.gwtpages.demo.client.pages.layout.RightNavLayoutPage;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.inject.Inject;

public class LayoutsPage extends UiBoundPage<FlowPanel> implements ClickHandler {

    @Inject
    Pages pages;

    @UiField
    SimplePanel sourceRef;
    @UiField
    Anchor standardLayout;
    @UiField
    Anchor noLayout;

    @Override
    public void onConstruct(FlowPanel widget) {
        sourceRef.add(new SourceReferencePanel(new SourceLinkPanel(LayoutsPage.class),
                new SourceLinkPanel(GWT_Pages_Demo.class, false),
                new SourceLinkPanel(CompositeLayoutApplicationPresenter.class, false),
                new SourceLinkPanel(DefaultLayoutPage.class), new SourceLinkPanel(NoLayoutPage.class),
                new SourceLinkPanel(RightNavLayoutPage.class)));
        standardLayout.addClickHandler(this);
        noLayout.addClickHandler(this);
    }

    /**
     * The application presenters are defined in the composite application presenter {@link GWT_Pages_Demo} 
     */
    private void showStandardLayout() {
        GotoPageCommand cmd = pages.gotoPage(PageConstants.PAGE_LAYOUTS);
        cmd.getSession().put(CompositeLayoutApplicationPresenter.PRESENTER_TOKEN_KEY, PageConstants.LAYOUT_DEFAULT);
        cmd.execute();
    }

    /**
     * The application presenters are defined in the composite application presenter {@link GWT_Pages_Demo} 
     */
    private void showNoLayout() {
        // you can also use an Oracle to determine the layout.  You really wouldn't have the need to use
        // it here but could use it for your page loader if you didn't want to register a static presenter
        // token - We'll do it here as an example
        GotoPageCommand cmd = pages.gotoPage(PageConstants.PAGE_LAYOUTS);
        cmd.getSession().put(CompositeLayoutApplicationPresenter.TokenProvider.class,
                new CompositeLayoutApplicationPresenter.TokenProvider() {

                    @Override
                    public String getPresenterToken(LoadedPageContainer page, PageParameters parameters,
                            PageRequestSession session) {
                        return PageConstants.LAYOUT_NONE;
                    }
                });
        cmd.execute();
    }

    @Override
    public void onEnterPage(PageParameters parameters, PageRequestSession pageRequestData,
            AsyncPageCallback callback) {
    }

    @Override
    public void onExitPage() {
    }

    @Override
    public void onClick(ClickEvent event) {
        if (event.getSource().equals(standardLayout)) {
            showStandardLayout();
        } else if (event.getSource().equals(noLayout)) {
            showNoLayout();
        }
    }
}