| 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 10 matching lines...) Expand all Loading... |
| 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| 22 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY | 22 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 23 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 /** | 30 /** |
| 31 * @implements {WebInspector.Searchable} | 31 * @implements {UI.Searchable} |
| 32 * @implements {WebInspector.TargetManager.Observer} | 32 * @implements {SDK.TargetManager.Observer} |
| 33 * @implements {WebInspector.ViewLocationResolver} | 33 * @implements {UI.ViewLocationResolver} |
| 34 * @unrestricted | 34 * @unrestricted |
| 35 */ | 35 */ |
| 36 WebInspector.ElementsPanel = class extends WebInspector.Panel { | 36 Elements.ElementsPanel = class extends UI.Panel { |
| 37 constructor() { | 37 constructor() { |
| 38 super('elements'); | 38 super('elements'); |
| 39 this.registerRequiredCSS('elements/elementsPanel.css'); | 39 this.registerRequiredCSS('elements/elementsPanel.css'); |
| 40 | 40 |
| 41 this._splitWidget = new WebInspector.SplitWidget(true, true, 'elementsPanelS
plitViewState', 325, 325); | 41 this._splitWidget = new UI.SplitWidget(true, true, 'elementsPanelSplitViewSt
ate', 325, 325); |
| 42 this._splitWidget.addEventListener( | 42 this._splitWidget.addEventListener( |
| 43 WebInspector.SplitWidget.Events.SidebarSizeChanged, this._updateTreeOutl
ineVisibleWidth.bind(this)); | 43 UI.SplitWidget.Events.SidebarSizeChanged, this._updateTreeOutlineVisible
Width.bind(this)); |
| 44 this._splitWidget.show(this.element); | 44 this._splitWidget.show(this.element); |
| 45 | 45 |
| 46 this._searchableView = new WebInspector.SearchableView(this); | 46 this._searchableView = new UI.SearchableView(this); |
| 47 this._searchableView.setMinimumSize(25, 28); | 47 this._searchableView.setMinimumSize(25, 28); |
| 48 this._searchableView.setPlaceholder(WebInspector.UIString('Find by string, s
elector, or XPath')); | 48 this._searchableView.setPlaceholder(Common.UIString('Find by string, selecto
r, or XPath')); |
| 49 var stackElement = this._searchableView.element; | 49 var stackElement = this._searchableView.element; |
| 50 | 50 |
| 51 this._contentElement = createElement('div'); | 51 this._contentElement = createElement('div'); |
| 52 var crumbsContainer = createElement('div'); | 52 var crumbsContainer = createElement('div'); |
| 53 stackElement.appendChild(this._contentElement); | 53 stackElement.appendChild(this._contentElement); |
| 54 stackElement.appendChild(crumbsContainer); | 54 stackElement.appendChild(crumbsContainer); |
| 55 | 55 |
| 56 this._splitWidget.setMainWidget(this._searchableView); | 56 this._splitWidget.setMainWidget(this._searchableView); |
| 57 | 57 |
| 58 this._contentElement.id = 'elements-content'; | 58 this._contentElement.id = 'elements-content'; |
| 59 // FIXME: crbug.com/425984 | 59 // FIXME: crbug.com/425984 |
| 60 if (WebInspector.moduleSetting('domWordWrap').get()) | 60 if (Common.moduleSetting('domWordWrap').get()) |
| 61 this._contentElement.classList.add('elements-wrap'); | 61 this._contentElement.classList.add('elements-wrap'); |
| 62 WebInspector.moduleSetting('domWordWrap').addChangeListener(this._domWordWra
pSettingChanged.bind(this)); | 62 Common.moduleSetting('domWordWrap').addChangeListener(this._domWordWrapSetti
ngChanged.bind(this)); |
| 63 | 63 |
| 64 crumbsContainer.id = 'elements-crumbs'; | 64 crumbsContainer.id = 'elements-crumbs'; |
| 65 this._breadcrumbs = new WebInspector.ElementsBreadcrumbs(); | 65 this._breadcrumbs = new Elements.ElementsBreadcrumbs(); |
| 66 this._breadcrumbs.show(crumbsContainer); | 66 this._breadcrumbs.show(crumbsContainer); |
| 67 this._breadcrumbs.addEventListener( | 67 this._breadcrumbs.addEventListener( |
| 68 WebInspector.ElementsBreadcrumbs.Events.NodeSelected, this._crumbNodeSel
ected, this); | 68 Elements.ElementsBreadcrumbs.Events.NodeSelected, this._crumbNodeSelecte
d, this); |
| 69 | 69 |
| 70 this._currentToolbarPane = null; | 70 this._currentToolbarPane = null; |
| 71 | 71 |
| 72 this._stylesWidget = new WebInspector.StylesSidebarPane(); | 72 this._stylesWidget = new Elements.StylesSidebarPane(); |
| 73 this._computedStyleWidget = new WebInspector.ComputedStyleWidget(); | 73 this._computedStyleWidget = new Elements.ComputedStyleWidget(); |
| 74 this._metricsWidget = new WebInspector.MetricsSidebarPane(); | 74 this._metricsWidget = new Elements.MetricsSidebarPane(); |
| 75 | 75 |
| 76 this._stylesSidebarToolbar = this._createStylesSidebarToolbar(); | 76 this._stylesSidebarToolbar = this._createStylesSidebarToolbar(); |
| 77 | 77 |
| 78 WebInspector.moduleSetting('sidebarPosition').addChangeListener(this._update
SidebarPosition.bind(this)); | 78 Common.moduleSetting('sidebarPosition').addChangeListener(this._updateSideba
rPosition.bind(this)); |
| 79 this._updateSidebarPosition(); | 79 this._updateSidebarPosition(); |
| 80 | 80 |
| 81 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */ | 81 /** @type {!Array.<!Elements.ElementsTreeOutline>} */ |
| 82 this._treeOutlines = []; | 82 this._treeOutlines = []; |
| 83 WebInspector.targetManager.observeTargets(this); | 83 SDK.targetManager.observeTargets(this); |
| 84 WebInspector.moduleSetting('showUAShadowDOM').addChangeListener(this._showUA
ShadowDOMChanged.bind(this)); | 84 Common.moduleSetting('showUAShadowDOM').addChangeListener(this._showUAShadow
DOMChanged.bind(this)); |
| 85 WebInspector.targetManager.addModelListener( | 85 SDK.targetManager.addModelListener( |
| 86 WebInspector.DOMModel, WebInspector.DOMModel.Events.DocumentUpdated, thi
s._documentUpdatedEvent, this); | 86 SDK.DOMModel, SDK.DOMModel.Events.DocumentUpdated, this._documentUpdated
Event, this); |
| 87 WebInspector.extensionServer.addEventListener( | 87 Extensions.extensionServer.addEventListener( |
| 88 WebInspector.ExtensionServer.Events.SidebarPaneAdded, this._extensionSid
ebarPaneAdded, this); | 88 Extensions.ExtensionServer.Events.SidebarPaneAdded, this._extensionSideb
arPaneAdded, this); |
| 89 } | 89 } |
| 90 | 90 |
| 91 /** | 91 /** |
| 92 * @return {!WebInspector.ElementsPanel} | 92 * @return {!Elements.ElementsPanel} |
| 93 */ | 93 */ |
| 94 static instance() { | 94 static instance() { |
| 95 return /** @type {!WebInspector.ElementsPanel} */ (self.runtime.sharedInstan
ce(WebInspector.ElementsPanel)); | 95 return /** @type {!Elements.ElementsPanel} */ (self.runtime.sharedInstance(E
lements.ElementsPanel)); |
| 96 } | 96 } |
| 97 | 97 |
| 98 /** | 98 /** |
| 99 * @param {!WebInspector.CSSProperty} cssProperty | 99 * @param {!SDK.CSSProperty} cssProperty |
| 100 */ | 100 */ |
| 101 _revealProperty(cssProperty) { | 101 _revealProperty(cssProperty) { |
| 102 return this.sidebarPaneView.showView(this._stylesViewToReveal).then(() => { | 102 return this.sidebarPaneView.showView(this._stylesViewToReveal).then(() => { |
| 103 this._stylesWidget.revealProperty(/** @type {!WebInspector.CSSProperty} */
(cssProperty)); | 103 this._stylesWidget.revealProperty(/** @type {!SDK.CSSProperty} */ (cssProp
erty)); |
| 104 }); | 104 }); |
| 105 } | 105 } |
| 106 | 106 |
| 107 /** | 107 /** |
| 108 * @return {!Element} | 108 * @return {!Element} |
| 109 */ | 109 */ |
| 110 _createStylesSidebarToolbar() { | 110 _createStylesSidebarToolbar() { |
| 111 var container = createElementWithClass('div', 'styles-sidebar-pane-toolbar-c
ontainer'); | 111 var container = createElementWithClass('div', 'styles-sidebar-pane-toolbar-c
ontainer'); |
| 112 var hbox = container.createChild('div', 'hbox styles-sidebar-pane-toolbar'); | 112 var hbox = container.createChild('div', 'hbox styles-sidebar-pane-toolbar'); |
| 113 var filterContainerElement = hbox.createChild('div', 'styles-sidebar-pane-fi
lter-box'); | 113 var filterContainerElement = hbox.createChild('div', 'styles-sidebar-pane-fi
lter-box'); |
| 114 var filterInput = WebInspector.StylesSidebarPane.createPropertyFilterElement
( | 114 var filterInput = Elements.StylesSidebarPane.createPropertyFilterElement( |
| 115 WebInspector.UIString('Filter'), hbox, this._stylesWidget.onFilterChange
d.bind(this._stylesWidget)); | 115 Common.UIString('Filter'), hbox, this._stylesWidget.onFilterChanged.bind
(this._stylesWidget)); |
| 116 filterContainerElement.appendChild(filterInput); | 116 filterContainerElement.appendChild(filterInput); |
| 117 var toolbar = new WebInspector.Toolbar('styles-pane-toolbar', hbox); | 117 var toolbar = new UI.Toolbar('styles-pane-toolbar', hbox); |
| 118 toolbar.makeToggledGray(); | 118 toolbar.makeToggledGray(); |
| 119 toolbar.appendLocationItems('styles-sidebarpane-toolbar'); | 119 toolbar.appendLocationItems('styles-sidebarpane-toolbar'); |
| 120 var toolbarPaneContainer = container.createChild('div', 'styles-sidebar-tool
bar-pane-container'); | 120 var toolbarPaneContainer = container.createChild('div', 'styles-sidebar-tool
bar-pane-container'); |
| 121 this._toolbarPaneElement = createElementWithClass('div', 'styles-sidebar-too
lbar-pane'); | 121 this._toolbarPaneElement = createElementWithClass('div', 'styles-sidebar-too
lbar-pane'); |
| 122 toolbarPaneContainer.appendChild(this._toolbarPaneElement); | 122 toolbarPaneContainer.appendChild(this._toolbarPaneElement); |
| 123 return container; | 123 return container; |
| 124 } | 124 } |
| 125 | 125 |
| 126 /** | 126 /** |
| 127 * @override | 127 * @override |
| 128 * @param {string} locationName | 128 * @param {string} locationName |
| 129 * @return {?WebInspector.ViewLocation} | 129 * @return {?UI.ViewLocation} |
| 130 */ | 130 */ |
| 131 resolveLocation(locationName) { | 131 resolveLocation(locationName) { |
| 132 return this.sidebarPaneView; | 132 return this.sidebarPaneView; |
| 133 } | 133 } |
| 134 | 134 |
| 135 /** | 135 /** |
| 136 * @param {?WebInspector.Widget} widget | 136 * @param {?UI.Widget} widget |
| 137 * @param {!WebInspector.ToolbarToggle=} toggle | 137 * @param {!UI.ToolbarToggle=} toggle |
| 138 */ | 138 */ |
| 139 showToolbarPane(widget, toggle) { | 139 showToolbarPane(widget, toggle) { |
| 140 if (this._pendingWidgetToggle) | 140 if (this._pendingWidgetToggle) |
| 141 this._pendingWidgetToggle.setToggled(false); | 141 this._pendingWidgetToggle.setToggled(false); |
| 142 this._pendingWidgetToggle = toggle; | 142 this._pendingWidgetToggle = toggle; |
| 143 | 143 |
| 144 if (this._animatedToolbarPane !== undefined) | 144 if (this._animatedToolbarPane !== undefined) |
| 145 this._pendingWidget = widget; | 145 this._pendingWidget = widget; |
| 146 else | 146 else |
| 147 this._startToolbarPaneAnimation(widget); | 147 this._startToolbarPaneAnimation(widget); |
| 148 | 148 |
| 149 if (widget && toggle) | 149 if (widget && toggle) |
| 150 toggle.setToggled(true); | 150 toggle.setToggled(true); |
| 151 } | 151 } |
| 152 | 152 |
| 153 /** | 153 /** |
| 154 * @param {?WebInspector.Widget} widget | 154 * @param {?UI.Widget} widget |
| 155 */ | 155 */ |
| 156 _startToolbarPaneAnimation(widget) { | 156 _startToolbarPaneAnimation(widget) { |
| 157 if (widget === this._currentToolbarPane) | 157 if (widget === this._currentToolbarPane) |
| 158 return; | 158 return; |
| 159 | 159 |
| 160 if (widget && this._currentToolbarPane) { | 160 if (widget && this._currentToolbarPane) { |
| 161 this._currentToolbarPane.detach(); | 161 this._currentToolbarPane.detach(); |
| 162 widget.show(this._toolbarPaneElement); | 162 widget.show(this._toolbarPaneElement); |
| 163 this._currentToolbarPane = widget; | 163 this._currentToolbarPane = widget; |
| 164 this._currentToolbarPane.focus(); | 164 this._currentToolbarPane.focus(); |
| 165 return; | 165 return; |
| 166 } | 166 } |
| 167 | 167 |
| 168 this._animatedToolbarPane = widget; | 168 this._animatedToolbarPane = widget; |
| 169 | 169 |
| 170 if (this._currentToolbarPane) | 170 if (this._currentToolbarPane) |
| 171 this._toolbarPaneElement.style.animationName = 'styles-element-state-pane-
slideout'; | 171 this._toolbarPaneElement.style.animationName = 'styles-element-state-pane-
slideout'; |
| 172 else if (widget) | 172 else if (widget) |
| 173 this._toolbarPaneElement.style.animationName = 'styles-element-state-pane-
slidein'; | 173 this._toolbarPaneElement.style.animationName = 'styles-element-state-pane-
slidein'; |
| 174 | 174 |
| 175 if (widget) | 175 if (widget) |
| 176 widget.show(this._toolbarPaneElement); | 176 widget.show(this._toolbarPaneElement); |
| 177 | 177 |
| 178 var listener = onAnimationEnd.bind(this); | 178 var listener = onAnimationEnd.bind(this); |
| 179 this._toolbarPaneElement.addEventListener('animationend', listener, false); | 179 this._toolbarPaneElement.addEventListener('animationend', listener, false); |
| 180 | 180 |
| 181 /** | 181 /** |
| 182 * @this {WebInspector.ElementsPanel} | 182 * @this {Elements.ElementsPanel} |
| 183 */ | 183 */ |
| 184 function onAnimationEnd() { | 184 function onAnimationEnd() { |
| 185 this._toolbarPaneElement.style.removeProperty('animation-name'); | 185 this._toolbarPaneElement.style.removeProperty('animation-name'); |
| 186 this._toolbarPaneElement.removeEventListener('animationend', listener, fal
se); | 186 this._toolbarPaneElement.removeEventListener('animationend', listener, fal
se); |
| 187 | 187 |
| 188 if (this._currentToolbarPane) | 188 if (this._currentToolbarPane) |
| 189 this._currentToolbarPane.detach(); | 189 this._currentToolbarPane.detach(); |
| 190 | 190 |
| 191 this._currentToolbarPane = this._animatedToolbarPane; | 191 this._currentToolbarPane = this._animatedToolbarPane; |
| 192 if (this._currentToolbarPane) | 192 if (this._currentToolbarPane) |
| 193 this._currentToolbarPane.focus(); | 193 this._currentToolbarPane.focus(); |
| 194 delete this._animatedToolbarPane; | 194 delete this._animatedToolbarPane; |
| 195 | 195 |
| 196 if (this._pendingWidget !== undefined) { | 196 if (this._pendingWidget !== undefined) { |
| 197 this._startToolbarPaneAnimation(this._pendingWidget); | 197 this._startToolbarPaneAnimation(this._pendingWidget); |
| 198 delete this._pendingWidget; | 198 delete this._pendingWidget; |
| 199 } | 199 } |
| 200 } | 200 } |
| 201 } | 201 } |
| 202 | 202 |
| 203 /** | 203 /** |
| 204 * @override | 204 * @override |
| 205 * @param {!WebInspector.Target} target | 205 * @param {!SDK.Target} target |
| 206 */ | 206 */ |
| 207 targetAdded(target) { | 207 targetAdded(target) { |
| 208 var domModel = WebInspector.DOMModel.fromTarget(target); | 208 var domModel = SDK.DOMModel.fromTarget(target); |
| 209 if (!domModel) | 209 if (!domModel) |
| 210 return; | 210 return; |
| 211 var treeOutline = new WebInspector.ElementsTreeOutline(domModel, true, true)
; | 211 var treeOutline = new Elements.ElementsTreeOutline(domModel, true, true); |
| 212 treeOutline.setWordWrap(WebInspector.moduleSetting('domWordWrap').get()); | 212 treeOutline.setWordWrap(Common.moduleSetting('domWordWrap').get()); |
| 213 treeOutline.wireToDOMModel(); | 213 treeOutline.wireToDOMModel(); |
| 214 treeOutline.addEventListener( | 214 treeOutline.addEventListener( |
| 215 WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, this._selec
tedNodeChanged, this); | 215 Elements.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedN
odeChanged, this); |
| 216 treeOutline.addEventListener( | 216 treeOutline.addEventListener( |
| 217 WebInspector.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updat
eBreadcrumbIfNeeded, this); | 217 Elements.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBre
adcrumbIfNeeded, this); |
| 218 new WebInspector.ElementsTreeElementHighlighter(treeOutline); | 218 new Elements.ElementsTreeElementHighlighter(treeOutline); |
| 219 this._treeOutlines.push(treeOutline); | 219 this._treeOutlines.push(treeOutline); |
| 220 | 220 |
| 221 // Perform attach if necessary. | 221 // Perform attach if necessary. |
| 222 if (this.isShowing()) | 222 if (this.isShowing()) |
| 223 this.wasShown(); | 223 this.wasShown(); |
| 224 } | 224 } |
| 225 | 225 |
| 226 /** | 226 /** |
| 227 * @override | 227 * @override |
| 228 * @param {!WebInspector.Target} target | 228 * @param {!SDK.Target} target |
| 229 */ | 229 */ |
| 230 targetRemoved(target) { | 230 targetRemoved(target) { |
| 231 var domModel = WebInspector.DOMModel.fromTarget(target); | 231 var domModel = SDK.DOMModel.fromTarget(target); |
| 232 if (!domModel) | 232 if (!domModel) |
| 233 return; | 233 return; |
| 234 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(domModel); | 234 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); |
| 235 treeOutline.unwireFromDOMModel(); | 235 treeOutline.unwireFromDOMModel(); |
| 236 this._treeOutlines.remove(treeOutline); | 236 this._treeOutlines.remove(treeOutline); |
| 237 treeOutline.element.remove(); | 237 treeOutline.element.remove(); |
| 238 } | 238 } |
| 239 | 239 |
| 240 _updateTreeOutlineVisibleWidth() { | 240 _updateTreeOutlineVisibleWidth() { |
| 241 if (!this._treeOutlines.length) | 241 if (!this._treeOutlines.length) |
| 242 return; | 242 return; |
| 243 | 243 |
| 244 var width = this._splitWidget.element.offsetWidth; | 244 var width = this._splitWidget.element.offsetWidth; |
| 245 if (this._splitWidget.isVertical()) | 245 if (this._splitWidget.isVertical()) |
| 246 width -= this._splitWidget.sidebarSize(); | 246 width -= this._splitWidget.sidebarSize(); |
| 247 for (var i = 0; i < this._treeOutlines.length; ++i) { | 247 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 248 this._treeOutlines[i].setVisibleWidth(width); | 248 this._treeOutlines[i].setVisibleWidth(width); |
| 249 } | 249 } |
| 250 this._breadcrumbs.updateSizes(); | 250 this._breadcrumbs.updateSizes(); |
| 251 } | 251 } |
| 252 | 252 |
| 253 /** | 253 /** |
| 254 * @override | 254 * @override |
| 255 */ | 255 */ |
| 256 focus() { | 256 focus() { |
| 257 if (this._treeOutlines.length) | 257 if (this._treeOutlines.length) |
| 258 this._treeOutlines[0].focus(); | 258 this._treeOutlines[0].focus(); |
| 259 } | 259 } |
| 260 | 260 |
| 261 /** | 261 /** |
| 262 * @override | 262 * @override |
| 263 * @return {!WebInspector.SearchableView} | 263 * @return {!UI.SearchableView} |
| 264 */ | 264 */ |
| 265 searchableView() { | 265 searchableView() { |
| 266 return this._searchableView; | 266 return this._searchableView; |
| 267 } | 267 } |
| 268 | 268 |
| 269 /** | 269 /** |
| 270 * @override | 270 * @override |
| 271 */ | 271 */ |
| 272 wasShown() { | 272 wasShown() { |
| 273 WebInspector.context.setFlavor(WebInspector.ElementsPanel, this); | 273 UI.context.setFlavor(Elements.ElementsPanel, this); |
| 274 | 274 |
| 275 for (var i = 0; i < this._treeOutlines.length; ++i) { | 275 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 276 var treeOutline = this._treeOutlines[i]; | 276 var treeOutline = this._treeOutlines[i]; |
| 277 // Attach heavy component lazily | 277 // Attach heavy component lazily |
| 278 if (treeOutline.element.parentElement !== this._contentElement) | 278 if (treeOutline.element.parentElement !== this._contentElement) |
| 279 this._contentElement.appendChild(treeOutline.element); | 279 this._contentElement.appendChild(treeOutline.element); |
| 280 } | 280 } |
| 281 super.wasShown(); | 281 super.wasShown(); |
| 282 this._breadcrumbs.update(); | 282 this._breadcrumbs.update(); |
| 283 | 283 |
| 284 for (var i = 0; i < this._treeOutlines.length; ++i) { | 284 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 285 var treeOutline = this._treeOutlines[i]; | 285 var treeOutline = this._treeOutlines[i]; |
| 286 treeOutline.setVisible(true); | 286 treeOutline.setVisible(true); |
| 287 | 287 |
| 288 if (!treeOutline.rootDOMNode) | 288 if (!treeOutline.rootDOMNode) |
| 289 if (treeOutline.domModel().existingDocument()) | 289 if (treeOutline.domModel().existingDocument()) |
| 290 this._documentUpdated(treeOutline.domModel(), treeOutline.domModel().e
xistingDocument()); | 290 this._documentUpdated(treeOutline.domModel(), treeOutline.domModel().e
xistingDocument()); |
| 291 else | 291 else |
| 292 treeOutline.domModel().requestDocument(); | 292 treeOutline.domModel().requestDocument(); |
| 293 } | 293 } |
| 294 this.focus(); | 294 this.focus(); |
| 295 } | 295 } |
| 296 | 296 |
| 297 /** | 297 /** |
| 298 * @override | 298 * @override |
| 299 */ | 299 */ |
| 300 willHide() { | 300 willHide() { |
| 301 WebInspector.context.setFlavor(WebInspector.ElementsPanel, null); | 301 UI.context.setFlavor(Elements.ElementsPanel, null); |
| 302 | 302 |
| 303 WebInspector.DOMModel.hideDOMNodeHighlight(); | 303 SDK.DOMModel.hideDOMNodeHighlight(); |
| 304 for (var i = 0; i < this._treeOutlines.length; ++i) { | 304 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 305 var treeOutline = this._treeOutlines[i]; | 305 var treeOutline = this._treeOutlines[i]; |
| 306 treeOutline.setVisible(false); | 306 treeOutline.setVisible(false); |
| 307 // Detach heavy component on hide | 307 // Detach heavy component on hide |
| 308 this._contentElement.removeChild(treeOutline.element); | 308 this._contentElement.removeChild(treeOutline.element); |
| 309 } | 309 } |
| 310 if (this._popoverHelper) | 310 if (this._popoverHelper) |
| 311 this._popoverHelper.hidePopover(); | 311 this._popoverHelper.hidePopover(); |
| 312 super.willHide(); | 312 super.willHide(); |
| 313 } | 313 } |
| 314 | 314 |
| 315 /** | 315 /** |
| 316 * @override | 316 * @override |
| 317 */ | 317 */ |
| 318 onResize() { | 318 onResize() { |
| 319 if (WebInspector.moduleSetting('sidebarPosition').get() === 'auto') | 319 if (Common.moduleSetting('sidebarPosition').get() === 'auto') |
| 320 this.element.window().requestAnimationFrame(this._updateSidebarPosition.bi
nd(this)); // Do not force layout. | 320 this.element.window().requestAnimationFrame(this._updateSidebarPosition.bi
nd(this)); // Do not force layout. |
| 321 this._updateTreeOutlineVisibleWidth(); | 321 this._updateTreeOutlineVisibleWidth(); |
| 322 } | 322 } |
| 323 | 323 |
| 324 /** | 324 /** |
| 325 * @param {!WebInspector.Event} event | 325 * @param {!Common.Event} event |
| 326 */ | 326 */ |
| 327 _selectedNodeChanged(event) { | 327 _selectedNodeChanged(event) { |
| 328 var selectedNode = /** @type {?WebInspector.DOMNode} */ (event.data.node); | 328 var selectedNode = /** @type {?SDK.DOMNode} */ (event.data.node); |
| 329 var focus = /** @type {boolean} */ (event.data.focus); | 329 var focus = /** @type {boolean} */ (event.data.focus); |
| 330 for (var i = 0; i < this._treeOutlines.length; ++i) { | 330 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 331 if (!selectedNode || selectedNode.domModel() !== this._treeOutlines[i].dom
Model()) | 331 if (!selectedNode || selectedNode.domModel() !== this._treeOutlines[i].dom
Model()) |
| 332 this._treeOutlines[i].selectDOMNode(null); | 332 this._treeOutlines[i].selectDOMNode(null); |
| 333 } | 333 } |
| 334 | 334 |
| 335 this._breadcrumbs.setSelectedNode(selectedNode); | 335 this._breadcrumbs.setSelectedNode(selectedNode); |
| 336 | 336 |
| 337 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode); | 337 UI.context.setFlavor(SDK.DOMNode, selectedNode); |
| 338 | 338 |
| 339 if (!selectedNode) | 339 if (!selectedNode) |
| 340 return; | 340 return; |
| 341 selectedNode.setAsInspectedNode(); | 341 selectedNode.setAsInspectedNode(); |
| 342 if (focus) { | 342 if (focus) { |
| 343 this._selectedNodeOnReset = selectedNode; | 343 this._selectedNodeOnReset = selectedNode; |
| 344 this._hasNonDefaultSelectedNode = true; | 344 this._hasNonDefaultSelectedNode = true; |
| 345 } | 345 } |
| 346 | 346 |
| 347 var executionContexts = selectedNode.target().runtimeModel.executionContexts
(); | 347 var executionContexts = selectedNode.target().runtimeModel.executionContexts
(); |
| 348 var nodeFrameId = selectedNode.frameId(); | 348 var nodeFrameId = selectedNode.frameId(); |
| 349 for (var context of executionContexts) { | 349 for (var context of executionContexts) { |
| 350 if (context.frameId === nodeFrameId) { | 350 if (context.frameId === nodeFrameId) { |
| 351 WebInspector.context.setFlavor(WebInspector.ExecutionContext, context); | 351 UI.context.setFlavor(SDK.ExecutionContext, context); |
| 352 break; | 352 break; |
| 353 } | 353 } |
| 354 } | 354 } |
| 355 } | 355 } |
| 356 | 356 |
| 357 _reset() { | 357 _reset() { |
| 358 delete this.currentQuery; | 358 delete this.currentQuery; |
| 359 } | 359 } |
| 360 | 360 |
| 361 /** | 361 /** |
| 362 * @param {!WebInspector.Event} event | 362 * @param {!Common.Event} event |
| 363 */ | 363 */ |
| 364 _documentUpdatedEvent(event) { | 364 _documentUpdatedEvent(event) { |
| 365 this._documentUpdated( | 365 this._documentUpdated( |
| 366 /** @type {!WebInspector.DOMModel} */ (event.target), /** @type {?WebIns
pector.DOMDocument} */ (event.data)); | 366 /** @type {!SDK.DOMModel} */ (event.target), /** @type {?SDK.DOMDocument
} */ (event.data)); |
| 367 } | 367 } |
| 368 | 368 |
| 369 /** | 369 /** |
| 370 * @param {!WebInspector.DOMModel} domModel | 370 * @param {!SDK.DOMModel} domModel |
| 371 * @param {?WebInspector.DOMDocument} inspectedRootDocument | 371 * @param {?SDK.DOMDocument} inspectedRootDocument |
| 372 */ | 372 */ |
| 373 _documentUpdated(domModel, inspectedRootDocument) { | 373 _documentUpdated(domModel, inspectedRootDocument) { |
| 374 this._reset(); | 374 this._reset(); |
| 375 this.searchCanceled(); | 375 this.searchCanceled(); |
| 376 | 376 |
| 377 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(domModel); | 377 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(domModel); |
| 378 treeOutline.rootDOMNode = inspectedRootDocument; | 378 treeOutline.rootDOMNode = inspectedRootDocument; |
| 379 | 379 |
| 380 if (!inspectedRootDocument) { | 380 if (!inspectedRootDocument) { |
| 381 if (this.isShowing()) | 381 if (this.isShowing()) |
| 382 domModel.requestDocument(); | 382 domModel.requestDocument(); |
| 383 return; | 383 return; |
| 384 } | 384 } |
| 385 | 385 |
| 386 this._hasNonDefaultSelectedNode = false; | 386 this._hasNonDefaultSelectedNode = false; |
| 387 WebInspector.domBreakpointsSidebarPane.restoreBreakpoints(inspectedRootDocum
ent); | 387 Components.domBreakpointsSidebarPane.restoreBreakpoints(inspectedRootDocumen
t); |
| 388 | 388 |
| 389 if (this._omitDefaultSelection) | 389 if (this._omitDefaultSelection) |
| 390 return; | 390 return; |
| 391 | 391 |
| 392 var savedSelectedNodeOnReset = this._selectedNodeOnReset; | 392 var savedSelectedNodeOnReset = this._selectedNodeOnReset; |
| 393 restoreNode.call(this, domModel, this._selectedNodeOnReset); | 393 restoreNode.call(this, domModel, this._selectedNodeOnReset); |
| 394 | 394 |
| 395 /** | 395 /** |
| 396 * @param {!WebInspector.DOMModel} domModel | 396 * @param {!SDK.DOMModel} domModel |
| 397 * @param {?WebInspector.DOMNode} staleNode | 397 * @param {?SDK.DOMNode} staleNode |
| 398 * @this {WebInspector.ElementsPanel} | 398 * @this {Elements.ElementsPanel} |
| 399 */ | 399 */ |
| 400 function restoreNode(domModel, staleNode) { | 400 function restoreNode(domModel, staleNode) { |
| 401 var nodePath = staleNode ? staleNode.path() : null; | 401 var nodePath = staleNode ? staleNode.path() : null; |
| 402 if (!nodePath) { | 402 if (!nodePath) { |
| 403 onNodeRestored.call(this, null); | 403 onNodeRestored.call(this, null); |
| 404 return; | 404 return; |
| 405 } | 405 } |
| 406 domModel.pushNodeByPathToFrontend(nodePath, onNodeRestored.bind(this)); | 406 domModel.pushNodeByPathToFrontend(nodePath, onNodeRestored.bind(this)); |
| 407 } | 407 } |
| 408 | 408 |
| 409 /** | 409 /** |
| 410 * @param {?Protocol.DOM.NodeId} restoredNodeId | 410 * @param {?Protocol.DOM.NodeId} restoredNodeId |
| 411 * @this {WebInspector.ElementsPanel} | 411 * @this {Elements.ElementsPanel} |
| 412 */ | 412 */ |
| 413 function onNodeRestored(restoredNodeId) { | 413 function onNodeRestored(restoredNodeId) { |
| 414 if (savedSelectedNodeOnReset !== this._selectedNodeOnReset) | 414 if (savedSelectedNodeOnReset !== this._selectedNodeOnReset) |
| 415 return; | 415 return; |
| 416 var node = restoredNodeId ? domModel.nodeForId(restoredNodeId) : null; | 416 var node = restoredNodeId ? domModel.nodeForId(restoredNodeId) : null; |
| 417 if (!node) { | 417 if (!node) { |
| 418 var inspectedDocument = domModel.existingDocument(); | 418 var inspectedDocument = domModel.existingDocument(); |
| 419 node = inspectedDocument ? inspectedDocument.body || inspectedDocument.d
ocumentElement : null; | 419 node = inspectedDocument ? inspectedDocument.body || inspectedDocument.d
ocumentElement : null; |
| 420 } | 420 } |
| 421 this._setDefaultSelectedNode(node); | 421 this._setDefaultSelectedNode(node); |
| 422 this._lastSelectedNodeSelectedForTest(); | 422 this._lastSelectedNodeSelectedForTest(); |
| 423 } | 423 } |
| 424 } | 424 } |
| 425 | 425 |
| 426 _lastSelectedNodeSelectedForTest() { | 426 _lastSelectedNodeSelectedForTest() { |
| 427 } | 427 } |
| 428 | 428 |
| 429 /** | 429 /** |
| 430 * @param {?WebInspector.DOMNode} node | 430 * @param {?SDK.DOMNode} node |
| 431 */ | 431 */ |
| 432 _setDefaultSelectedNode(node) { | 432 _setDefaultSelectedNode(node) { |
| 433 if (!node || this._hasNonDefaultSelectedNode || this._pendingNodeReveal) | 433 if (!node || this._hasNonDefaultSelectedNode || this._pendingNodeReveal) |
| 434 return; | 434 return; |
| 435 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(node.domModel
()); | 435 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(node.domModel()); |
| 436 if (!treeOutline) | 436 if (!treeOutline) |
| 437 return; | 437 return; |
| 438 this.selectDOMNode(node); | 438 this.selectDOMNode(node); |
| 439 if (treeOutline.selectedTreeElement) | 439 if (treeOutline.selectedTreeElement) |
| 440 treeOutline.selectedTreeElement.expand(); | 440 treeOutline.selectedTreeElement.expand(); |
| 441 } | 441 } |
| 442 | 442 |
| 443 /** | 443 /** |
| 444 * @override | 444 * @override |
| 445 */ | 445 */ |
| 446 searchCanceled() { | 446 searchCanceled() { |
| 447 delete this._searchQuery; | 447 delete this._searchQuery; |
| 448 this._hideSearchHighlights(); | 448 this._hideSearchHighlights(); |
| 449 | 449 |
| 450 this._searchableView.updateSearchMatchesCount(0); | 450 this._searchableView.updateSearchMatchesCount(0); |
| 451 | 451 |
| 452 delete this._currentSearchResultIndex; | 452 delete this._currentSearchResultIndex; |
| 453 delete this._searchResults; | 453 delete this._searchResults; |
| 454 | 454 |
| 455 WebInspector.DOMModel.cancelSearch(); | 455 SDK.DOMModel.cancelSearch(); |
| 456 } | 456 } |
| 457 | 457 |
| 458 /** | 458 /** |
| 459 * @override | 459 * @override |
| 460 * @param {!WebInspector.SearchableView.SearchConfig} searchConfig | 460 * @param {!UI.SearchableView.SearchConfig} searchConfig |
| 461 * @param {boolean} shouldJump | 461 * @param {boolean} shouldJump |
| 462 * @param {boolean=} jumpBackwards | 462 * @param {boolean=} jumpBackwards |
| 463 */ | 463 */ |
| 464 performSearch(searchConfig, shouldJump, jumpBackwards) { | 464 performSearch(searchConfig, shouldJump, jumpBackwards) { |
| 465 var query = searchConfig.query; | 465 var query = searchConfig.query; |
| 466 // Call searchCanceled since it will reset everything we need before doing a
new search. | 466 // Call searchCanceled since it will reset everything we need before doing a
new search. |
| 467 this.searchCanceled(); | 467 this.searchCanceled(); |
| 468 | 468 |
| 469 const whitespaceTrimmedQuery = query.trim(); | 469 const whitespaceTrimmedQuery = query.trim(); |
| 470 if (!whitespaceTrimmedQuery.length) | 470 if (!whitespaceTrimmedQuery.length) |
| 471 return; | 471 return; |
| 472 | 472 |
| 473 this._searchQuery = query; | 473 this._searchQuery = query; |
| 474 | 474 |
| 475 var promises = []; | 475 var promises = []; |
| 476 var domModels = WebInspector.DOMModel.instances(); | 476 var domModels = SDK.DOMModel.instances(); |
| 477 for (var domModel of domModels) | 477 for (var domModel of domModels) |
| 478 promises.push( | 478 promises.push( |
| 479 domModel.performSearchPromise(whitespaceTrimmedQuery, WebInspector.mod
uleSetting('showUAShadowDOM').get())); | 479 domModel.performSearchPromise(whitespaceTrimmedQuery, Common.moduleSet
ting('showUAShadowDOM').get())); |
| 480 Promise.all(promises).then(resultCountCallback.bind(this)); | 480 Promise.all(promises).then(resultCountCallback.bind(this)); |
| 481 | 481 |
| 482 /** | 482 /** |
| 483 * @param {!Array.<number>} resultCounts | 483 * @param {!Array.<number>} resultCounts |
| 484 * @this {WebInspector.ElementsPanel} | 484 * @this {Elements.ElementsPanel} |
| 485 */ | 485 */ |
| 486 function resultCountCallback(resultCounts) { | 486 function resultCountCallback(resultCounts) { |
| 487 /** | 487 /** |
| 488 * @type {!Array.<{domModel: !WebInspector.DOMModel, index: number, node:
(?WebInspector.DOMNode|undefined)}>} | 488 * @type {!Array.<{domModel: !SDK.DOMModel, index: number, node: (?SDK.DOM
Node|undefined)}>} |
| 489 */ | 489 */ |
| 490 this._searchResults = []; | 490 this._searchResults = []; |
| 491 for (var i = 0; i < resultCounts.length; ++i) { | 491 for (var i = 0; i < resultCounts.length; ++i) { |
| 492 var resultCount = resultCounts[i]; | 492 var resultCount = resultCounts[i]; |
| 493 for (var j = 0; j < resultCount; ++j) | 493 for (var j = 0; j < resultCount; ++j) |
| 494 this._searchResults.push({domModel: domModels[i], index: j, node: unde
fined}); | 494 this._searchResults.push({domModel: domModels[i], index: j, node: unde
fined}); |
| 495 } | 495 } |
| 496 this._searchableView.updateSearchMatchesCount(this._searchResults.length); | 496 this._searchableView.updateSearchMatchesCount(this._searchResults.length); |
| 497 if (!this._searchResults.length) | 497 if (!this._searchResults.length) |
| 498 return; | 498 return; |
| 499 this._currentSearchResultIndex = -1; | 499 this._currentSearchResultIndex = -1; |
| 500 | 500 |
| 501 if (shouldJump) | 501 if (shouldJump) |
| 502 this._jumpToSearchResult(jumpBackwards ? -1 : 0); | 502 this._jumpToSearchResult(jumpBackwards ? -1 : 0); |
| 503 } | 503 } |
| 504 } | 504 } |
| 505 | 505 |
| 506 _domWordWrapSettingChanged(event) { | 506 _domWordWrapSettingChanged(event) { |
| 507 // FIXME: crbug.com/425984 | 507 // FIXME: crbug.com/425984 |
| 508 this._contentElement.classList.toggle('elements-wrap', event.data); | 508 this._contentElement.classList.toggle('elements-wrap', event.data); |
| 509 for (var i = 0; i < this._treeOutlines.length; ++i) | 509 for (var i = 0; i < this._treeOutlines.length; ++i) |
| 510 this._treeOutlines[i].setWordWrap(/** @type {boolean} */ (event.data)); | 510 this._treeOutlines[i].setWordWrap(/** @type {boolean} */ (event.data)); |
| 511 } | 511 } |
| 512 | 512 |
| 513 switchToAndFocus(node) { | 513 switchToAndFocus(node) { |
| 514 // Reset search restore. | 514 // Reset search restore. |
| 515 this._searchableView.cancelSearch(); | 515 this._searchableView.cancelSearch(); |
| 516 WebInspector.viewManager.showView('elements').then(() => this.selectDOMNode(
node, true)); | 516 UI.viewManager.showView('elements').then(() => this.selectDOMNode(node, true
)); |
| 517 } | 517 } |
| 518 | 518 |
| 519 /** | 519 /** |
| 520 * @param {!Element} element | 520 * @param {!Element} element |
| 521 * @param {!Event} event | 521 * @param {!Event} event |
| 522 * @return {!Element|!AnchorBox|undefined} | 522 * @return {!Element|!AnchorBox|undefined} |
| 523 */ | 523 */ |
| 524 _getPopoverAnchor(element, event) { | 524 _getPopoverAnchor(element, event) { |
| 525 var anchor = element.enclosingNodeOrSelfWithClass('webkit-html-resource-link
'); | 525 var anchor = element.enclosingNodeOrSelfWithClass('webkit-html-resource-link
'); |
| 526 if (!anchor || !anchor.href) | 526 if (!anchor || !anchor.href) |
| 527 return; | 527 return; |
| 528 | 528 |
| 529 return anchor; | 529 return anchor; |
| 530 } | 530 } |
| 531 | 531 |
| 532 /** | 532 /** |
| 533 * @param {!Element} anchor | 533 * @param {!Element} anchor |
| 534 * @param {!WebInspector.Popover} popover | 534 * @param {!UI.Popover} popover |
| 535 */ | 535 */ |
| 536 _showPopover(anchor, popover) { | 536 _showPopover(anchor, popover) { |
| 537 var node = this.selectedDOMNode(); | 537 var node = this.selectedDOMNode(); |
| 538 if (node) | 538 if (node) |
| 539 WebInspector.DOMPresentationUtils.buildImagePreviewContents(node.target(),
anchor.href, true, showPopover); | 539 Components.DOMPresentationUtils.buildImagePreviewContents(node.target(), a
nchor.href, true, showPopover); |
| 540 | 540 |
| 541 /** | 541 /** |
| 542 * @param {!Element=} contents | 542 * @param {!Element=} contents |
| 543 */ | 543 */ |
| 544 function showPopover(contents) { | 544 function showPopover(contents) { |
| 545 if (!contents) | 545 if (!contents) |
| 546 return; | 546 return; |
| 547 popover.setCanShrink(false); | 547 popover.setCanShrink(false); |
| 548 popover.showForAnchor(contents, anchor); | 548 popover.showForAnchor(contents, anchor); |
| 549 } | 549 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 var index = this._currentSearchResultIndex; | 593 var index = this._currentSearchResultIndex; |
| 594 var searchResults = this._searchResults; | 594 var searchResults = this._searchResults; |
| 595 var searchResult = searchResults[index]; | 595 var searchResult = searchResults[index]; |
| 596 | 596 |
| 597 if (searchResult.node === null) { | 597 if (searchResult.node === null) { |
| 598 this._searchableView.updateCurrentMatchIndex(index); | 598 this._searchableView.updateCurrentMatchIndex(index); |
| 599 return; | 599 return; |
| 600 } | 600 } |
| 601 | 601 |
| 602 /** | 602 /** |
| 603 * @param {?WebInspector.DOMNode} node | 603 * @param {?SDK.DOMNode} node |
| 604 * @this {WebInspector.ElementsPanel} | 604 * @this {Elements.ElementsPanel} |
| 605 */ | 605 */ |
| 606 function searchCallback(node) { | 606 function searchCallback(node) { |
| 607 searchResult.node = node; | 607 searchResult.node = node; |
| 608 this._highlightCurrentSearchResult(); | 608 this._highlightCurrentSearchResult(); |
| 609 } | 609 } |
| 610 | 610 |
| 611 if (typeof searchResult.node === 'undefined') { | 611 if (typeof searchResult.node === 'undefined') { |
| 612 // No data for slot, request it. | 612 // No data for slot, request it. |
| 613 searchResult.domModel.searchResult(searchResult.index, searchCallback.bind
(this)); | 613 searchResult.domModel.searchResult(searchResult.index, searchCallback.bind
(this)); |
| 614 return; | 614 return; |
| 615 } | 615 } |
| 616 | 616 |
| 617 this._searchableView.updateCurrentMatchIndex(index); | 617 this._searchableView.updateCurrentMatchIndex(index); |
| 618 | 618 |
| 619 var treeElement = this._treeElementForNode(searchResult.node); | 619 var treeElement = this._treeElementForNode(searchResult.node); |
| 620 if (treeElement) { | 620 if (treeElement) { |
| 621 treeElement.highlightSearchResults(this._searchQuery); | 621 treeElement.highlightSearchResults(this._searchQuery); |
| 622 treeElement.reveal(); | 622 treeElement.reveal(); |
| 623 var matches = treeElement.listItemElement.getElementsByClassName(WebInspec
tor.highlightedSearchResultClassName); | 623 var matches = treeElement.listItemElement.getElementsByClassName(UI.highli
ghtedSearchResultClassName); |
| 624 if (matches.length) | 624 if (matches.length) |
| 625 matches[0].scrollIntoViewIfNeeded(false); | 625 matches[0].scrollIntoViewIfNeeded(false); |
| 626 } | 626 } |
| 627 } | 627 } |
| 628 | 628 |
| 629 _hideSearchHighlights() { | 629 _hideSearchHighlights() { |
| 630 if (!this._searchResults || !this._searchResults.length || this._currentSear
chResultIndex < 0) | 630 if (!this._searchResults || !this._searchResults.length || this._currentSear
chResultIndex < 0) |
| 631 return; | 631 return; |
| 632 var searchResult = this._searchResults[this._currentSearchResultIndex]; | 632 var searchResult = this._searchResults[this._currentSearchResultIndex]; |
| 633 if (!searchResult.node) | 633 if (!searchResult.node) |
| 634 return; | 634 return; |
| 635 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(searchResult.
node.domModel()); | 635 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(searchResult.node
.domModel()); |
| 636 var treeElement = treeOutline.findTreeElement(searchResult.node); | 636 var treeElement = treeOutline.findTreeElement(searchResult.node); |
| 637 if (treeElement) | 637 if (treeElement) |
| 638 treeElement.hideSearchHighlights(); | 638 treeElement.hideSearchHighlights(); |
| 639 } | 639 } |
| 640 | 640 |
| 641 /** | 641 /** |
| 642 * @return {?WebInspector.DOMNode} | 642 * @return {?SDK.DOMNode} |
| 643 */ | 643 */ |
| 644 selectedDOMNode() { | 644 selectedDOMNode() { |
| 645 for (var i = 0; i < this._treeOutlines.length; ++i) { | 645 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 646 var treeOutline = this._treeOutlines[i]; | 646 var treeOutline = this._treeOutlines[i]; |
| 647 if (treeOutline.selectedDOMNode()) | 647 if (treeOutline.selectedDOMNode()) |
| 648 return treeOutline.selectedDOMNode(); | 648 return treeOutline.selectedDOMNode(); |
| 649 } | 649 } |
| 650 return null; | 650 return null; |
| 651 } | 651 } |
| 652 | 652 |
| 653 /** | 653 /** |
| 654 * @param {!WebInspector.DOMNode} node | 654 * @param {!SDK.DOMNode} node |
| 655 * @param {boolean=} focus | 655 * @param {boolean=} focus |
| 656 */ | 656 */ |
| 657 selectDOMNode(node, focus) { | 657 selectDOMNode(node, focus) { |
| 658 for (var i = 0; i < this._treeOutlines.length; ++i) { | 658 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 659 var treeOutline = this._treeOutlines[i]; | 659 var treeOutline = this._treeOutlines[i]; |
| 660 if (treeOutline.domModel() === node.domModel()) | 660 if (treeOutline.domModel() === node.domModel()) |
| 661 treeOutline.selectDOMNode(node, focus); | 661 treeOutline.selectDOMNode(node, focus); |
| 662 else | 662 else |
| 663 treeOutline.selectDOMNode(null); | 663 treeOutline.selectDOMNode(null); |
| 664 } | 664 } |
| 665 } | 665 } |
| 666 | 666 |
| 667 /** | 667 /** |
| 668 * @param {!WebInspector.Event} event | 668 * @param {!Common.Event} event |
| 669 */ | 669 */ |
| 670 _updateBreadcrumbIfNeeded(event) { | 670 _updateBreadcrumbIfNeeded(event) { |
| 671 var nodes = /** @type {!Array.<!WebInspector.DOMNode>} */ (event.data); | 671 var nodes = /** @type {!Array.<!SDK.DOMNode>} */ (event.data); |
| 672 this._breadcrumbs.updateNodes(nodes); | 672 this._breadcrumbs.updateNodes(nodes); |
| 673 } | 673 } |
| 674 | 674 |
| 675 /** | 675 /** |
| 676 * @param {!WebInspector.Event} event | 676 * @param {!Common.Event} event |
| 677 */ | 677 */ |
| 678 _crumbNodeSelected(event) { | 678 _crumbNodeSelected(event) { |
| 679 var node = /** @type {!WebInspector.DOMNode} */ (event.data); | 679 var node = /** @type {!SDK.DOMNode} */ (event.data); |
| 680 this.selectDOMNode(node, true); | 680 this.selectDOMNode(node, true); |
| 681 } | 681 } |
| 682 | 682 |
| 683 /** | 683 /** |
| 684 * @override | 684 * @override |
| 685 * @param {!KeyboardEvent} event | 685 * @param {!KeyboardEvent} event |
| 686 */ | 686 */ |
| 687 handleShortcut(event) { | 687 handleShortcut(event) { |
| 688 /** | 688 /** |
| 689 * @param {!WebInspector.ElementsTreeOutline} treeOutline | 689 * @param {!Elements.ElementsTreeOutline} treeOutline |
| 690 */ | 690 */ |
| 691 function handleUndoRedo(treeOutline) { | 691 function handleUndoRedo(treeOutline) { |
| 692 if (WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) && !event.shif
tKey && | 692 if (UI.KeyboardShortcut.eventHasCtrlOrMeta(event) && !event.shiftKey && |
| 693 (event.key === 'Z' || event.key === 'z')) { // Z key | 693 (event.key === 'Z' || event.key === 'z')) { // Z key |
| 694 treeOutline.domModel().undo(); | 694 treeOutline.domModel().undo(); |
| 695 event.handled = true; | 695 event.handled = true; |
| 696 return; | 696 return; |
| 697 } | 697 } |
| 698 | 698 |
| 699 var isRedoKey = WebInspector.isMac() ? | 699 var isRedoKey = Host.isMac() ? |
| 700 event.metaKey && event.shiftKey && (event.key === 'Z' || event.key ===
'z') : // Z key | 700 event.metaKey && event.shiftKey && (event.key === 'Z' || event.key ===
'z') : // Z key |
| 701 event.ctrlKey && (event.key === 'Y' || event.key === 'y');
// Y key | 701 event.ctrlKey && (event.key === 'Y' || event.key === 'y');
// Y key |
| 702 if (isRedoKey) { | 702 if (isRedoKey) { |
| 703 treeOutline.domModel().redo(); | 703 treeOutline.domModel().redo(); |
| 704 event.handled = true; | 704 event.handled = true; |
| 705 } | 705 } |
| 706 } | 706 } |
| 707 | 707 |
| 708 if (WebInspector.isEditing() && event.keyCode !== WebInspector.KeyboardShort
cut.Keys.F2.code) | 708 if (UI.isEditing() && event.keyCode !== UI.KeyboardShortcut.Keys.F2.code) |
| 709 return; | 709 return; |
| 710 | 710 |
| 711 var treeOutline = null; | 711 var treeOutline = null; |
| 712 for (var i = 0; i < this._treeOutlines.length; ++i) { | 712 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 713 if (this._treeOutlines[i].selectedDOMNode()) | 713 if (this._treeOutlines[i].selectedDOMNode()) |
| 714 treeOutline = this._treeOutlines[i]; | 714 treeOutline = this._treeOutlines[i]; |
| 715 } | 715 } |
| 716 if (!treeOutline) | 716 if (!treeOutline) |
| 717 return; | 717 return; |
| 718 | 718 |
| 719 if (!treeOutline.editing()) { | 719 if (!treeOutline.editing()) { |
| 720 handleUndoRedo.call(null, treeOutline); | 720 handleUndoRedo.call(null, treeOutline); |
| 721 if (event.handled) { | 721 if (event.handled) { |
| 722 this._stylesWidget.forceUpdate(); | 722 this._stylesWidget.forceUpdate(); |
| 723 return; | 723 return; |
| 724 } | 724 } |
| 725 } | 725 } |
| 726 | 726 |
| 727 treeOutline.handleShortcut(event); | 727 treeOutline.handleShortcut(event); |
| 728 if (event.handled) | 728 if (event.handled) |
| 729 return; | 729 return; |
| 730 | 730 |
| 731 super.handleShortcut(event); | 731 super.handleShortcut(event); |
| 732 } | 732 } |
| 733 | 733 |
| 734 /** | 734 /** |
| 735 * @param {?WebInspector.DOMNode} node | 735 * @param {?SDK.DOMNode} node |
| 736 * @return {?WebInspector.ElementsTreeOutline} | 736 * @return {?Elements.ElementsTreeOutline} |
| 737 */ | 737 */ |
| 738 _treeOutlineForNode(node) { | 738 _treeOutlineForNode(node) { |
| 739 if (!node) | 739 if (!node) |
| 740 return null; | 740 return null; |
| 741 return WebInspector.ElementsTreeOutline.forDOMModel(node.domModel()); | 741 return Elements.ElementsTreeOutline.forDOMModel(node.domModel()); |
| 742 } | 742 } |
| 743 | 743 |
| 744 /** | 744 /** |
| 745 * @param {!WebInspector.DOMNode} node | 745 * @param {!SDK.DOMNode} node |
| 746 * @return {?WebInspector.ElementsTreeElement} | 746 * @return {?Elements.ElementsTreeElement} |
| 747 */ | 747 */ |
| 748 _treeElementForNode(node) { | 748 _treeElementForNode(node) { |
| 749 var treeOutline = this._treeOutlineForNode(node); | 749 var treeOutline = this._treeOutlineForNode(node); |
| 750 return /** @type {?WebInspector.ElementsTreeElement} */ (treeOutline.findTre
eElement(node)); | 750 return /** @type {?Elements.ElementsTreeElement} */ (treeOutline.findTreeEle
ment(node)); |
| 751 } | 751 } |
| 752 | 752 |
| 753 /** | 753 /** |
| 754 * @param {!WebInspector.DOMNode} node | 754 * @param {!SDK.DOMNode} node |
| 755 * @return {!WebInspector.DOMNode} | 755 * @return {!SDK.DOMNode} |
| 756 */ | 756 */ |
| 757 _leaveUserAgentShadowDOM(node) { | 757 _leaveUserAgentShadowDOM(node) { |
| 758 var userAgentShadowRoot; | 758 var userAgentShadowRoot; |
| 759 while ((userAgentShadowRoot = node.ancestorUserAgentShadowRoot()) && userAge
ntShadowRoot.parentNode) | 759 while ((userAgentShadowRoot = node.ancestorUserAgentShadowRoot()) && userAge
ntShadowRoot.parentNode) |
| 760 node = userAgentShadowRoot.parentNode; | 760 node = userAgentShadowRoot.parentNode; |
| 761 return node; | 761 return node; |
| 762 } | 762 } |
| 763 | 763 |
| 764 /** | 764 /** |
| 765 * @param {!WebInspector.DOMNode} node | 765 * @param {!SDK.DOMNode} node |
| 766 * @return {!Promise} | 766 * @return {!Promise} |
| 767 */ | 767 */ |
| 768 revealAndSelectNode(node) { | 768 revealAndSelectNode(node) { |
| 769 if (WebInspector.inspectElementModeController && WebInspector.inspectElement
ModeController.isInInspectElementMode()) | 769 if (Elements.inspectElementModeController && Elements.inspectElementModeCont
roller.isInInspectElementMode()) |
| 770 WebInspector.inspectElementModeController.stopInspection(); | 770 Elements.inspectElementModeController.stopInspection(); |
| 771 | 771 |
| 772 this._omitDefaultSelection = true; | 772 this._omitDefaultSelection = true; |
| 773 | 773 |
| 774 node = WebInspector.moduleSetting('showUAShadowDOM').get() ? node : this._le
aveUserAgentShadowDOM(node); | 774 node = Common.moduleSetting('showUAShadowDOM').get() ? node : this._leaveUse
rAgentShadowDOM(node); |
| 775 node.highlightForTwoSeconds(); | 775 node.highlightForTwoSeconds(); |
| 776 | 776 |
| 777 return WebInspector.viewManager.showView('elements').then(() => { | 777 return UI.viewManager.showView('elements').then(() => { |
| 778 this.selectDOMNode(node, true); | 778 this.selectDOMNode(node, true); |
| 779 delete this._omitDefaultSelection; | 779 delete this._omitDefaultSelection; |
| 780 | 780 |
| 781 if (!this._notFirstInspectElement) | 781 if (!this._notFirstInspectElement) |
| 782 InspectorFrontendHost.inspectElementCompleted(); | 782 InspectorFrontendHost.inspectElementCompleted(); |
| 783 this._notFirstInspectElement = true; | 783 this._notFirstInspectElement = true; |
| 784 }); | 784 }); |
| 785 } | 785 } |
| 786 | 786 |
| 787 _sidebarContextMenuEventFired(event) { | 787 _sidebarContextMenuEventFired(event) { |
| 788 var contextMenu = new WebInspector.ContextMenu(event); | 788 var contextMenu = new UI.ContextMenu(event); |
| 789 contextMenu.appendApplicableItems(/** @type {!Object} */ (event.deepElementF
romPoint())); | 789 contextMenu.appendApplicableItems(/** @type {!Object} */ (event.deepElementF
romPoint())); |
| 790 contextMenu.show(); | 790 contextMenu.show(); |
| 791 } | 791 } |
| 792 | 792 |
| 793 _showUAShadowDOMChanged() { | 793 _showUAShadowDOMChanged() { |
| 794 for (var i = 0; i < this._treeOutlines.length; ++i) | 794 for (var i = 0; i < this._treeOutlines.length; ++i) |
| 795 this._treeOutlines[i].update(); | 795 this._treeOutlines[i].update(); |
| 796 } | 796 } |
| 797 | 797 |
| 798 _updateSidebarPosition() { | 798 _updateSidebarPosition() { |
| 799 var horizontally; | 799 var horizontally; |
| 800 var position = WebInspector.moduleSetting('sidebarPosition').get(); | 800 var position = Common.moduleSetting('sidebarPosition').get(); |
| 801 if (position === 'right') | 801 if (position === 'right') |
| 802 horizontally = false; | 802 horizontally = false; |
| 803 else if (position === 'bottom') | 803 else if (position === 'bottom') |
| 804 horizontally = true; | 804 horizontally = true; |
| 805 else | 805 else |
| 806 horizontally = WebInspector.inspectorView.element.offsetWidth < 680; | 806 horizontally = UI.inspectorView.element.offsetWidth < 680; |
| 807 | 807 |
| 808 if (this.sidebarPaneView && horizontally === !this._splitWidget.isVertical()
) | 808 if (this.sidebarPaneView && horizontally === !this._splitWidget.isVertical()
) |
| 809 return; | 809 return; |
| 810 | 810 |
| 811 if (this.sidebarPaneView && this.sidebarPaneView.tabbedPane().shouldHideOnDe
tach()) | 811 if (this.sidebarPaneView && this.sidebarPaneView.tabbedPane().shouldHideOnDe
tach()) |
| 812 return; // We can't reparent extension iframes. | 812 return; // We can't reparent extension iframes. |
| 813 | 813 |
| 814 var extensionSidebarPanes = WebInspector.extensionServer.sidebarPanes(); | 814 var extensionSidebarPanes = Extensions.extensionServer.sidebarPanes(); |
| 815 if (this.sidebarPaneView) { | 815 if (this.sidebarPaneView) { |
| 816 this.sidebarPaneView.tabbedPane().detach(); | 816 this.sidebarPaneView.tabbedPane().detach(); |
| 817 this._splitWidget.uninstallResizer(this.sidebarPaneView.tabbedPane().heade
rElement()); | 817 this._splitWidget.uninstallResizer(this.sidebarPaneView.tabbedPane().heade
rElement()); |
| 818 } | 818 } |
| 819 | 819 |
| 820 this._splitWidget.setVertical(!horizontally); | 820 this._splitWidget.setVertical(!horizontally); |
| 821 this.showToolbarPane(null); | 821 this.showToolbarPane(null); |
| 822 | 822 |
| 823 var matchedStylesContainer = new WebInspector.VBox(); | 823 var matchedStylesContainer = new UI.VBox(); |
| 824 matchedStylesContainer.element.appendChild(this._stylesSidebarToolbar); | 824 matchedStylesContainer.element.appendChild(this._stylesSidebarToolbar); |
| 825 var matchedStylePanesWrapper = new WebInspector.VBox(); | 825 var matchedStylePanesWrapper = new UI.VBox(); |
| 826 matchedStylePanesWrapper.element.classList.add('style-panes-wrapper'); | 826 matchedStylePanesWrapper.element.classList.add('style-panes-wrapper'); |
| 827 matchedStylePanesWrapper.show(matchedStylesContainer.element); | 827 matchedStylePanesWrapper.show(matchedStylesContainer.element); |
| 828 this._stylesWidget.show(matchedStylePanesWrapper.element); | 828 this._stylesWidget.show(matchedStylePanesWrapper.element); |
| 829 | 829 |
| 830 var computedStylePanesWrapper = new WebInspector.VBox(); | 830 var computedStylePanesWrapper = new UI.VBox(); |
| 831 computedStylePanesWrapper.element.classList.add('style-panes-wrapper'); | 831 computedStylePanesWrapper.element.classList.add('style-panes-wrapper'); |
| 832 this._computedStyleWidget.show(computedStylePanesWrapper.element); | 832 this._computedStyleWidget.show(computedStylePanesWrapper.element); |
| 833 | 833 |
| 834 /** | 834 /** |
| 835 * @param {boolean} inComputedStyle | 835 * @param {boolean} inComputedStyle |
| 836 * @this {WebInspector.ElementsPanel} | 836 * @this {Elements.ElementsPanel} |
| 837 */ | 837 */ |
| 838 function showMetrics(inComputedStyle) { | 838 function showMetrics(inComputedStyle) { |
| 839 if (inComputedStyle) | 839 if (inComputedStyle) |
| 840 this._metricsWidget.show(computedStylePanesWrapper.element, this._comput
edStyleWidget.element); | 840 this._metricsWidget.show(computedStylePanesWrapper.element, this._comput
edStyleWidget.element); |
| 841 else | 841 else |
| 842 this._metricsWidget.show(matchedStylePanesWrapper.element); | 842 this._metricsWidget.show(matchedStylePanesWrapper.element); |
| 843 } | 843 } |
| 844 | 844 |
| 845 /** | 845 /** |
| 846 * @param {!WebInspector.Event} event | 846 * @param {!Common.Event} event |
| 847 * @this {WebInspector.ElementsPanel} | 847 * @this {Elements.ElementsPanel} |
| 848 */ | 848 */ |
| 849 function tabSelected(event) { | 849 function tabSelected(event) { |
| 850 var tabId = /** @type {string} */ (event.data.tabId); | 850 var tabId = /** @type {string} */ (event.data.tabId); |
| 851 if (tabId === WebInspector.UIString('Computed')) | 851 if (tabId === Common.UIString('Computed')) |
| 852 showMetrics.call(this, true); | 852 showMetrics.call(this, true); |
| 853 else if (tabId === WebInspector.UIString('Styles')) | 853 else if (tabId === Common.UIString('Styles')) |
| 854 showMetrics.call(this, false); | 854 showMetrics.call(this, false); |
| 855 } | 855 } |
| 856 | 856 |
| 857 this.sidebarPaneView = | 857 this.sidebarPaneView = |
| 858 WebInspector.viewManager.createTabbedLocation(() => WebInspector.viewMan
ager.showView('elements')); | 858 UI.viewManager.createTabbedLocation(() => UI.viewManager.showView('eleme
nts')); |
| 859 var tabbedPane = this.sidebarPaneView.tabbedPane(); | 859 var tabbedPane = this.sidebarPaneView.tabbedPane(); |
| 860 tabbedPane.element.addEventListener('contextmenu', this._sidebarContextMenuE
ventFired.bind(this), false); | 860 tabbedPane.element.addEventListener('contextmenu', this._sidebarContextMenuE
ventFired.bind(this), false); |
| 861 if (this._popoverHelper) | 861 if (this._popoverHelper) |
| 862 this._popoverHelper.hidePopover(); | 862 this._popoverHelper.hidePopover(); |
| 863 this._popoverHelper = new WebInspector.PopoverHelper(tabbedPane.element); | 863 this._popoverHelper = new UI.PopoverHelper(tabbedPane.element); |
| 864 this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), t
his._showPopover.bind(this)); | 864 this._popoverHelper.initializeCallbacks(this._getPopoverAnchor.bind(this), t
his._showPopover.bind(this)); |
| 865 this._popoverHelper.setTimeout(0); | 865 this._popoverHelper.setTimeout(0); |
| 866 | 866 |
| 867 if (horizontally) { | 867 if (horizontally) { |
| 868 // Styles and computed are merged into a single tab. | 868 // Styles and computed are merged into a single tab. |
| 869 this._splitWidget.installResizer(tabbedPane.headerElement()); | 869 this._splitWidget.installResizer(tabbedPane.headerElement()); |
| 870 | 870 |
| 871 var stylesView = new WebInspector.SimpleView(WebInspector.UIString('Styles
')); | 871 var stylesView = new UI.SimpleView(Common.UIString('Styles')); |
| 872 stylesView.element.classList.add('flex-auto'); | 872 stylesView.element.classList.add('flex-auto'); |
| 873 | 873 |
| 874 var splitWidget = new WebInspector.SplitWidget(true, true, 'stylesPaneSpli
tViewState', 215); | 874 var splitWidget = new UI.SplitWidget(true, true, 'stylesPaneSplitViewState
', 215); |
| 875 splitWidget.show(stylesView.element); | 875 splitWidget.show(stylesView.element); |
| 876 | 876 |
| 877 splitWidget.setMainWidget(matchedStylesContainer); | 877 splitWidget.setMainWidget(matchedStylesContainer); |
| 878 splitWidget.setSidebarWidget(computedStylePanesWrapper); | 878 splitWidget.setSidebarWidget(computedStylePanesWrapper); |
| 879 | 879 |
| 880 this.sidebarPaneView.appendView(stylesView); | 880 this.sidebarPaneView.appendView(stylesView); |
| 881 this._stylesViewToReveal = stylesView; | 881 this._stylesViewToReveal = stylesView; |
| 882 } else { | 882 } else { |
| 883 // Styles and computed are in separate tabs. | 883 // Styles and computed are in separate tabs. |
| 884 var stylesView = new WebInspector.SimpleView(WebInspector.UIString('Styles
')); | 884 var stylesView = new UI.SimpleView(Common.UIString('Styles')); |
| 885 stylesView.element.classList.add('flex-auto', 'metrics-and-styles'); | 885 stylesView.element.classList.add('flex-auto', 'metrics-and-styles'); |
| 886 matchedStylesContainer.show(stylesView.element); | 886 matchedStylesContainer.show(stylesView.element); |
| 887 | 887 |
| 888 var computedView = new WebInspector.SimpleView(WebInspector.UIString('Comp
uted')); | 888 var computedView = new UI.SimpleView(Common.UIString('Computed')); |
| 889 computedView.element.classList.add('composite', 'fill', 'metrics-and-compu
ted'); | 889 computedView.element.classList.add('composite', 'fill', 'metrics-and-compu
ted'); |
| 890 computedStylePanesWrapper.show(computedView.element); | 890 computedStylePanesWrapper.show(computedView.element); |
| 891 | 891 |
| 892 tabbedPane.addEventListener(WebInspector.TabbedPane.Events.TabSelected, ta
bSelected, this); | 892 tabbedPane.addEventListener(UI.TabbedPane.Events.TabSelected, tabSelected,
this); |
| 893 this.sidebarPaneView.appendView(stylesView); | 893 this.sidebarPaneView.appendView(stylesView); |
| 894 this.sidebarPaneView.appendView(computedView); | 894 this.sidebarPaneView.appendView(computedView); |
| 895 this._stylesViewToReveal = stylesView; | 895 this._stylesViewToReveal = stylesView; |
| 896 } | 896 } |
| 897 | 897 |
| 898 showMetrics.call(this, horizontally); | 898 showMetrics.call(this, horizontally); |
| 899 | 899 |
| 900 this.sidebarPaneView.appendApplicableItems('elements-sidebar'); | 900 this.sidebarPaneView.appendApplicableItems('elements-sidebar'); |
| 901 for (var i = 0; i < extensionSidebarPanes.length; ++i) | 901 for (var i = 0; i < extensionSidebarPanes.length; ++i) |
| 902 this._addExtensionSidebarPane(extensionSidebarPanes[i]); | 902 this._addExtensionSidebarPane(extensionSidebarPanes[i]); |
| 903 | 903 |
| 904 this._splitWidget.setSidebarWidget(this.sidebarPaneView.tabbedPane()); | 904 this._splitWidget.setSidebarWidget(this.sidebarPaneView.tabbedPane()); |
| 905 } | 905 } |
| 906 | 906 |
| 907 /** | 907 /** |
| 908 * @param {!WebInspector.Event} event | 908 * @param {!Common.Event} event |
| 909 */ | 909 */ |
| 910 _extensionSidebarPaneAdded(event) { | 910 _extensionSidebarPaneAdded(event) { |
| 911 var pane = /** @type {!WebInspector.ExtensionSidebarPane} */ (event.data); | 911 var pane = /** @type {!Extensions.ExtensionSidebarPane} */ (event.data); |
| 912 this._addExtensionSidebarPane(pane); | 912 this._addExtensionSidebarPane(pane); |
| 913 } | 913 } |
| 914 | 914 |
| 915 /** | 915 /** |
| 916 * @param {!WebInspector.ExtensionSidebarPane} pane | 916 * @param {!Extensions.ExtensionSidebarPane} pane |
| 917 */ | 917 */ |
| 918 _addExtensionSidebarPane(pane) { | 918 _addExtensionSidebarPane(pane) { |
| 919 if (pane.panelName() === this.name) | 919 if (pane.panelName() === this.name) |
| 920 this.sidebarPaneView.appendView(pane); | 920 this.sidebarPaneView.appendView(pane); |
| 921 } | 921 } |
| 922 }; | 922 }; |
| 923 | 923 |
| 924 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol('title'); | 924 Elements.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol('title'); |
| 925 | 925 |
| 926 /** | 926 /** |
| 927 * @implements {WebInspector.ContextMenu.Provider} | 927 * @implements {UI.ContextMenu.Provider} |
| 928 * @unrestricted | 928 * @unrestricted |
| 929 */ | 929 */ |
| 930 WebInspector.ElementsPanel.ContextMenuProvider = class { | 930 Elements.ElementsPanel.ContextMenuProvider = class { |
| 931 /** | 931 /** |
| 932 * @override | 932 * @override |
| 933 * @param {!Event} event | 933 * @param {!Event} event |
| 934 * @param {!WebInspector.ContextMenu} contextMenu | 934 * @param {!UI.ContextMenu} contextMenu |
| 935 * @param {!Object} object | 935 * @param {!Object} object |
| 936 */ | 936 */ |
| 937 appendApplicableItems(event, contextMenu, object) { | 937 appendApplicableItems(event, contextMenu, object) { |
| 938 if (!(object instanceof WebInspector.RemoteObject && | 938 if (!(object instanceof SDK.RemoteObject && |
| 939 (/** @type {!WebInspector.RemoteObject} */ (object)).isNode()) && | 939 (/** @type {!SDK.RemoteObject} */ (object)).isNode()) && |
| 940 !(object instanceof WebInspector.DOMNode) && !(object instanceof WebInsp
ector.DeferredDOMNode)) { | 940 !(object instanceof SDK.DOMNode) && !(object instanceof SDK.DeferredDOMN
ode)) { |
| 941 return; | 941 return; |
| 942 } | 942 } |
| 943 | 943 |
| 944 // Add debbuging-related actions | 944 // Add debbuging-related actions |
| 945 if (object instanceof WebInspector.DOMNode) { | 945 if (object instanceof SDK.DOMNode) { |
| 946 contextMenu.appendSeparator(); | 946 contextMenu.appendSeparator(); |
| 947 WebInspector.domBreakpointsSidebarPane.populateNodeContextMenu(object, con
textMenu, true); | 947 Components.domBreakpointsSidebarPane.populateNodeContextMenu(object, conte
xtMenu, true); |
| 948 } | 948 } |
| 949 | 949 |
| 950 // Skip adding "Reveal..." menu item for our own tree outline. | 950 // Skip adding "Reveal..." menu item for our own tree outline. |
| 951 if (WebInspector.ElementsPanel.instance().element.isAncestor(/** @type {!Nod
e} */ (event.target))) | 951 if (Elements.ElementsPanel.instance().element.isAncestor(/** @type {!Node} *
/ (event.target))) |
| 952 return; | 952 return; |
| 953 var commandCallback = WebInspector.Revealer.reveal.bind(WebInspector.Reveale
r, object); | 953 var commandCallback = Common.Revealer.reveal.bind(Common.Revealer, object); |
| 954 contextMenu.appendItem(WebInspector.UIString.capitalize('Reveal in Elements
^panel'), commandCallback); | 954 contextMenu.appendItem(Common.UIString.capitalize('Reveal in Elements ^panel
'), commandCallback); |
| 955 } | 955 } |
| 956 }; | 956 }; |
| 957 | 957 |
| 958 /** | 958 /** |
| 959 * @implements {WebInspector.Revealer} | 959 * @implements {Common.Revealer} |
| 960 * @unrestricted | 960 * @unrestricted |
| 961 */ | 961 */ |
| 962 WebInspector.ElementsPanel.DOMNodeRevealer = class { | 962 Elements.ElementsPanel.DOMNodeRevealer = class { |
| 963 /** | 963 /** |
| 964 * @override | 964 * @override |
| 965 * @param {!Object} node | 965 * @param {!Object} node |
| 966 * @return {!Promise} | 966 * @return {!Promise} |
| 967 */ | 967 */ |
| 968 reveal(node) { | 968 reveal(node) { |
| 969 var panel = WebInspector.ElementsPanel.instance(); | 969 var panel = Elements.ElementsPanel.instance(); |
| 970 panel._pendingNodeReveal = true; | 970 panel._pendingNodeReveal = true; |
| 971 | 971 |
| 972 return new Promise(revealPromise); | 972 return new Promise(revealPromise); |
| 973 | 973 |
| 974 /** | 974 /** |
| 975 * @param {function(undefined)} resolve | 975 * @param {function(undefined)} resolve |
| 976 * @param {function(!Error)} reject | 976 * @param {function(!Error)} reject |
| 977 */ | 977 */ |
| 978 function revealPromise(resolve, reject) { | 978 function revealPromise(resolve, reject) { |
| 979 if (node instanceof WebInspector.DOMNode) { | 979 if (node instanceof SDK.DOMNode) { |
| 980 onNodeResolved(/** @type {!WebInspector.DOMNode} */ (node)); | 980 onNodeResolved(/** @type {!SDK.DOMNode} */ (node)); |
| 981 } else if (node instanceof WebInspector.DeferredDOMNode) { | 981 } else if (node instanceof SDK.DeferredDOMNode) { |
| 982 (/** @type {!WebInspector.DeferredDOMNode} */ (node)).resolve(onNodeReso
lved); | 982 (/** @type {!SDK.DeferredDOMNode} */ (node)).resolve(onNodeResolved); |
| 983 } else if (node instanceof WebInspector.RemoteObject) { | 983 } else if (node instanceof SDK.RemoteObject) { |
| 984 var domModel = WebInspector.DOMModel.fromTarget(/** @type {!WebInspector
.RemoteObject} */ (node).target()); | 984 var domModel = SDK.DOMModel.fromTarget(/** @type {!SDK.RemoteObject} */
(node).target()); |
| 985 if (domModel) | 985 if (domModel) |
| 986 domModel.pushObjectAsNodeToFrontend(node, onNodeResolved); | 986 domModel.pushObjectAsNodeToFrontend(node, onNodeResolved); |
| 987 else | 987 else |
| 988 reject(new Error('Could not resolve a node to reveal.')); | 988 reject(new Error('Could not resolve a node to reveal.')); |
| 989 } else { | 989 } else { |
| 990 reject(new Error('Can\'t reveal a non-node.')); | 990 reject(new Error('Can\'t reveal a non-node.')); |
| 991 panel._pendingNodeReveal = false; | 991 panel._pendingNodeReveal = false; |
| 992 } | 992 } |
| 993 | 993 |
| 994 /** | 994 /** |
| 995 * @param {?WebInspector.DOMNode} resolvedNode | 995 * @param {?SDK.DOMNode} resolvedNode |
| 996 */ | 996 */ |
| 997 function onNodeResolved(resolvedNode) { | 997 function onNodeResolved(resolvedNode) { |
| 998 panel._pendingNodeReveal = false; | 998 panel._pendingNodeReveal = false; |
| 999 | 999 |
| 1000 if (resolvedNode) { | 1000 if (resolvedNode) { |
| 1001 panel.revealAndSelectNode(resolvedNode).then(resolve); | 1001 panel.revealAndSelectNode(resolvedNode).then(resolve); |
| 1002 return; | 1002 return; |
| 1003 } | 1003 } |
| 1004 reject(new Error('Could not resolve node to reveal.')); | 1004 reject(new Error('Could not resolve node to reveal.')); |
| 1005 } | 1005 } |
| 1006 } | 1006 } |
| 1007 } | 1007 } |
| 1008 }; | 1008 }; |
| 1009 | 1009 |
| 1010 /** | 1010 /** |
| 1011 * @implements {WebInspector.Revealer} | 1011 * @implements {Common.Revealer} |
| 1012 * @unrestricted | 1012 * @unrestricted |
| 1013 */ | 1013 */ |
| 1014 WebInspector.ElementsPanel.CSSPropertyRevealer = class { | 1014 Elements.ElementsPanel.CSSPropertyRevealer = class { |
| 1015 /** | 1015 /** |
| 1016 * @override | 1016 * @override |
| 1017 * @param {!Object} property | 1017 * @param {!Object} property |
| 1018 * @return {!Promise} | 1018 * @return {!Promise} |
| 1019 */ | 1019 */ |
| 1020 reveal(property) { | 1020 reveal(property) { |
| 1021 var panel = WebInspector.ElementsPanel.instance(); | 1021 var panel = Elements.ElementsPanel.instance(); |
| 1022 return panel._revealProperty(/** @type {!WebInspector.CSSProperty} */ (prope
rty)); | 1022 return panel._revealProperty(/** @type {!SDK.CSSProperty} */ (property)); |
| 1023 } | 1023 } |
| 1024 }; | 1024 }; |
| 1025 | 1025 |
| 1026 | 1026 |
| 1027 /** | 1027 /** |
| 1028 * @implements {WebInspector.ActionDelegate} | 1028 * @implements {UI.ActionDelegate} |
| 1029 * @unrestricted | 1029 * @unrestricted |
| 1030 */ | 1030 */ |
| 1031 WebInspector.ElementsActionDelegate = class { | 1031 Elements.ElementsActionDelegate = class { |
| 1032 /** | 1032 /** |
| 1033 * @override | 1033 * @override |
| 1034 * @param {!WebInspector.Context} context | 1034 * @param {!UI.Context} context |
| 1035 * @param {string} actionId | 1035 * @param {string} actionId |
| 1036 * @return {boolean} | 1036 * @return {boolean} |
| 1037 */ | 1037 */ |
| 1038 handleAction(context, actionId) { | 1038 handleAction(context, actionId) { |
| 1039 var node = WebInspector.context.flavor(WebInspector.DOMNode); | 1039 var node = UI.context.flavor(SDK.DOMNode); |
| 1040 if (!node) | 1040 if (!node) |
| 1041 return true; | 1041 return true; |
| 1042 var treeOutline = WebInspector.ElementsTreeOutline.forDOMModel(node.domModel
()); | 1042 var treeOutline = Elements.ElementsTreeOutline.forDOMModel(node.domModel()); |
| 1043 if (!treeOutline) | 1043 if (!treeOutline) |
| 1044 return true; | 1044 return true; |
| 1045 | 1045 |
| 1046 switch (actionId) { | 1046 switch (actionId) { |
| 1047 case 'elements.hide-element': | 1047 case 'elements.hide-element': |
| 1048 treeOutline.toggleHideElement(node); | 1048 treeOutline.toggleHideElement(node); |
| 1049 return true; | 1049 return true; |
| 1050 case 'elements.edit-as-html': | 1050 case 'elements.edit-as-html': |
| 1051 treeOutline.toggleEditAsHTML(node); | 1051 treeOutline.toggleEditAsHTML(node); |
| 1052 return true; | 1052 return true; |
| 1053 } | 1053 } |
| 1054 return false; | 1054 return false; |
| 1055 } | 1055 } |
| 1056 }; | 1056 }; |
| 1057 | 1057 |
| 1058 /** | 1058 /** |
| 1059 * @implements {WebInspector.DOMPresentationUtils.MarkerDecorator} | 1059 * @implements {Components.DOMPresentationUtils.MarkerDecorator} |
| 1060 * @unrestricted | 1060 * @unrestricted |
| 1061 */ | 1061 */ |
| 1062 WebInspector.ElementsPanel.PseudoStateMarkerDecorator = class { | 1062 Elements.ElementsPanel.PseudoStateMarkerDecorator = class { |
| 1063 /** | 1063 /** |
| 1064 * @override | 1064 * @override |
| 1065 * @param {!WebInspector.DOMNode} node | 1065 * @param {!SDK.DOMNode} node |
| 1066 * @return {?{title: string, color: string}} | 1066 * @return {?{title: string, color: string}} |
| 1067 */ | 1067 */ |
| 1068 decorate(node) { | 1068 decorate(node) { |
| 1069 return { | 1069 return { |
| 1070 color: 'orange', | 1070 color: 'orange', |
| 1071 title: WebInspector.UIString( | 1071 title: Common.UIString( |
| 1072 'Element state: %s', ':' + WebInspector.CSSModel.fromNode(node).pseudo
State(node).join(', :')) | 1072 'Element state: %s', ':' + SDK.CSSModel.fromNode(node).pseudoState(nod
e).join(', :')) |
| 1073 }; | 1073 }; |
| 1074 } | 1074 } |
| 1075 }; | 1075 }; |
| OLD | NEW |