Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/DataGrid.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/DataGrid.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/DataGrid.js |
index a58fdda6660666f19c8bd082467a5ca12abbf7cf..13a05c9949435f988a34d58c9d522ad780628f6a 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/DataGrid.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui_lazy/DataGrid.js |
@@ -39,26 +39,6 @@ WebInspector.DataGrid = function(columnsArray, editCallback, deleteCallback, ref |
this.element.tabIndex = 0; |
this.element.addEventListener("keydown", this._keyDown.bind(this), false); |
- var headerContainer = createElementWithClass("div", "header-container"); |
- /** @type {!Element} */ |
- this._headerTable = headerContainer.createChild("table", "header"); |
- /** @type {!Object.<string, !Element>} */ |
- this._headerTableHeaders = {}; |
- |
- /** @type {!Element} */ |
- this._scrollContainer = createElementWithClass("div", "data-container"); |
- /** @type {!Element} */ |
- this._dataTable = this._scrollContainer.createChild("table", "data"); |
- |
- this._dataTable.addEventListener("mousedown", this._mouseDownInDataTable.bind(this)); |
- this._dataTable.addEventListener("click", this._clickInDataTable.bind(this), true); |
- |
- this._dataTable.addEventListener("contextmenu", this._contextMenuInDataTable.bind(this), true); |
- |
- // FIXME: Add a createCallback which is different from editCallback and has different |
- // behavior when creating a new node. |
- if (editCallback) |
- this._dataTable.addEventListener("dblclick", this._ondblclick.bind(this), false); |
/** @type {function(!WebInspector.DataGridNode, string, string, string)|undefined} */ |
this._editCallback = editCallback; |
/** @type {function(!WebInspector.DataGridNode)|undefined} */ |
@@ -68,21 +48,23 @@ WebInspector.DataGrid = function(columnsArray, editCallback, deleteCallback, ref |
/** @type {function(!WebInspector.ContextMenu, !WebInspector.DataGridNode)|undefined} */ |
this._contextMenuCallback = contextMenuCallback; |
- this.element.appendChild(headerContainer); |
- this.element.appendChild(this._scrollContainer); |
- |
+ var headerContainer = this.element.createChild("div", "header-container"); |
/** @type {!Element} */ |
- this._headerRow = createElement("tr"); |
+ this._headerTable = headerContainer.createChild("table", "header"); |
+ /** @type {!Object.<string, !Element>} */ |
+ this._headerTableHeaders = {}; |
/** @type {!Element} */ |
- this._headerTableColumnGroup = createElement("colgroup"); |
+ this._scrollContainer = this.element.createChild("div", "data-container"); |
/** @type {!Element} */ |
- this._dataTableColumnGroup = createElement("colgroup"); |
+ this._dataTable = this._scrollContainer.createChild("table", "data"); |
- /** @type {!Element} */ |
- this._topFillerRow = createElementWithClass("tr", "data-grid-filler-row revealed"); |
- /** @type {!Element} */ |
- this._bottomFillerRow = createElementWithClass("tr", "data-grid-filler-row revealed"); |
- this.setVerticalPadding(0, 0); |
+ // FIXME: Add a createCallback which is different from editCallback and has different |
+ // behavior when creating a new node. |
+ if (editCallback) |
+ this._dataTable.addEventListener("dblclick", this._ondblclick.bind(this), false); |
+ this._dataTable.addEventListener("mousedown", this._mouseDownInDataTable.bind(this)); |
+ this._dataTable.addEventListener("click", this._clickInDataTable.bind(this), true); |
+ this._dataTable.addEventListener("contextmenu", this._contextMenuInDataTable.bind(this), true); |
/** @type {boolean} */ |
this._inline = false; |
@@ -99,13 +81,26 @@ WebInspector.DataGrid = function(columnsArray, editCallback, deleteCallback, ref |
/** @type {?string} */ |
this._cellClass = null; |
- this._headerTable.appendChild(this._headerTableColumnGroup); |
- this.headerTableBody.appendChild(this._headerRow); |
+ /** @type {!Element} */ |
+ this._headerTableColumnGroup = this._headerTable.createChild("colgroup"); |
+ /** @type {!Element} */ |
+ this._headerTableBody = this._headerTable.createChild("tbody"); |
+ /** @type {!Element} */ |
+ this._headerRow = this._headerTableBody.createChild("tr"); |
- this._dataTable.appendChild(this._dataTableColumnGroup); |
- this.dataTableBody.appendChild(this._topFillerRow); |
- this.dataTableBody.appendChild(this._bottomFillerRow); |
+ /** @type {!Element} */ |
+ this._dataTableColumnGroup = this._dataTable.createChild("colgroup"); |
+ /** |
+ * @protected |
+ * @type {!Element} |
+ */ |
+ this.dataTableBody = this._dataTable.createChild("tbody"); |
+ /** @type {!Element} */ |
+ this._topFillerRow = this.dataTableBody.createChild("tr", "data-grid-filler-row revealed"); |
+ /** @type {!Element} */ |
+ this._bottomFillerRow = this.dataTableBody.createChild("tr", "data-grid-filler-row revealed"); |
+ this.setVerticalPadding(0, 0); |
this._refreshHeader(); |
/** @type {boolean} */ |
@@ -174,6 +169,14 @@ WebInspector.DataGrid._preferredWidthSymbol = Symbol("preferredWidth"); |
WebInspector.DataGrid.prototype = { |
/** |
+ * @return {!Element} |
+ */ |
+ headerTableBody: function() |
+ { |
+ return this._headerTableBody; |
+ }, |
+ |
+ /** |
* @param {!WebInspector.DataGrid.ColumnDescriptor} column |
* @param {number=} position |
*/ |
@@ -518,34 +521,6 @@ WebInspector.DataGrid.prototype = { |
return !this._sortColumnCell || this._sortColumnCell.classList.contains(WebInspector.DataGrid.Order.Ascending); |
}, |
- get headerTableBody() |
- { |
- if ("_headerTableBody" in this) |
- return this._headerTableBody; |
- |
- this._headerTableBody = this._headerTable.getElementsByTagName("tbody")[0]; |
- if (!this._headerTableBody) { |
- this._headerTableBody = this.element.ownerDocument.createElement("tbody"); |
- this._headerTable.insertBefore(this._headerTableBody, this._headerTable.tFoot); |
- } |
- |
- return this._headerTableBody; |
- }, |
- |
- get dataTableBody() |
- { |
- if ("_dataTableBody" in this) |
- return this._dataTableBody; |
- |
- this._dataTableBody = this._dataTable.getElementsByTagName("tbody")[0]; |
- if (!this._dataTableBody) { |
- this._dataTableBody = this.element.ownerDocument.createElement("tbody"); |
- this._dataTable.insertBefore(this._dataTableBody, this._dataTable.tFoot); |
- } |
- |
- return this._dataTableBody; |
- }, |
- |
/** |
* @param {!Array.<number>} widths |
* @param {number} minPercent |
@@ -654,23 +629,22 @@ WebInspector.DataGrid.prototype = { |
// parent element, then the DataGrid's columns will not be resizable. |
updateWidths: function() |
{ |
- var headerTableColumns = this._headerTableColumnGroup.children; |
- |
- // Use container size to avoid changes of table width caused by change of column widths. |
- var tableWidth = this.element.offsetWidth - this._cornerWidth; |
- var numColumns = headerTableColumns.length - 1; // Do not process corner column. |
- |
// Do not attempt to use offsetes if we're not attached to the document tree yet. |
if (!this._columnWidthsInitialized && this.element.offsetWidth) { |
// Give all the columns initial widths now so that during a resize, |
// when the two columns that get resized get a percent value for |
// their widths, all the other columns already have percent values |
// for their widths. |
+ var headerTableColumns = this._headerTableColumnGroup.children; |
+ |
+ // Use container size to avoid changes of table width caused by change of column widths. |
+ var tableWidth = this.element.offsetWidth - this._cornerWidth; |
+ var cells = this._headerTableBody.rows[0].cells; |
+ var numColumns = cells.length - 1; // Do not process corner column. |
for (var i = 0; i < numColumns; i++) { |
- var columnWidth = this.headerTableBody.rows[0].cells[i].offsetWidth; |
var column = this._visibleColumnsArray[i]; |
if (!column.weight) |
- column.weight = 100 * columnWidth / tableWidth; |
+ column.weight = 100 * cells[i].offsetWidth / tableWidth; |
} |
this._columnWidthsInitialized = true; |
} |
@@ -732,7 +706,7 @@ WebInspector.DataGrid.prototype = { |
for (var i = 0; i < this._visibleColumnsArray.length; ++i) { |
var column = this._visibleColumnsArray[i]; |
if (column.fixedWidth) { |
- var width = this._headerTableColumnGroup.children[i][WebInspector.DataGrid._preferredWidthSymbol] || this.headerTableBody.rows[0].cells[i].offsetWidth; |
+ var width = this._headerTableColumnGroup.children[i][WebInspector.DataGrid._preferredWidthSymbol] || this._headerTableBody.rows[0].cells[i].offsetWidth; |
fixedColumnWidths[i] = width; |
tableWidth -= width; |
} else { |
@@ -797,7 +771,7 @@ WebInspector.DataGrid.prototype = { |
// Get the width of the cell in the first (and only) row of the |
// header table in order to determine the width of the column, since |
// it is not possible to query a column for its width. |
- left[i] = (left[i - 1] || 0) + this.headerTableBody.rows[0].cells[i].offsetWidth; |
+ left[i] = (left[i - 1] || 0) + this._headerTableBody.rows[0].cells[i].offsetWidth; |
} |
// Make n - 1 resizers for n columns. |
@@ -1092,7 +1066,7 @@ WebInspector.DataGrid.prototype = { |
// Constrain the dragpoint to be within the containing div of the |
// datagrid. |
var dragPoint = event.clientX - this.element.totalOffsetLeft(); |
- var firstRowCells = this.headerTableBody.rows[0].cells; |
+ var firstRowCells = this._headerTableBody.rows[0].cells; |
var leftEdgeOfPreviousColumn = 0; |
// Constrain the dragpoint to be within the space made up by the |
// column directly to the left and the column directly to the right. |