make sure the README will appear on github
[extjs.git] / examples / layout-browser / layouts / combination.js
1 /*\r
2  * Ext JS Library 2.2.1\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 /*\r
10  * ================  TabPanel with nested layouts  =======================\r
11  */\r
12 // fake grid data used below in the tabsNestedLayouts config\r
13 var myData = [\r
14     ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],\r
15     ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],\r
16     ['Altria Group Inc',83.81,0.28,0.34,'9/1 12:00am'],\r
17     ['American Express Company',52.55,0.01,0.02,'9/1 12:00am'],\r
18     ['American International Group, Inc.',64.13,0.31,0.49,'9/1 12:00am'],\r
19     ['AT&T Inc.',31.61,-0.48,-1.54,'9/1 12:00am'],\r
20     ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],\r
21     ['Caterpillar Inc.',67.27,0.92,1.39,'9/1 12:00am'],\r
22     ['Citigroup, Inc.',49.37,0.02,0.04,'9/1 12:00am'],\r
23     ['E.I. du Pont de Nemours and Company',40.48,0.51,1.28,'9/1 12:00am'],\r
24     ['Exxon Mobil Corp',68.1,-0.43,-0.64,'9/1 12:00am'],\r
25     ['General Electric Company',34.14,-0.08,-0.23,'9/1 12:00am'],\r
26     ['General Motors Corporation',30.27,1.09,3.74,'9/1 12:00am'],\r
27     ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],\r
28     ['Honeywell Intl Inc',38.77,0.05,0.13,'9/1 12:00am'],\r
29     ['Intel Corporation',19.88,0.31,1.58,'9/1 12:00am'],\r
30     ['International Business Machines',81.41,0.44,0.54,'9/1 12:00am'],\r
31     ['Johnson & Johnson',64.72,0.06,0.09,'9/1 12:00am'],\r
32     ['JP Morgan & Chase & Co',45.73,0.07,0.15,'9/1 12:00am'],\r
33     ['McDonald\'s Corporation',36.76,0.86,2.40,'9/1 12:00am'],\r
34     ['Merck & Co., Inc.',40.96,0.41,1.01,'9/1 12:00am'],\r
35     ['Microsoft Corporation',25.84,0.14,0.54,'9/1 12:00am'],\r
36     ['Pfizer Inc',27.96,0.4,1.45,'9/1 12:00am'],\r
37     ['The Coca-Cola Company',45.07,0.26,0.58,'9/1 12:00am'],\r
38     ['The Home Depot, Inc.',34.64,0.35,1.02,'9/1 12:00am'],\r
39     ['The Procter & Gamble Company',61.91,0.01,0.02,'9/1 12:00am'],\r
40     ['United Technologies Corporation',63.26,0.55,0.88,'9/1 12:00am'],\r
41     ['Verizon Communications',35.57,0.39,1.11,'9/1 12:00am'],\r
42     ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']\r
43 ];\r
44     \r
45 var tabsNestedLayouts = {\r
46         xtype: 'tabpanel',\r
47         id: 'tabs-nested-layouts-panel',\r
48         title: 'TabPanel with Nested Layouts',\r
49         activeTab: 0,\r
50         items:[{\r
51                 title: 'Foo',\r
52                 layout: 'border',\r
53                 items: [{\r
54                         region: 'north',\r
55                         title: 'North',\r
56                         height: 75,\r
57                         maxSize: 150,\r
58                         margins: '5 5 0 5',\r
59                         bodyStyle: 'padding:10px;',\r
60                         split: true,\r
61                         html: 'Some content'\r
62                 },{\r
63                         xtype: 'tabpanel',\r
64                         plain: true,\r
65                         region: 'center',\r
66                         margins: '0 5 5 5',\r
67                         activeTab: 0,\r
68                         items: [{\r
69                                 title: 'Inner Tab 1',\r
70                                 bodyStyle: 'padding:10px;',\r
71                                 html: 'See Inner Tab 2 for another nested BorderLayout.'\r
72                         },{\r
73                                 title: 'Inner Tab 2',\r
74                                 cls: 'inner-tab-custom', // custom styles in layout-browser.css\r
75                                 layout: 'border',\r
76                 // Make sure IE can still calculate dimensions after a resize when the tab is not active.\r
77                 // With display mode, if the tab is rendered but hidden, IE will mess up the layout on show:\r
78                 hideMode: Ext.isIE ? 'offsets' : 'display', \r
79                                 items: [{\r
80                                         title: 'West',\r
81                                         region: 'west',\r
82                                         collapsible: true,\r
83                                         width: 150,\r
84                                         minSize: 100,\r
85                                         maxSize: 350,\r
86                                         margins: '5 0 5 5',\r
87                                         cmargins: '5 5 5 5',\r
88                                         html: 'Hello',\r
89                                         bodyStyle:'padding:10px;',\r
90                                         split: true\r
91                                 },{\r
92                                         xtype: 'tabpanel',\r
93                                         region: 'center',\r
94                                         margins: '5 5 5 0',\r
95                                         tabPosition: 'bottom',\r
96                                         activeTab: 0,\r
97                                         items: [{\r
98                                                 // Panels that are used as tabs do not have title bars since the tab\r
99                                                 // itself is the title container.  If you want to have a full title\r
100                                                 // bar within a tab, you can easily nest another panel within the tab\r
101                                                 // with layout:'fit' to acheive that:\r
102                                                 title: 'Bottom Tab',\r
103                                                 layout: 'fit',\r
104                                                 items: {\r
105                                                         title: 'Interior Content',\r
106                                                         bodyStyle:'padding:10px;',\r
107                                                         border: false,\r
108                                                         html: 'See the next tab for a nested grid. The grid is not rendered until its tab is first accessed.'\r
109                                                 }\r
110                                         },{\r
111                                                 // A common mistake when adding grids to a layout is creating a panel first,\r
112                                                 // then adding the grid to it.  GridPanel (xtype:'grid') is a Panel subclass,\r
113                                                 // so you can add it directly as an item into a container.  Typically you will\r
114                                                 // want to specify layout:'fit' on GridPanels so that they'll size along with\r
115                                                 // their container and take up the available space.\r
116                                                 title: 'Nested Grid',\r
117                                                 xtype: 'grid',\r
118                                                 layout: 'fit',\r
119                                         store: new Ext.data.SimpleStore({\r
120                                                 fields: [\r
121                                                    {name: 'company'},\r
122                                                    {name: 'price', type: 'float'},\r
123                                                    {name: 'change', type: 'float'},\r
124                                                    {name: 'pctChange', type: 'float'},\r
125                                                    {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}\r
126                                                 ]\r
127                                             }),\r
128                                         columns: [\r
129                                             {id:'company',header: "Company", width: 160, sortable: true, dataIndex: 'company'},\r
130                                             {header: "Price", width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price'},\r
131                                             {header: "Change", width: 75, sortable: true, dataIndex: 'change'},\r
132                                             {header: "% Change", width: 75, sortable: true, dataIndex: 'pctChange'},\r
133                                             {header: "Last Updated", width: 85, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}\r
134                                         ],\r
135                                         stripeRows: true,\r
136                                         autoExpandColumn: 'company',\r
137                                         \r
138                                         // Add a listener to load the data only after the grid is rendered:\r
139                                         listeners: {\r
140                                                 render: function(){\r
141                                                         this.store.loadData(myData);\r
142                                                 }\r
143                                         }\r
144                                         }]\r
145                                 }]\r
146                         }]\r
147                 }]\r
148         },{\r
149                 title: 'Bar',\r
150                 bodyStyle: 'padding:10px;',\r
151                 html: 'Nothing to see here.'\r
152         }]\r
153 };\r
154 \r
155 /*\r
156  * ================  Absolute Layout Form  =======================\r
157  */\r
158 var absform = new Ext.form.FormPanel({\r
159     baseCls: 'x-plain',\r
160     layout:'absolute',\r
161     url:'save-form.php',\r
162     border: true,\r
163     defaultType: 'textfield',\r
164 \r
165     items: [{\r
166         x: 0,\r
167         y: 5,\r
168         xtype: 'label',\r
169         text: 'From:'\r
170     },{\r
171         x: 55,\r
172         y: 0,\r
173         name: 'from',\r
174         anchor:'100%'  // anchor width by %\r
175     },{\r
176         x: 0,\r
177         y: 32,\r
178         xtype: 'label',\r
179         text: 'To:'\r
180     },{\r
181         // The button is not a Field subclass, so it must be \r
182         // wrapped in a panel for proper positioning to work\r
183         xtype: 'panel',\r
184         x: 55,\r
185         y: 27,\r
186         items: {\r
187                 xtype: 'button',\r
188                 text: 'Contacts...'\r
189         }\r
190     },{\r
191         x: 135,\r
192         y: 27,\r
193         name: 'to',\r
194         anchor: '100%'  // anchor width by %\r
195     },{\r
196         x: 0,\r
197         y: 59,\r
198         xtype: 'label',\r
199         text: 'Subject:'\r
200     },{\r
201         x: 55,\r
202         y: 54,\r
203         name: 'subject',\r
204         anchor: '100%'  // anchor width by %\r
205     },{\r
206         x:0,\r
207         y: 81,\r
208         xtype: 'textarea',\r
209         name: 'msg',\r
210         anchor: '100% 100%'  // anchor width and height\r
211     }]\r
212 });\r
213 \r
214 var absoluteForm = {\r
215     title: 'Absolute Layout Form',\r
216     id: 'abs-form-panel',\r
217     layout: 'fit',\r
218     bodyStyle: 'padding:15px;',\r
219     items: {\r
220         title: 'New Email',\r
221         cls: 'email-form',\r
222             layout: 'fit',\r
223             frame: true,\r
224             bodyStyle: 'padding:10px 5px 5px;',\r
225             items: absform,\r
226             \r
227             tbar: [{\r
228                 text: 'Send',\r
229                 iconCls: 'icon-send'\r
230             },'-',{\r
231                 text: 'Save',\r
232                 iconCls: 'icon-save'\r
233             },{\r
234                 text: 'Check Spelling',\r
235                 iconCls: 'icon-spell'\r
236             },'-',{\r
237                 text: 'Print',\r
238                 iconCls: 'icon-print'\r
239             },'->',{\r
240                 text: 'Attach a File',\r
241                 iconCls: 'icon-attach'\r
242             }]\r
243     }\r
244 };\r