Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(425)

Unified Diff: resources/inspector/DataGrid.js

Issue 853002: Updating the Chromium reference build for Windows. The continuous... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/reference_builds/chrome/
Patch Set: Added the symbol files back. Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « resources/inspector/DOMStorageItemsView.js ('k') | resources/inspector/Database.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: resources/inspector/DataGrid.js
===================================================================
--- resources/inspector/DataGrid.js (revision 33840)
+++ resources/inspector/DataGrid.js (working copy)
@@ -1,1041 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-WebInspector.DataGrid = function(columns)
-{
- this.element = document.createElement("div");
- this.element.className = "data-grid";
- this.element.tabIndex = 0;
- this.element.addEventListener("keydown", this._keyDown.bind(this), false);
-
- this._headerTable = document.createElement("table");
- this._headerTable.className = "header";
-
- this._dataTable = document.createElement("table");
- this._dataTable.className = "data";
-
- this._dataTable.addEventListener("mousedown", this._mouseDownInDataTable.bind(this), true);
- this._dataTable.addEventListener("click", this._clickInDataTable.bind(this), true);
-
- this.aligned = {};
-
- var scrollContainer = document.createElement("div");
- scrollContainer.className = "data-container";
- scrollContainer.appendChild(this._dataTable);
-
- this.element.appendChild(this._headerTable);
- this.element.appendChild(scrollContainer);
-
- var headerRow = document.createElement("tr");
- var columnGroup = document.createElement("colgroup");
- var columnCount = 0;
-
- for (var columnIdentifier in columns) {
- var column = columns[columnIdentifier];
- if (column.disclosure)
- this.disclosureColumnIdentifier = columnIdentifier;
-
- var col = document.createElement("col");
- if (column.width)
- col.style.width = column.width;
- columnGroup.appendChild(col);
-
- var cell = document.createElement("th");
- cell.className = columnIdentifier + "-column";
- cell.columnIdentifier = columnIdentifier;
-
- var div = document.createElement("div");
- div.textContent = column.title;
- cell.appendChild(div);
-
- if (column.sort) {
- cell.addStyleClass("sort-" + column.sort);
- this._sortColumnCell = cell;
- }
-
- if (column.sortable) {
- cell.addEventListener("click", this._clickInHeaderCell.bind(this), false);
- cell.addStyleClass("sortable");
- }
-
- if (column.aligned) {
- cell.addStyleClass(column.aligned);
- this.aligned[columnIdentifier] = column.aligned;
- }
-
- headerRow.appendChild(cell);
-
- ++columnCount;
- }
-
- columnGroup.span = columnCount;
-
- var cell = document.createElement("th");
- cell.className = "corner";
- headerRow.appendChild(cell);
-
- this._headerTableColumnGroup = columnGroup;
- this._headerTable.appendChild(this._headerTableColumnGroup);
- this.headerTableBody.appendChild(headerRow);
-
- var fillerRow = document.createElement("tr");
- fillerRow.className = "filler";
-
- for (var i = 0; i < columnCount; ++i) {
- var cell = document.createElement("td");
- fillerRow.appendChild(cell);
- }
-
- this._dataTableColumnGroup = columnGroup.cloneNode(true);
- this._dataTable.appendChild(this._dataTableColumnGroup);
- this.dataTableBody.appendChild(fillerRow);
-
- this.columns = columns || {};
- this.children = [];
- this.selectedNode = null;
- this.expandNodesWhenArrowing = false;
- this.root = true;
- this.hasChildren = false;
- this.expanded = true;
- this.revealed = true;
- this.selected = false;
- this.dataGrid = this;
- this.indentWidth = 15;
- this.resizers = [];
- this.columnWidthsInitialized = false;
-}
-
-WebInspector.DataGrid.prototype = {
- get sortColumnIdentifier()
- {
- if (!this._sortColumnCell)
- return null;
- return this._sortColumnCell.columnIdentifier;
- },
-
- get sortOrder()
- {
- if (!this._sortColumnCell || this._sortColumnCell.hasStyleClass("sort-ascending"))
- return "ascending";
- if (this._sortColumnCell.hasStyleClass("sort-descending"))
- return "descending";
- return null;
- },
-
- 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;
- },
-
- // Updates the widths of the table, including the positions of the column
- // resizers.
- //
- // IMPORTANT: This function MUST be called once after the element of the
- // DataGrid is attached to its parent element and every subsequent time the
- // width of the parent element is changed in order to make it possible to
- // resize the columns.
- //
- // If this function is not called after the DataGrid is attached to its
- // parent element, then the DataGrid's columns will not be resizable.
- updateWidths: function()
- {
- var headerTableColumns = this._headerTableColumnGroup.children;
-
- var left = 0;
- var tableWidth = this._dataTable.offsetWidth;
- var numColumns = headerTableColumns.length;
-
- if (!this.columnWidthsInitialized) {
- // 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.
- for (var i = 0; i < numColumns; i++) {
- var columnWidth = this.headerTableBody.rows[0].cells[i].offsetWidth;
- var percentWidth = ((columnWidth / tableWidth) * 100) + "%";
- this._headerTableColumnGroup.children[i].style.width = percentWidth;
- this._dataTableColumnGroup.children[i].style.width = percentWidth;
- }
- this.columnWidthsInitialized = true;
- }
-
- // Make n - 1 resizers for n columns.
- for (var i = 0; i < numColumns - 1; i++) {
- var resizer = this.resizers[i];
-
- if (!resizer) {
- // This is the first call to updateWidth, so the resizers need
- // to be created.
- resizer = document.createElement("div");
- resizer.addStyleClass("data-grid-resizer");
- // This resizer is associated with the column to its right.
- resizer.rightNeighboringColumnID = i + 1;
- resizer.addEventListener("mousedown", this._startResizerDragging.bind(this), false);
- this.element.appendChild(resizer);
- this.resizers[i] = resizer;
- }
-
- // 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 += this.headerTableBody.rows[0].cells[i].offsetWidth;
-
- resizer.style.left = left + "px";
- }
- },
-
- addCreationNode: function(hasChildren)
- {
- if (this.creationNode)
- this.creationNode.makeNormal();
-
- var emptyData = {};
- for (var column in this.columns)
- emptyData[column] = '';
- this.creationNode = new WebInspector.CreationDataGridNode(emptyData, hasChildren);
- this.appendChild(this.creationNode);
- },
-
- appendChild: function(child)
- {
- this.insertChild(child, this.children.length);
- },
-
- insertChild: function(child, index)
- {
- if (!child)
- throw("insertChild: Node can't be undefined or null.");
- if (child.parent === this)
- throw("insertChild: Node is already a child of this node.");
-
- if (child.parent)
- child.parent.removeChild(child);
-
- this.children.splice(index, 0, child);
- this.hasChildren = true;
-
- child.parent = this;
- child.dataGrid = this.dataGrid;
- child._recalculateSiblings(index);
-
- delete child._depth;
- delete child._revealed;
- delete child._attached;
-
- var current = child.children[0];
- while (current) {
- current.dataGrid = this.dataGrid;
- delete current._depth;
- delete current._revealed;
- delete current._attached;
- current = current.traverseNextNode(false, child, true);
- }
-
- if (this.expanded)
- child._attach();
- },
-
- removeChild: function(child)
- {
- if (!child)
- throw("removeChild: Node can't be undefined or null.");
- if (child.parent !== this)
- throw("removeChild: Node is not a child of this node.");
-
- child.deselect();
-
- this.children.remove(child, true);
-
- if (child.previousSibling)
- child.previousSibling.nextSibling = child.nextSibling;
- if (child.nextSibling)
- child.nextSibling.previousSibling = child.previousSibling;
-
- child.dataGrid = null;
- child.parent = null;
- child.nextSibling = null;
- child.previousSibling = null;
-
- if (this.children.length <= 0)
- this.hasChildren = false;
- },
-
- removeChildren: function()
- {
- for (var i = 0; i < this.children.length; ++i) {
- var child = this.children[i];
- child.deselect();
- child._detach();
-
- child.dataGrid = null;
- child.parent = null;
- child.nextSibling = null;
- child.previousSibling = null;
- }
-
- this.children = [];
- this.hasChildren = false;
- },
-
- removeChildrenRecursive: function()
- {
- var childrenToRemove = this.children;
-
- var child = this.children[0];
- while (child) {
- if (child.children.length)
- childrenToRemove = childrenToRemove.concat(child.children);
- child = child.traverseNextNode(false, this, true);
- }
-
- for (var i = 0; i < childrenToRemove.length; ++i) {
- var child = childrenToRemove[i];
- child.deselect();
- child._detach();
-
- child.children = [];
- child.dataGrid = null;
- child.parent = null;
- child.nextSibling = null;
- child.previousSibling = null;
- }
-
- this.children = [];
- },
-
- handleKeyEvent: function(event)
- {
- if (!this.selectedNode || event.shiftKey || event.metaKey || event.ctrlKey)
- return false;
-
- var handled = false;
- var nextSelectedNode;
- if (event.keyIdentifier === "Up" && !event.altKey) {
- nextSelectedNode = this.selectedNode.traversePreviousNode(true);
- while (nextSelectedNode && !nextSelectedNode.selectable)
- nextSelectedNode = nextSelectedNode.traversePreviousNode(!this.expandTreeNodesWhenArrowing);
- handled = nextSelectedNode ? true : false;
- } else if (event.keyIdentifier === "Down" && !event.altKey) {
- nextSelectedNode = this.selectedNode.traverseNextNode(true);
- while (nextSelectedNode && !nextSelectedNode.selectable)
- nextSelectedNode = nextSelectedNode.traverseNextNode(!this.expandTreeNodesWhenArrowing);
- handled = nextSelectedNode ? true : false;
- } else if (event.keyIdentifier === "Left") {
- if (this.selectedNode.expanded) {
- if (event.altKey)
- this.selectedNode.collapseRecursively();
- else
- this.selectedNode.collapse();
- handled = true;
- } else if (this.selectedNode.parent && !this.selectedNode.parent.root) {
- handled = true;
- if (this.selectedNode.parent.selectable) {
- nextSelectedNode = this.selectedNode.parent;
- handled = nextSelectedNode ? true : false;
- } else if (this.selectedNode.parent)
- this.selectedNode.parent.collapse();
- }
- } else if (event.keyIdentifier === "Right") {
- if (!this.selectedNode.revealed) {
- this.selectedNode.reveal();
- handled = true;
- } else if (this.selectedNode.hasChildren) {
- handled = true;
- if (this.selectedNode.expanded) {
- nextSelectedNode = this.selectedNode.children[0];
- handled = nextSelectedNode ? true : false;
- } else {
- if (event.altKey)
- this.selectedNode.expandRecursively();
- else
- this.selectedNode.expand();
- }
- }
- }
-
- if (nextSelectedNode) {
- nextSelectedNode.reveal();
- nextSelectedNode.select();
- }
-
- if (handled) {
- event.preventDefault();
- event.stopPropagation();
- }
-
- return handled;
- },
-
- expand: function()
- {
- // This is the root, do nothing.
- },
-
- collapse: function()
- {
- // This is the root, do nothing.
- },
-
- reveal: function()
- {
- // This is the root, do nothing.
- },
-
- dataGridNodeFromEvent: function(event)
- {
- var rowElement = event.target.enclosingNodeOrSelfWithNodeName("tr");
- return rowElement._dataGridNode;
- },
-
- dataGridNodeFromPoint: function(x, y)
- {
- var node = this._dataTable.ownerDocument.elementFromPoint(x, y);
- var rowElement = node.enclosingNodeOrSelfWithNodeName("tr");
- return rowElement._dataGridNode;
- },
-
- _keyDown: function(event)
- {
- this.handleKeyEvent(event);
- },
-
- _clickInHeaderCell: function(event)
- {
- var cell = event.target.enclosingNodeOrSelfWithNodeName("th");
- if (!cell || !cell.columnIdentifier || !cell.hasStyleClass("sortable"))
- return;
-
- var sortOrder = this.sortOrder;
-
- if (this._sortColumnCell) {
- this._sortColumnCell.removeStyleClass("sort-ascending");
- this._sortColumnCell.removeStyleClass("sort-descending");
- }
-
- if (cell == this._sortColumnCell) {
- if (sortOrder == "ascending")
- sortOrder = "descending";
- else
- sortOrder = "ascending";
- }
-
- this._sortColumnCell = cell;
-
- cell.addStyleClass("sort-" + sortOrder);
-
- this.dispatchEventToListeners("sorting changed");
- },
-
- _mouseDownInDataTable: function(event)
- {
- var gridNode = this.dataGridNodeFromEvent(event);
- if (!gridNode || !gridNode.selectable)
- return;
-
- if (gridNode.isEventWithinDisclosureTriangle(event))
- return;
-
- if (event.metaKey) {
- if (gridNode.selected)
- gridNode.deselect();
- else
- gridNode.select();
- } else
- gridNode.select();
- },
-
- _clickInDataTable: function(event)
- {
- var gridNode = this.dataGridNodeFromEvent(event);
- if (!gridNode || !gridNode.hasChildren)
- return;
-
- if (!gridNode.isEventWithinDisclosureTriangle(event))
- return;
-
- if (gridNode.expanded) {
- if (event.altKey)
- gridNode.collapseRecursively();
- else
- gridNode.collapse();
- } else {
- if (event.altKey)
- gridNode.expandRecursively();
- else
- gridNode.expand();
- }
- },
-
- _startResizerDragging: function(event)
- {
- this.currentResizer = event.target;
- if (!this.currentResizer.rightNeighboringColumnID)
- return;
- WebInspector.elementDragStart(this.lastResizer, this._resizerDragging.bind(this),
- this._endResizerDragging.bind(this), event, "col-resize");
- },
-
- _resizerDragging: function(event)
- {
- var resizer = this.currentResizer;
- if (!resizer)
- return;
-
- // Constrain the dragpoint to be within the containing div of the
- // datagrid.
- var dragPoint = event.clientX - this.element.totalOffsetLeft;
- // Constrain the dragpoint to be within the space made up by the
- // column directly to the left and the column directly to the right.
- var leftEdgeOfPreviousColumn = 0;
- var firstRowCells = this.headerTableBody.rows[0].cells;
- for (var i = 0; i < resizer.rightNeighboringColumnID - 1; i++)
- leftEdgeOfPreviousColumn += firstRowCells[i].offsetWidth;
-
- var rightEdgeOfNextColumn = leftEdgeOfPreviousColumn + firstRowCells[resizer.rightNeighboringColumnID - 1].offsetWidth + firstRowCells[resizer.rightNeighboringColumnID].offsetWidth;
-
- // Give each column some padding so that they don't disappear.
- var leftMinimum = leftEdgeOfPreviousColumn + this.ColumnResizePadding;
- var rightMaximum = rightEdgeOfNextColumn - this.ColumnResizePadding;
-
- dragPoint = Number.constrain(dragPoint, leftMinimum, rightMaximum);
-
- resizer.style.left = (dragPoint - this.CenterResizerOverBorderAdjustment) + "px";
-
- var percentLeftColumn = (((dragPoint - leftEdgeOfPreviousColumn) / this._dataTable.offsetWidth) * 100) + "%";
- this._headerTableColumnGroup.children[resizer.rightNeighboringColumnID - 1].style.width = percentLeftColumn;
- this._dataTableColumnGroup.children[resizer.rightNeighboringColumnID - 1].style.width = percentLeftColumn;
-
- var percentRightColumn = (((rightEdgeOfNextColumn - dragPoint) / this._dataTable.offsetWidth) * 100) + "%";
- this._headerTableColumnGroup.children[resizer.rightNeighboringColumnID].style.width = percentRightColumn;
- this._dataTableColumnGroup.children[resizer.rightNeighboringColumnID].style.width = percentRightColumn;
-
- event.preventDefault();
- },
-
- _endResizerDragging: function(event)
- {
- WebInspector.elementDragEnd(event);
- this.currentResizer = null;
- },
-
- ColumnResizePadding: 10,
-
- CenterResizerOverBorderAdjustment: 3,
-}
-
-WebInspector.DataGrid.prototype.__proto__ = WebInspector.Object.prototype;
-
-WebInspector.DataGridNode = function(data, hasChildren)
-{
- this._expanded = false;
- this._selected = false;
- this._shouldRefreshChildren = true;
- this._data = data || {};
- this.hasChildren = hasChildren || false;
- this.children = [];
- this.dataGrid = null;
- this.parent = null;
- this.previousSibling = null;
- this.nextSibling = null;
- this.disclosureToggleWidth = 10;
-}
-
-WebInspector.DataGridNode.prototype = {
- selectable: true,
-
- get element()
- {
- if (this._element)
- return this._element;
-
- if (!this.dataGrid)
- return null;
-
- this._element = document.createElement("tr");
- this._element._dataGridNode = this;
-
- if (this.hasChildren)
- this._element.addStyleClass("parent");
- if (this.expanded)
- this._element.addStyleClass("expanded");
- if (this.selected)
- this._element.addStyleClass("selected");
- if (this.revealed)
- this._element.addStyleClass("revealed");
-
- for (var columnIdentifier in this.dataGrid.columns) {
- var cell = this.createCell(columnIdentifier);
- this._element.appendChild(cell);
- }
-
- return this._element;
- },
-
- get data()
- {
- return this._data;
- },
-
- set data(x)
- {
- this._data = x || {};
- this.refresh();
- },
-
- get revealed()
- {
- if ("_revealed" in this)
- return this._revealed;
-
- var currentAncestor = this.parent;
- while (currentAncestor && !currentAncestor.root) {
- if (!currentAncestor.expanded) {
- this._revealed = false;
- return false;
- }
-
- currentAncestor = currentAncestor.parent;
- }
-
- this._revealed = true;
- return true;
- },
-
- set hasChildren(x)
- {
- if (this._hasChildren === x)
- return;
-
- this._hasChildren = x;
-
- if (!this._element)
- return;
-
- if (this._hasChildren)
- {
- this._element.addStyleClass("parent");
- if (this.expanded)
- this._element.addStyleClass("expanded");
- }
- else
- {
- this._element.removeStyleClass("parent");
- this._element.removeStyleClass("expanded");
- }
- },
-
- get hasChildren()
- {
- return this._hasChildren;
- },
-
- set revealed(x)
- {
- if (this._revealed === x)
- return;
-
- this._revealed = x;
-
- if (this._element) {
- if (this._revealed)
- this._element.addStyleClass("revealed");
- else
- this._element.removeStyleClass("revealed");
- }
-
- for (var i = 0; i < this.children.length; ++i)
- this.children[i].revealed = x && this.expanded;
- },
-
- get depth()
- {
- if ("_depth" in this)
- return this._depth;
- if (this.parent && !this.parent.root)
- this._depth = this.parent.depth + 1;
- else
- this._depth = 0;
- return this._depth;
- },
-
- get shouldRefreshChildren()
- {
- return this._shouldRefreshChildren;
- },
-
- set shouldRefreshChildren(x)
- {
- this._shouldRefreshChildren = x;
- if (x && this.expanded)
- this.expand();
- },
-
- get selected()
- {
- return this._selected;
- },
-
- set selected(x)
- {
- if (x)
- this.select();
- else
- this.deselect();
- },
-
- get expanded()
- {
- return this._expanded;
- },
-
- set expanded(x)
- {
- if (x)
- this.expand();
- else
- this.collapse();
- },
-
- refresh: function()
- {
- if (!this._element || !this.dataGrid)
- return;
-
- this._element.removeChildren();
-
- for (var columnIdentifier in this.dataGrid.columns) {
- var cell = this.createCell(columnIdentifier);
- this._element.appendChild(cell);
- }
- },
-
- createCell: function(columnIdentifier)
- {
- var cell = document.createElement("td");
- cell.className = columnIdentifier + "-column";
-
- var alignment = this.dataGrid.aligned[columnIdentifier];
- if (alignment)
- cell.addStyleClass(alignment);
-
- var div = document.createElement("div");
- div.textContent = this.data[columnIdentifier];
- cell.appendChild(div);
-
- if (columnIdentifier === this.dataGrid.disclosureColumnIdentifier) {
- cell.addStyleClass("disclosure");
- if (this.depth)
- cell.style.setProperty("padding-left", (this.depth * this.dataGrid.indentWidth) + "px");
- }
-
- return cell;
- },
-
- // Share these functions with DataGrid. They are written to work with a DataGridNode this object.
- appendChild: WebInspector.DataGrid.prototype.appendChild,
- insertChild: WebInspector.DataGrid.prototype.insertChild,
- removeChild: WebInspector.DataGrid.prototype.removeChild,
- removeChildren: WebInspector.DataGrid.prototype.removeChildren,
- removeChildrenRecursive: WebInspector.DataGrid.prototype.removeChildrenRecursive,
-
- _recalculateSiblings: function(myIndex)
- {
- if (!this.parent)
- return;
-
- var previousChild = (myIndex > 0 ? this.parent.children[myIndex - 1] : null);
-
- if (previousChild) {
- previousChild.nextSibling = this;
- this.previousSibling = previousChild;
- } else
- this.previousSibling = null;
-
- var nextChild = this.parent.children[myIndex + 1];
-
- if (nextChild) {
- nextChild.previousSibling = this;
- this.nextSibling = nextChild;
- } else
- this.nextSibling = null;
- },
-
- collapse: function()
- {
- if (this._element)
- this._element.removeStyleClass("expanded");
-
- this._expanded = false;
-
- for (var i = 0; i < this.children.length; ++i)
- this.children[i].revealed = false;
-
- this.dispatchEventToListeners("collapsed");
- },
-
- collapseRecursively: function()
- {
- var item = this;
- while (item) {
- if (item.expanded)
- item.collapse();
- item = item.traverseNextNode(false, this, true);
- }
- },
-
- expand: function()
- {
- if (!this.hasChildren || this.expanded)
- return;
-
- if (this.revealed && !this._shouldRefreshChildren)
- for (var i = 0; i < this.children.length; ++i)
- this.children[i].revealed = true;
-
- if (this._shouldRefreshChildren) {
- for (var i = 0; i < this.children.length; ++i)
- this.children[i]._detach();
-
- this.dispatchEventToListeners("populate");
-
- if (this._attached) {
- for (var i = 0; i < this.children.length; ++i) {
- var child = this.children[i];
- if (this.revealed)
- child.revealed = true;
- child._attach();
- }
- }
-
- delete this._shouldRefreshChildren;
- }
-
- if (this._element)
- this._element.addStyleClass("expanded");
-
- this._expanded = true;
-
- this.dispatchEventToListeners("expanded");
- },
-
- expandRecursively: function()
- {
- var item = this;
- while (item) {
- item.expand();
- item = item.traverseNextNode(false, this);
- }
- },
-
- reveal: function()
- {
- var currentAncestor = this.parent;
- while (currentAncestor && !currentAncestor.root) {
- if (!currentAncestor.expanded)
- currentAncestor.expand();
- currentAncestor = currentAncestor.parent;
- }
-
- this.element.scrollIntoViewIfNeeded(false);
-
- this.dispatchEventToListeners("revealed");
- },
-
- select: function(supressSelectedEvent)
- {
- if (!this.dataGrid || !this.selectable || this.selected)
- return;
-
- if (this.dataGrid.selectedNode)
- this.dataGrid.selectedNode.deselect();
-
- this._selected = true;
- this.dataGrid.selectedNode = this;
-
- if (this._element)
- this._element.addStyleClass("selected");
-
- if (!supressSelectedEvent)
- this.dispatchEventToListeners("selected");
- },
-
- deselect: function(supressDeselectedEvent)
- {
- if (!this.dataGrid || this.dataGrid.selectedNode !== this || !this.selected)
- return;
-
- this._selected = false;
- this.dataGrid.selectedNode = null;
-
- if (this._element)
- this._element.removeStyleClass("selected");
-
- if (!supressDeselectedEvent)
- this.dispatchEventToListeners("deselected");
- },
-
- traverseNextNode: function(skipHidden, stayWithin, dontPopulate, info)
- {
- if (!dontPopulate && this.hasChildren)
- this.dispatchEventToListeners("populate");
-
- if (info)
- info.depthChange = 0;
-
- var node = (!skipHidden || this.revealed) ? this.children[0] : null;
- if (node && (!skipHidden || this.expanded)) {
- if (info)
- info.depthChange = 1;
- return node;
- }
-
- if (this === stayWithin)
- return null;
-
- node = (!skipHidden || this.revealed) ? this.nextSibling : null;
- if (node)
- return node;
-
- node = this;
- while (node && !node.root && !((!skipHidden || node.revealed) ? node.nextSibling : null) && node.parent !== stayWithin) {
- if (info)
- info.depthChange -= 1;
- node = node.parent;
- }
-
- if (!node)
- return null;
-
- return (!skipHidden || node.revealed) ? node.nextSibling : null;
- },
-
- traversePreviousNode: function(skipHidden, dontPopulate)
- {
- var node = (!skipHidden || this.revealed) ? this.previousSibling : null;
- if (!dontPopulate && node && node.hasChildren)
- node.dispatchEventToListeners("populate");
-
- while (node && ((!skipHidden || (node.revealed && node.expanded)) ? node.children[node.children.length - 1] : null)) {
- if (!dontPopulate && node.hasChildren)
- node.dispatchEventToListeners("populate");
- node = ((!skipHidden || (node.revealed && node.expanded)) ? node.children[node.children.length - 1] : null);
- }
-
- if (node)
- return node;
-
- if (!this.parent || this.parent.root)
- return null;
-
- return this.parent;
- },
-
- isEventWithinDisclosureTriangle: function(event)
- {
- if (!this.hasChildren)
- return false;
- var cell = event.target.enclosingNodeOrSelfWithNodeName("td");
- if (!cell.hasStyleClass("disclosure"))
- return false;
- var computedLeftPadding = window.getComputedStyle(cell).getPropertyCSSValue("padding-left").getFloatValue(CSSPrimitiveValue.CSS_PX);
- var left = cell.totalOffsetLeft + computedLeftPadding;
- return event.pageX >= left && event.pageX <= left + this.disclosureToggleWidth;
- },
-
- _attach: function()
- {
- if (!this.dataGrid || this._attached)
- return;
-
- this._attached = true;
-
- var nextNode = null;
- var previousNode = this.traversePreviousNode(true, true);
- if (previousNode && previousNode.element.parentNode && previousNode.element.nextSibling)
- var nextNode = previousNode.element.nextSibling;
- if (!nextNode)
- nextNode = this.dataGrid.dataTableBody.lastChild;
- this.dataGrid.dataTableBody.insertBefore(this.element, nextNode);
-
- if (this.expanded)
- for (var i = 0; i < this.children.length; ++i)
- this.children[i]._attach();
- },
-
- _detach: function()
- {
- if (!this._attached)
- return;
-
- this._attached = false;
-
- if (this._element && this._element.parentNode)
- this._element.parentNode.removeChild(this._element);
-
- for (var i = 0; i < this.children.length; ++i)
- this.children[i]._detach();
- }
-}
-
-WebInspector.DataGridNode.prototype.__proto__ = WebInspector.Object.prototype;
-
-WebInspector.CreationDataGridNode = function(data, hasChildren)
-{
- WebInspector.DataGridNode.call(this, data, hasChildren);
- this.isCreationNode = true;
-}
-
-WebInspector.CreationDataGridNode.prototype = {
- makeNormal: function()
- {
- delete this.isCreationNode;
- delete this.makeNormal;
- }
-}
-
-WebInspector.CreationDataGridNode.prototype.__proto__ = WebInspector.DataGridNode.prototype;
« no previous file with comments | « resources/inspector/DOMStorageItemsView.js ('k') | resources/inspector/Database.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698