com.extjs.gxt.ui.client.widget.Viewport.java Source code

Java tutorial

Introduction

Here is the source code for com.extjs.gxt.ui.client.widget.Viewport.java

Source

/*
 * Sencha GXT 2.3.1 - Sencha for GWT
 * Copyright(c) 2007-2013, Sencha, Inc.
 * licensing@sencha.com
 * 
 * http://www.sencha.com/products/gxt/license/
 */
package com.extjs.gxt.ui.client.widget;

import com.extjs.gxt.ui.client.GXT;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Window;

/**
 * A LayoutContainer that fills the browser window and monitors window resizing.
 * Viewports are best used for applications that will fill the browser without
 * window scrolling. Children of the viewport can allow scrolling.</p>
 * 
 * Code snippet:
 * 
 * <pre>
 * Viewport viewport = new Viewport();
 * viewport.add(new ContentPanel(), new MarginData(10));
 * RootPanel.get().add(viewport);
 * </pre>
 * 
 * <p/>
 * The viewport is not added to the root panel automatically. Is is not
 * necessary to call {@link #layout()} after adding the viewport to the
 * RootPanel. Layout will be called after being added to the root panel.
 * 
 * <dl>
 * <dt>Inherited Events:</dt>
 * <dd>LayoutContainer AfterLayout</dt>
 * <dd>ScrollContainer Scroll</dd>
 * <dd>Container BeforeAdd</dd>
 * <dd>Container Add</dd>
 * <dd>Container BeforeRemove</dd>
 * <dd>Container Remove</dd>
 * <dd>BoxComponent Move</dd>
 * <dd>BoxComponent Resize</dd>
 * <dd>Component Enable</dd>
 * <dd>Component Disable</dd>
 * <dd>Component BeforeHide</dd>
 * <dd>Component Hide</dd>
 * <dd>Component BeforeShow</dd>
 * <dd>Component Show</dd>
 * <dd>Component Attach</dd>
 * <dd>Component Detach</dd>
 * <dd>Component BeforeRender</dd>
 * <dd>Component Render</dd>
 * <dd>Component BrowserEvent</dd>
 * <dd>Component BeforeStateRestore</dd>
 * <dd>Component StateRestore</dd>
 * <dd>Component BeforeStateSave</dd>
 * <dd>Component SaveState</dd>
 * </dl>
 */
public class Viewport extends LayoutContainer {

    private String loadingPanelId = "loading";
    private boolean enableScroll;

    public Viewport() {
        monitorWindowResize = true;
        baseStyle = "x-viewport";
        getFocusSupport().setIgnore(false);
    }

    /**
     * Returns the window resizing state.
     * 
     * @return true if window scrolling is enabled
     */
    public boolean getEnableScroll() {
        return enableScroll;
    }

    /**
     * The loading panel id.
     * 
     * @return the id
     */
    public String getLoadingPanelId() {
        return loadingPanelId;
    }

    public void onAttach() {
        setEnableScroll(enableScroll);
        setSize(Window.getClientWidth(), Window.getClientHeight());
        super.onAttach();
        GXT.hideLoadingPanel(loadingPanelId);
    }

    /**
     * Sets whether window scrolling is enabled.
     * 
     * @param enableScroll the window scroll state
     */
    public void setEnableScroll(boolean enableScroll) {
        this.enableScroll = enableScroll;
        Window.enableScrolling(enableScroll);
    }

    /**
     * The element id of the loading panel which will be hidden when the viewport
     * is attached (defaults to 'loading').
     * 
     * @param loadingPanelId the loading panel element id
     */
    public void setLoadingPanelId(String loadingPanelId) {
        this.loadingPanelId = loadingPanelId;
    }

    @Override
    protected void onRender(Element parent, int index) {
        super.onRender(parent, 0);
    }

    @Override
    protected void onWindowResize(int width, int height) {
        setSize(width, height);
    }

}