| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> | 3 * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> |
| 4 * Copyright (C) 2009 Joseph Pecoraro | 4 * Copyright (C) 2009 Joseph Pecoraro |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 * @extends {TreeElement} | 33 * @extends {TreeElement} |
| 34 * @param {!WebInspector.DOMNode} node | 34 * @param {!WebInspector.DOMNode} node |
| 35 * @param {boolean=} elementCloseTag | 35 * @param {boolean=} elementCloseTag |
| 36 */ | 36 */ |
| 37 WebInspector.ElementsTreeElement = function(node, elementCloseTag) | 37 WebInspector.ElementsTreeElement = function(node, elementCloseTag) |
| 38 { | 38 { |
| 39 // The title will be updated in onattach. | 39 // The title will be updated in onattach. |
| 40 TreeElement.call(this); | 40 TreeElement.call(this); |
| 41 this._node = node; | 41 this._node = node; |
| 42 | 42 |
| 43 this._decorationsElement = createElementWithClass("div", "hidden"); | 43 this._gutterContainer = this.listItemElement.createChild("div", "gutter-cont
ainer"); |
| 44 this.listItemElement.appendChild(this._decorationsElement); | 44 this._decorationsElement = this._gutterContainer.createChild("div", "hidden"
); |
| 45 this._decorationsElement.addEventListener("mousedown", this._decorationsClic
ked.bind(this)); |
| 45 | 46 |
| 46 this._elementCloseTag = elementCloseTag; | 47 this._elementCloseTag = elementCloseTag; |
| 47 | 48 |
| 48 if (this._node.nodeType() == Node.ELEMENT_NODE && !elementCloseTag) | 49 if (this._node.nodeType() == Node.ELEMENT_NODE && !elementCloseTag) |
| 49 this._canAddAttributes = true; | 50 this._canAddAttributes = true; |
| 50 this._searchQuery = null; | 51 this._searchQuery = null; |
| 51 this._expandedChildrenLimit = WebInspector.ElementsTreeElement.InitialChildr
enLimit; | 52 this._expandedChildrenLimit = WebInspector.ElementsTreeElement.InitialChildr
enLimit; |
| 52 if (this._node.nodeType() === Node.ELEMENT_NODE && this._node.parentNode &&
this._node.parentNode.nodeType() === Node.DOCUMENT_NODE && !this._node.parentNod
e.parentNode) | 53 if (this._node.nodeType() === Node.ELEMENT_NODE && this._node.parentNode &&
this._node.parentNode.nodeType() === Node.DOCUMENT_NODE && !this._node.parentNod
e.parentNode) |
| 53 this.setCollapsible(false); | 54 this.setCollapsible(false); |
| 54 } | 55 } |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 | 158 |
| 158 /** | 159 /** |
| 159 * @return {boolean} | 160 * @return {boolean} |
| 160 */ | 161 */ |
| 161 isEditing: function() | 162 isEditing: function() |
| 162 { | 163 { |
| 163 return !!this._editing; | 164 return !!this._editing; |
| 164 }, | 165 }, |
| 165 | 166 |
| 166 /** | 167 /** |
| 168 * @return {!Element} |
| 169 */ |
| 170 gutterElement: function() |
| 171 { |
| 172 return this._gutterContainer; |
| 173 }, |
| 174 |
| 175 _decorationsClicked: function() |
| 176 { |
| 177 this.treeOutline.dispatchEventToListeners(WebInspector.ElementsTreeOutli
ne.Events.DecorationsClicked, this._node); |
| 178 }, |
| 179 |
| 180 /** |
| 167 * @param {string} searchQuery | 181 * @param {string} searchQuery |
| 168 */ | 182 */ |
| 169 highlightSearchResults: function(searchQuery) | 183 highlightSearchResults: function(searchQuery) |
| 170 { | 184 { |
| 171 if (this._searchQuery !== searchQuery) | 185 if (this._searchQuery !== searchQuery) |
| 172 this._hideSearchHighlight(); | 186 this._hideSearchHighlight(); |
| 173 | 187 |
| 174 this._searchQuery = searchQuery; | 188 this._searchQuery = searchQuery; |
| 175 this._searchHighlightsVisible = true; | 189 this._searchHighlightsVisible = true; |
| 176 this.updateTitle(null, true); | 190 this.updateTitle(null, true); |
| (...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 765 tagNameElement.addEventListener('keyup', keyupListener, false); | 779 tagNameElement.addEventListener('keyup', keyupListener, false); |
| 766 | 780 |
| 767 var config = new WebInspector.InplaceEditor.Config(editingComitted.bind(
this), editingCancelled.bind(this), tagName); | 781 var config = new WebInspector.InplaceEditor.Config(editingComitted.bind(
this), editingCancelled.bind(this), tagName); |
| 768 this._editing = WebInspector.InplaceEditor.startEditing(tagNameElement,
config); | 782 this._editing = WebInspector.InplaceEditor.startEditing(tagNameElement,
config); |
| 769 this.listItemElement.getComponentSelection().setBaseAndExtent(tagNameEle
ment, 0, tagNameElement, 1); | 783 this.listItemElement.getComponentSelection().setBaseAndExtent(tagNameEle
ment, 0, tagNameElement, 1); |
| 770 return true; | 784 return true; |
| 771 }, | 785 }, |
| 772 | 786 |
| 773 /** | 787 /** |
| 774 * @param {function(string, string)} commitCallback | 788 * @param {function(string, string)} commitCallback |
| 789 * @param {function()} disposeCallback |
| 775 * @param {?Protocol.Error} error | 790 * @param {?Protocol.Error} error |
| 776 * @param {string} initialValue | 791 * @param {string} initialValue |
| 777 */ | 792 */ |
| 778 _startEditingAsHTML: function(commitCallback, error, initialValue) | 793 _startEditingAsHTML: function(commitCallback, disposeCallback, error, initia
lValue) |
| 779 { | 794 { |
| 780 if (error) | 795 if (error) |
| 781 return; | 796 return; |
| 782 if (this._editing) | 797 if (this._editing) |
| 783 return; | 798 return; |
| 784 | 799 |
| 785 function consume(event) | 800 function consume(event) |
| 786 { | 801 { |
| 787 if (event.eventPhase === Event.AT_TARGET) | 802 if (event.eventPhase === Event.AT_TARGET) |
| 788 event.consume(true); | 803 event.consume(true); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 817 { | 832 { |
| 818 commitCallback(initialValue, newValue); | 833 commitCallback(initialValue, newValue); |
| 819 dispose.call(this); | 834 dispose.call(this); |
| 820 } | 835 } |
| 821 | 836 |
| 822 /** | 837 /** |
| 823 * @this {WebInspector.ElementsTreeElement} | 838 * @this {WebInspector.ElementsTreeElement} |
| 824 */ | 839 */ |
| 825 function dispose() | 840 function dispose() |
| 826 { | 841 { |
| 842 disposeCallback(); |
| 827 delete this._editing; | 843 delete this._editing; |
| 828 this.treeOutline.setMultilineEditing(null); | 844 this.treeOutline.setMultilineEditing(null); |
| 829 | 845 |
| 830 // Remove editor. | 846 // Remove editor. |
| 831 this.listItemElement.removeChild(this._htmlEditElement); | 847 this.listItemElement.removeChild(this._htmlEditElement); |
| 832 delete this._htmlEditElement; | 848 delete this._htmlEditElement; |
| 833 // Unhide children item. | 849 // Unhide children item. |
| 834 if (this._childrenListNode) | 850 if (this._childrenListNode) |
| 835 this._childrenListNode.style.removeProperty("display"); | 851 this._childrenListNode.style.removeProperty("display"); |
| 836 // Unhide header items. | 852 // Unhide header items. |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1060 if (!depth) | 1076 if (!depth) |
| 1061 this.childrenListElement.classList.add("shadow-root-deep"); | 1077 this.childrenListElement.classList.add("shadow-root-deep"); |
| 1062 else | 1078 else |
| 1063 this.childrenListElement.classList.add("shadow-root-depth-"
+ depth); | 1079 this.childrenListElement.classList.add("shadow-root-depth-"
+ depth); |
| 1064 } | 1080 } |
| 1065 var highlightElement = createElement("span"); | 1081 var highlightElement = createElement("span"); |
| 1066 highlightElement.className = "highlight"; | 1082 highlightElement.className = "highlight"; |
| 1067 highlightElement.appendChild(nodeInfo); | 1083 highlightElement.appendChild(nodeInfo); |
| 1068 this.title = highlightElement; | 1084 this.title = highlightElement; |
| 1069 this.updateDecorations(); | 1085 this.updateDecorations(); |
| 1070 this.listItemElement.insertBefore(this._decorationsElement, this.lis
tItemElement.firstChild); | 1086 this.listItemElement.insertBefore(this._gutterContainer, this.listIt
emElement.firstChild); |
| 1071 delete this._highlightResult; | 1087 delete this._highlightResult; |
| 1072 } | 1088 } |
| 1073 | 1089 |
| 1074 delete this.selectionElement; | 1090 delete this.selectionElement; |
| 1075 if (this.selected) | 1091 if (this.selected) |
| 1076 this.updateSelection(); | 1092 this.updateSelection(); |
| 1077 this._preventFollowingLinksOnDoubleClick(); | 1093 this._preventFollowingLinksOnDoubleClick(); |
| 1078 this._highlightSearchResults(); | 1094 this._highlightSearchResults(); |
| 1079 }, | 1095 }, |
| 1080 | 1096 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1113 * @param {!WebInspector.DOMPresentationUtils.MarkerDecorator} decorator | 1129 * @param {!WebInspector.DOMPresentationUtils.MarkerDecorator} decorator |
| 1114 */ | 1130 */ |
| 1115 function collectDecoration(n, decorator) | 1131 function collectDecoration(n, decorator) |
| 1116 { | 1132 { |
| 1117 var decoration = decorator.decorate(n); | 1133 var decoration = decorator.decorate(n); |
| 1118 if (!decoration) | 1134 if (!decoration) |
| 1119 return; | 1135 return; |
| 1120 (n === node ? decorations : descendantDecorations).push(decoration); | 1136 (n === node ? decorations : descendantDecorations).push(decoration); |
| 1121 } | 1137 } |
| 1122 | 1138 |
| 1123 Promise.all(promises).then(setTitle.bind(this)); | 1139 Promise.all(promises).then(updateDecorationsUI.bind(this)); |
| 1124 | 1140 |
| 1125 /** | 1141 /** |
| 1126 * @this {WebInspector.ElementsTreeElement} | 1142 * @this {WebInspector.ElementsTreeElement} |
| 1127 */ | 1143 */ |
| 1128 function setTitle() | 1144 function updateDecorationsUI() |
| 1129 { | 1145 { |
| 1130 this._decorationsElement.removeChildren(); | 1146 this._decorationsElement.removeChildren(); |
| 1131 this._decorationsElement.classList.add("hidden"); | 1147 this._decorationsElement.classList.add("hidden"); |
| 1132 if (!decorations.length && !descendantDecorations.length) | 1148 if (!decorations.length && !descendantDecorations.length) |
| 1133 return; | 1149 return; |
| 1134 | 1150 |
| 1135 var colors = new Set(); | 1151 var colors = new Set(); |
| 1136 var titles = createElement("div"); | 1152 var titles = createElement("div"); |
| 1137 | 1153 |
| 1138 for (var decoration of decorations) { | 1154 for (var decoration of decorations) { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1154 descendantColors.add(decoration.color); | 1170 descendantColors.add(decoration.color); |
| 1155 } | 1171 } |
| 1156 } | 1172 } |
| 1157 | 1173 |
| 1158 var offset = 0; | 1174 var offset = 0; |
| 1159 processColors.call(this, colors, "elements-gutter-decoration"); | 1175 processColors.call(this, colors, "elements-gutter-decoration"); |
| 1160 if (!this.expanded) | 1176 if (!this.expanded) |
| 1161 processColors.call(this, descendantColors, "elements-gutter-deco
ration elements-has-decorated-children"); | 1177 processColors.call(this, descendantColors, "elements-gutter-deco
ration elements-has-decorated-children"); |
| 1162 WebInspector.Tooltip.install(this._decorationsElement, titles); | 1178 WebInspector.Tooltip.install(this._decorationsElement, titles); |
| 1163 | 1179 |
| 1180 this._gutterContainer.classList.toggle("has-decorations", this._deco
rationsElement.hasChildNodes()); |
| 1181 |
| 1164 /** | 1182 /** |
| 1165 * @param {!Set<string>} colors | 1183 * @param {!Set<string>} colors |
| 1166 * @param {string} className | 1184 * @param {string} className |
| 1167 * @this {WebInspector.ElementsTreeElement} | 1185 * @this {WebInspector.ElementsTreeElement} |
| 1168 */ | 1186 */ |
| 1169 function processColors(colors, className) | 1187 function processColors(colors, className) |
| 1170 { | 1188 { |
| 1171 for (var color of colors) { | 1189 for (var color of colors) { |
| 1172 var child = this._decorationsElement.createChild("div", clas
sName); | 1190 var child = this._decorationsElement.createChild("div", clas
sName); |
| 1173 this._decorationsElement.classList.remove("hidden"); | 1191 this._decorationsElement.classList.remove("hidden"); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1526 /** | 1544 /** |
| 1527 * @param {string} initialValue | 1545 * @param {string} initialValue |
| 1528 * @param {string} value | 1546 * @param {string} value |
| 1529 */ | 1547 */ |
| 1530 function commitChange(initialValue, value) | 1548 function commitChange(initialValue, value) |
| 1531 { | 1549 { |
| 1532 if (initialValue !== value) | 1550 if (initialValue !== value) |
| 1533 node.setOuterHTML(value, selectNode); | 1551 node.setOuterHTML(value, selectNode); |
| 1534 } | 1552 } |
| 1535 | 1553 |
| 1554 function disposeCallback() |
| 1555 { |
| 1556 if (callback) |
| 1557 callback(false); |
| 1558 } |
| 1559 |
| 1536 var node = this._node; | 1560 var node = this._node; |
| 1537 node.getOuterHTML(this._startEditingAsHTML.bind(this, commitChange)); | 1561 node.getOuterHTML(this._startEditingAsHTML.bind(this, commitChange, disp
oseCallback)); |
| 1538 }, | 1562 }, |
| 1539 | 1563 |
| 1540 _copyCSSPath: function() | 1564 _copyCSSPath: function() |
| 1541 { | 1565 { |
| 1542 InspectorFrontendHost.copyText(WebInspector.DOMPresentationUtils.cssPath
(this._node, true)); | 1566 InspectorFrontendHost.copyText(WebInspector.DOMPresentationUtils.cssPath
(this._node, true)); |
| 1543 }, | 1567 }, |
| 1544 | 1568 |
| 1545 _copyXPath: function() | 1569 _copyXPath: function() |
| 1546 { | 1570 { |
| 1547 InspectorFrontendHost.copyText(WebInspector.DOMPresentationUtils.xPath(t
his._node, true)); | 1571 InspectorFrontendHost.copyText(WebInspector.DOMPresentationUtils.xPath(t
his._node, true)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1586 | 1610 |
| 1587 if (object) | 1611 if (object) |
| 1588 object.callFunction(scrollIntoView); | 1612 object.callFunction(scrollIntoView); |
| 1589 } | 1613 } |
| 1590 | 1614 |
| 1591 this._node.resolveToObject("", scrollIntoViewCallback); | 1615 this._node.resolveToObject("", scrollIntoViewCallback); |
| 1592 }, | 1616 }, |
| 1593 | 1617 |
| 1594 __proto__: TreeElement.prototype | 1618 __proto__: TreeElement.prototype |
| 1595 } | 1619 } |
| OLD | NEW |