Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / src / widgets / layout / FitLayout.js
diff --git a/src/widgets/layout/FitLayout.js b/src/widgets/layout/FitLayout.js
new file mode 100644 (file)
index 0000000..190afac
--- /dev/null
@@ -0,0 +1,48 @@
+/*!
+ * Ext JS Library 3.0.0
+ * Copyright(c) 2006-2009 Ext JS, LLC
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/**\r
+ * @class Ext.layout.FitLayout\r
+ * @extends Ext.layout.ContainerLayout\r
+ * <p>This is a base class for layouts that contain <b>a single item</b> that automatically expands to fill the layout's\r
+ * container.  This class is intended to be extended or created via the <tt>layout:'fit'</tt> {@link Ext.Container#layout}\r
+ * config, and should generally not need to be created directly via the new keyword.</p>\r
+ * <p>FitLayout does not have any direct config options (other than inherited ones).  To fit a panel to a container\r
+ * using FitLayout, simply set layout:'fit' on the container and add a single panel to it.  If the container has\r
+ * multiple panels, only the first one will be displayed.  Example usage:</p>\r
+ * <pre><code>\r
+var p = new Ext.Panel({\r
+    title: 'Fit Layout',\r
+    layout:'fit',\r
+    items: {\r
+        title: 'Inner Panel',\r
+        html: '&lt;p&gt;This is the inner panel content&lt;/p&gt;',\r
+        border: false\r
+    }\r
+});\r
+</code></pre>\r
+ */\r
+Ext.layout.FitLayout = Ext.extend(Ext.layout.ContainerLayout, {\r
+    // private\r
+    monitorResize:true,\r
+\r
+    // private\r
+    onLayout : function(ct, target){\r
+        Ext.layout.FitLayout.superclass.onLayout.call(this, ct, target);\r
+        if(!this.container.collapsed){\r
+            var sz = (Ext.isIE6 && Ext.isStrict && target.dom == document.body) ? target.getViewSize() : target.getStyleSize();\r
+            this.setItemSize(this.activeItem || ct.items.itemAt(0), sz);\r
+        }\r
+    },\r
+\r
+    // private\r
+    setItemSize : function(item, size){\r
+        if(item && size.height > 0){ // display none?\r
+            item.setSize(size);\r
+        }\r
+    }\r
+});\r
+Ext.Container.LAYOUTS['fit'] = Ext.layout.FitLayout;
\ No newline at end of file