01: /*
02: * GWT-Ext Widget Library
03: * Copyright(c) 2007-2008, GWT-Ext.
04: * licensing@gwt-ext.com
05: *
06: * http://www.gwt-ext.com/license
07: */
08: package com.gwtext.client.widgets;
09:
10: import com.google.gwt.core.client.JavaScriptObject;
11: import com.google.gwt.user.client.DeferredCommand;
12: import com.google.gwt.user.client.Command;
13: import com.google.gwt.user.client.Timer;
14: import com.google.gwt.user.client.ui.RootPanel;
15: import com.gwtext.client.widgets.layout.FitLayout;
16:
17: /**
18: * A specialized container representing the viewable application area (the browser viewport).
19: * <br>
20: * The Viewport renders itself to the document body, and automatically sizes itself to the size of the browser viewport and
21: * manages window resizing. There may only be one Viewport created in a page.
22: * <p>
23: * This class takes the "main" / top level panel passed in its constructor and "expands" it to fit the browsers viewable area.
24: *
25: * You must not add the "main" panel to GWT's RootPanel via RootPanel.get().add(..) when using the ViewPort class - this is done
26: * automatically for you.
27: */
28: public class Viewport {
29:
30: private JavaScriptObject jsObj;
31:
32: public Viewport() {
33: }
34:
35: /**
36: * Create a Viewport class.
37: *
38: * @param mainPanel the application's "main" / top level panel which can contain child panels and components.
39: */
40: public Viewport(Panel mainPanel) {
41:
42: final Panel viewportPanel = new Panel();
43: viewportPanel.setLayout(new FitLayout());
44: viewportPanel.add(mainPanel);
45:
46: jsObj = create(viewportPanel.getConfig());
47: doLayout();
48:
49: }
50:
51: /**
52: * Force this container's layout to be recalculated. A call to this function is required after adding a new component to an
53: * already rendered container. If you are not dynamically adding and removing components after render, this function will generally
54: * not need to be called.
55: */
56: public native void doLayout() /*-{
57: var container = this.@com.gwtext.client.widgets.Viewport::jsObj;
58: container.doLayout();
59: }-*/;
60:
61: protected native String getId(JavaScriptObject viewport) /*-{
62: return viewport.getId();
63: }-*/;
64:
65: protected native JavaScriptObject create(JavaScriptObject config) /*-{
66: return new $wnd.Ext.Viewport(config);
67: }-*/;
68: }
|