| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-view-TableLayout'>/**</span> *  Component layout for {@link Ext.view.Table} *  @private *  */Ext.define('Ext.view.TableLayout', {    extend: 'Ext.layout.component.Auto',    alias: ['layout.tableview'],    type: 'tableview',    beginLayout: function(ownerContext) {        var me = this;        me.callParent(arguments);        // Grab ContextItem for the driving HeaderContainer and the table only if their is a table to size        if (me.owner.table.dom) {            ownerContext.tableContext = ownerContext.getEl(me.owner.table);            // Grab a ContextItem for the header container            ownerContext.headerContext = ownerContext.context.getCmp(me.headerCt);        }    },    calculate: function(ownerContext) {        var me = this;        me.callParent(arguments);        if (ownerContext.tableContext) {            if (ownerContext.state.columnWidthsSynced) {                if (ownerContext.hasProp('columnWidthsFlushed')) {                    ownerContext.tableContext.setHeight(ownerContext.tableContext.el.dom.offsetHeight, false);                } else {                    me.done = false;                }            } else {                if (ownerContext.headerContext.hasProp('columnWidthsDone')) {                    ownerContext.context.queueFlush(me);                    ownerContext.state.columnWidthsSynced = true;                }                // Either our base class (Auto) needs to measureContentHeight                // if we are shrinkWrapHeight OR we need to measure the table                // element height if we are not shrinkWrapHeight                me.done = false;            }        }    },    measureContentHeight: function(ownerContext) {        // Only able to produce a valid contentHeight if we have flushed all column widths to the table (or there's no table at all).        if (!ownerContext.headerContext || ownerContext.hasProp('columnWidthsFlushed')) {            return this.callParent(arguments);        }    },    flush: function() {        var me = this,            context = me.ownerContext.context,            columns = me.headerCt.getGridColumns(),            i = 0, len = columns.length,            el = me.owner.el,            tableWidth = 0,            colWidth;        // So that the setProp can trigger this layout.        context.currentLayout = me;        // Set column width corresponding to each header        for (i = 0; i < len; i++) {            colWidth = columns[i].hidden ? 0 : context.getCmp(columns[i]).props.width;            tableWidth += colWidth;            // Grab the col and set the width.            // CSS class is generated in TableChunker.            // Select composites because there may be several chunks.            el.select(me.getColumnSelector(columns[i])).setWidth(colWidth);        }        el.select('table.' + Ext.baseCSSPrefix + 'grid-table-resizer').setWidth(tableWidth);        // Now we can measure contentHeight if necessary (if we are height shrinkwrapped)        me.ownerContext.setProp('columnWidthsFlushed', true);    },        finishedLayout: function(){        var me = this,            first;                    me.callParent(arguments);           // In FF, in some cases during a resize or column hide/show, the <td> cells in        // the grid won't respond to the new width set in the <th> at the top. So we        // force a reflow of the table which seems to correct it. Related to EXTJSIV-6410        if (Ext.isGecko) {            first = me.headerCt.getGridColumns()[0];            if (first) {                first = me.owner.el.down(me.getColumnSelector(first));                if (first) {                    first.setStyle('display', 'none');                    first.dom.scrollWidth;                    first.setStyle('display', '');                }            }        }     },    getColumnSelector: function(column) {        return 'th.' + Ext.baseCSSPrefix + 'grid-col-resizer-' + column.id;    }});</pre></body></html>
 |