| 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 23 matching lines...) Expand all Loading... |
| 34 importScript("MetricsSidebarPane.js"); | 34 importScript("MetricsSidebarPane.js"); |
| 35 importScript("OverridesView.js"); | 35 importScript("OverridesView.js"); |
| 36 importScript("PlatformFontsSidebarPane.js"); | 36 importScript("PlatformFontsSidebarPane.js"); |
| 37 importScript("PropertiesSidebarPane.js"); | 37 importScript("PropertiesSidebarPane.js"); |
| 38 importScript("RenderingOptionsView.js"); | 38 importScript("RenderingOptionsView.js"); |
| 39 importScript("StylesSidebarPane.js"); | 39 importScript("StylesSidebarPane.js"); |
| 40 | 40 |
| 41 /** | 41 /** |
| 42 * @constructor | 42 * @constructor |
| 43 * @implements {WebInspector.Searchable} | 43 * @implements {WebInspector.Searchable} |
| 44 * @implements {WebInspector.TargetManager.Observer} |
| 44 * @extends {WebInspector.Panel} | 45 * @extends {WebInspector.Panel} |
| 45 */ | 46 */ |
| 46 WebInspector.ElementsPanel = function() | 47 WebInspector.ElementsPanel = function() |
| 47 { | 48 { |
| 48 WebInspector.Panel.call(this, "elements"); | 49 WebInspector.Panel.call(this, "elements"); |
| 49 this.registerRequiredCSS("breadcrumbList.css"); | 50 this.registerRequiredCSS("breadcrumbList.css"); |
| 50 this.registerRequiredCSS("elementsPanel.css"); | 51 this.registerRequiredCSS("elementsPanel.css"); |
| 51 this.registerRequiredCSS("textPrompt.css"); | 52 this.registerRequiredCSS("textPrompt.css"); |
| 52 this.setHideOnDetach(); | 53 this.setHideOnDetach(); |
| 53 | 54 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 64 this.contentElement.id = "elements-content"; | 65 this.contentElement.id = "elements-content"; |
| 65 this.contentElement.classList.add("outline-disclosure"); | 66 this.contentElement.classList.add("outline-disclosure"); |
| 66 this.contentElement.classList.add("source-code"); | 67 this.contentElement.classList.add("source-code"); |
| 67 if (!WebInspector.settings.domWordWrap.get()) | 68 if (!WebInspector.settings.domWordWrap.get()) |
| 68 this.contentElement.classList.add("nowrap"); | 69 this.contentElement.classList.add("nowrap"); |
| 69 WebInspector.settings.domWordWrap.addChangeListener(this._domWordWrapSetting
Changed.bind(this)); | 70 WebInspector.settings.domWordWrap.addChangeListener(this._domWordWrapSetting
Changed.bind(this)); |
| 70 | 71 |
| 71 this.contentElement.addEventListener("contextmenu", this._contextMenuEventFi
red.bind(this), true); | 72 this.contentElement.addEventListener("contextmenu", this._contextMenuEventFi
red.bind(this), true); |
| 72 this._splitView.sidebarElement().addEventListener("contextmenu", this._sideb
arContextMenuEventFired.bind(this), false); | 73 this._splitView.sidebarElement().addEventListener("contextmenu", this._sideb
arContextMenuEventFired.bind(this), false); |
| 73 | 74 |
| 74 this.treeOutline = new WebInspector.ElementsTreeOutline(true, true, this._po
pulateContextMenu.bind(this), this._setPseudoClassForNodeId.bind(this)); | |
| 75 this.treeOutline.wireToDomAgent(); | |
| 76 | |
| 77 this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Se
lectedNodeChanged, this._selectedNodeChanged, this); | |
| 78 this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.El
ementsTreeUpdated, this._updateBreadcrumbIfNeeded, this); | |
| 79 | |
| 80 var crumbsContainer = stackElement.createChild("div"); | 75 var crumbsContainer = stackElement.createChild("div"); |
| 81 crumbsContainer.id = "elements-crumbs"; | 76 crumbsContainer.id = "elements-crumbs"; |
| 82 this.crumbsElement = crumbsContainer.createChild("div", "crumbs"); | 77 this.crumbsElement = crumbsContainer.createChild("div", "crumbs"); |
| 83 this.crumbsElement.addEventListener("mousemove", this._mouseMovedInCrumbs.bi
nd(this), false); | 78 this.crumbsElement.addEventListener("mousemove", this._mouseMovedInCrumbs.bi
nd(this), false); |
| 84 this.crumbsElement.addEventListener("mouseout", this._mouseMovedOutOfCrumbs.
bind(this), false); | 79 this.crumbsElement.addEventListener("mouseout", this._mouseMovedOutOfCrumbs.
bind(this), false); |
| 85 | 80 |
| 86 this.sidebarPanes = {}; | 81 this.sidebarPanes = {}; |
| 87 this.sidebarPanes.platformFonts = new WebInspector.PlatformFontsSidebarPane(
); | 82 this.sidebarPanes.platformFonts = new WebInspector.PlatformFontsSidebarPane(
); |
| 88 this.sidebarPanes.computedStyle = new WebInspector.ComputedStyleSidebarPane(
); | 83 this.sidebarPanes.computedStyle = new WebInspector.ComputedStyleSidebarPane(
); |
| 89 this.sidebarPanes.styles = new WebInspector.StylesSidebarPane(this.sidebarPa
nes.computedStyle, this._setPseudoClassForNodeId.bind(this)); | 84 this.sidebarPanes.styles = new WebInspector.StylesSidebarPane(this.sidebarPa
nes.computedStyle, this._setPseudoClassForNode.bind(this)); |
| 90 | 85 |
| 91 this._matchedStylesFilterBoxContainer = document.createElement("div"); | 86 this._matchedStylesFilterBoxContainer = document.createElement("div"); |
| 92 this._matchedStylesFilterBoxContainer.className = "sidebar-pane-filter-box"; | 87 this._matchedStylesFilterBoxContainer.className = "sidebar-pane-filter-box"; |
| 93 this._computedStylesFilterBoxContainer = document.createElement("div"); | 88 this._computedStylesFilterBoxContainer = document.createElement("div"); |
| 94 this._computedStylesFilterBoxContainer.className = "sidebar-pane-filter-box"
; | 89 this._computedStylesFilterBoxContainer.className = "sidebar-pane-filter-box"
; |
| 95 this.sidebarPanes.styles.setFilterBoxContainers(this._matchedStylesFilterBox
Container, this._computedStylesFilterBoxContainer); | 90 this.sidebarPanes.styles.setFilterBoxContainers(this._matchedStylesFilterBox
Container, this._computedStylesFilterBoxContainer); |
| 96 | 91 |
| 97 this.sidebarPanes.metrics = new WebInspector.MetricsSidebarPane(); | 92 this.sidebarPanes.metrics = new WebInspector.MetricsSidebarPane(); |
| 98 this.sidebarPanes.properties = new WebInspector.PropertiesSidebarPane(); | 93 this.sidebarPanes.properties = new WebInspector.PropertiesSidebarPane(); |
| 99 this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.cr
eateProxy(this); | 94 this.sidebarPanes.domBreakpoints = WebInspector.domBreakpointsSidebarPane.cr
eateProxy(this); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 110 this.sidebarPanes.metrics.addEventListener("metrics edited", this._metricsPa
neEdited, this); | 105 this.sidebarPanes.metrics.addEventListener("metrics edited", this._metricsPa
neEdited, this); |
| 111 this._extensionSidebarPanes = []; | 106 this._extensionSidebarPanes = []; |
| 112 | 107 |
| 113 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve
nts.DockSideChanged, this._dockSideChanged.bind(this)); | 108 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve
nts.DockSideChanged, this._dockSideChanged.bind(this)); |
| 114 WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(thi
s._dockSideChanged.bind(this)); | 109 WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(thi
s._dockSideChanged.bind(this)); |
| 115 this._dockSideChanged(); | 110 this._dockSideChanged(); |
| 116 | 111 |
| 117 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get
PopoverAnchor.bind(this), this._showPopover.bind(this)); | 112 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get
PopoverAnchor.bind(this), this._showPopover.bind(this)); |
| 118 this._popoverHelper.setTimeout(0); | 113 this._popoverHelper.setTimeout(0); |
| 119 | 114 |
| 120 WebInspector.domModel.addEventListener(WebInspector.DOMModel.Events.Document
Updated, this._documentUpdatedEvent, this); | 115 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */ |
| 116 this._treeOutlines = []; |
| 117 /** @type {!Map.<!WebInspector.Target, !WebInspector.ElementsTreeOutline>} *
/ |
| 118 this._targetToTreeOutline = new Map(); |
| 119 WebInspector.targetManager.observeTargets(this); |
| 121 WebInspector.settings.showUAShadowDOM.addChangeListener(this._showUAShadowDO
MChanged.bind(this)); | 120 WebInspector.settings.showUAShadowDOM.addChangeListener(this._showUAShadowDO
MChanged.bind(this)); |
| 122 | |
| 123 WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.Mod
elWasEnabled, this._updateSidebars, this); | |
| 124 } | 121 } |
| 125 | 122 |
| 126 WebInspector.ElementsPanel.prototype = { | 123 WebInspector.ElementsPanel.prototype = { |
| 124 /** |
| 125 * @param {!WebInspector.Target} target |
| 126 */ |
| 127 targetAdded: function(target) |
| 128 { |
| 129 var treeOutline = new WebInspector.ElementsTreeOutline(target, true, tru
e, this._populateContextMenu.bind(this), this._setPseudoClassForNode.bind(this))
; |
| 130 treeOutline.wireToDOMModel(); |
| 131 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Sel
ectedNodeChanged, this._selectedNodeChanged, this); |
| 132 treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Ele
mentsTreeUpdated, this._updateBreadcrumbIfNeeded, this); |
| 133 this._treeOutlines.push(treeOutline); |
| 134 this._targetToTreeOutline.put(target, treeOutline); |
| 135 |
| 136 target.domModel.addEventListener(WebInspector.DOMModel.Events.DocumentUp
dated, this._documentUpdatedEvent.bind(this, target)); |
| 137 target.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.Model
WasEnabled, this._updateSidebars, this); |
| 138 |
| 139 // Perform attach if necessary. |
| 140 if (this.isShowing()) |
| 141 this.wasShown(); |
| 142 }, |
| 143 |
| 144 /** |
| 145 * @param {!WebInspector.Target} target |
| 146 */ |
| 147 targetRemoved: function(target) { }, |
| 148 |
| 149 /** |
| 150 * @param {?WebInspector.Target} target |
| 151 */ |
| 152 activeTargetChanged: function(target) { }, |
| 153 |
| 154 /** |
| 155 * @return {?WebInspector.ElementsTreeOutline} |
| 156 */ |
| 157 _firstTreeOutlineDeprecated: function() |
| 158 { |
| 159 return this._treeOutlines[0] || null; |
| 160 }, |
| 161 |
| 127 _updateTreeOutlineVisibleWidth: function() | 162 _updateTreeOutlineVisibleWidth: function() |
| 128 { | 163 { |
| 129 if (!this.treeOutline) | 164 if (!this._treeOutlines.length) |
| 130 return; | 165 return; |
| 131 | 166 |
| 132 var width = this._splitView.element.offsetWidth; | 167 var width = this._splitView.element.offsetWidth; |
| 133 if (this._splitView.isVertical()) | 168 if (this._splitView.isVertical()) |
| 134 width -= this._splitView.sidebarSize(); | 169 width -= this._splitView.sidebarSize(); |
| 135 this.treeOutline.setVisibleWidth(width); | 170 for (var i = 0; i > this._treeOutlines.length; ++i) { |
| 136 this.treeOutline.updateSelection(); | 171 this._treeOutlines[i].setVisibleWidth(width); |
| 172 this._treeOutlines[i].updateSelection(); |
| 173 } |
| 137 this.updateBreadcrumbSizes(); | 174 this.updateBreadcrumbSizes(); |
| 138 }, | 175 }, |
| 139 | 176 |
| 140 /** | 177 /** |
| 141 * @return {!Element} | 178 * @return {!Element} |
| 142 */ | 179 */ |
| 143 defaultFocusedElement: function() | 180 defaultFocusedElement: function() |
| 144 { | 181 { |
| 145 return this.treeOutline.element; | 182 return this._treeOutlines.length ? this._treeOutlines[0].element : this.
element; |
| 146 }, | 183 }, |
| 147 | 184 |
| 148 /** | 185 /** |
| 149 * @return {!WebInspector.SearchableView} | 186 * @return {!WebInspector.SearchableView} |
| 150 */ | 187 */ |
| 151 searchableView: function() | 188 searchableView: function() |
| 152 { | 189 { |
| 153 return this._searchableView; | 190 return this._searchableView; |
| 154 }, | 191 }, |
| 155 | 192 |
| 156 wasShown: function() | 193 wasShown: function() |
| 157 { | 194 { |
| 158 // Attach heavy component lazily | 195 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 159 if (this.treeOutline.element.parentElement !== this.contentElement) | 196 var treeOutline = this._treeOutlines[i]; |
| 160 this.contentElement.appendChild(this.treeOutline.element); | 197 // Attach heavy component lazily |
| 198 if (treeOutline.element.parentElement !== this.contentElement) |
| 199 this.contentElement.appendChild(treeOutline.element); |
| 200 } |
| 201 WebInspector.Panel.prototype.wasShown.call(this); |
| 202 this.updateBreadcrumb(); |
| 161 | 203 |
| 162 WebInspector.Panel.prototype.wasShown.call(this); | 204 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 205 var treeOutline = this._treeOutlines[i]; |
| 206 treeOutline.updateSelection(); |
| 207 treeOutline.setVisible(true); |
| 163 | 208 |
| 164 this.updateBreadcrumb(); | 209 if (!treeOutline.rootDOMNode) |
| 165 this.treeOutline.updateSelection(); | 210 if (treeOutline.domModel().existingDocument()) |
| 166 this.treeOutline.setVisible(true); | 211 this._documentUpdated(treeOutline.target(), treeOutline.domM
odel().existingDocument()); |
| 212 else |
| 213 treeOutline.domModel().requestDocument(); |
| 214 } |
| 167 | 215 |
| 168 if (!this.treeOutline.rootDOMNode) | |
| 169 if (WebInspector.domModel.existingDocument()) | |
| 170 this._documentUpdated(WebInspector.domModel.existingDocument()); | |
| 171 else | |
| 172 WebInspector.domModel.requestDocument(); | |
| 173 }, | 216 }, |
| 174 | 217 |
| 175 willHide: function() | 218 willHide: function() |
| 176 { | 219 { |
| 177 WebInspector.domModel.hideDOMNodeHighlight(); | 220 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 178 this.treeOutline.setVisible(false); | 221 var treeOutline = this._treeOutlines[i]; |
| 222 treeOutline.domModel().hideDOMNodeHighlight(); |
| 223 treeOutline.setVisible(false); |
| 224 // Detach heavy component on hide |
| 225 this.contentElement.removeChild(treeOutline.element); |
| 226 } |
| 179 this._popoverHelper.hidePopover(); | 227 this._popoverHelper.hidePopover(); |
| 180 | |
| 181 // Detach heavy component on hide | |
| 182 this.contentElement.removeChild(this.treeOutline.element); | |
| 183 | |
| 184 WebInspector.Panel.prototype.willHide.call(this); | 228 WebInspector.Panel.prototype.willHide.call(this); |
| 185 }, | 229 }, |
| 186 | 230 |
| 187 onResize: function() | 231 onResize: function() |
| 188 { | 232 { |
| 189 this._updateTreeOutlineVisibleWidth(); | 233 this._updateTreeOutlineVisibleWidth(); |
| 190 }, | 234 }, |
| 191 | 235 |
| 192 omitDefaultSelection: function() | 236 omitDefaultSelection: function() |
| 193 { | 237 { |
| 194 this._omitDefaultSelection = true; | 238 this._omitDefaultSelection = true; |
| 195 }, | 239 }, |
| 196 | 240 |
| 197 stopOmittingDefaultSelection: function() | 241 stopOmittingDefaultSelection: function() |
| 198 { | 242 { |
| 199 delete this._omitDefaultSelection; | 243 delete this._omitDefaultSelection; |
| 200 }, | 244 }, |
| 201 | 245 |
| 202 /** | 246 /** |
| 203 * @param {!DOMAgent.NodeId} nodeId | 247 * @param {!WebInspector.DOMNode} node |
| 204 * @param {string} pseudoClass | 248 * @param {string} pseudoClass |
| 205 * @param {boolean} enable | 249 * @param {boolean} enable |
| 206 */ | 250 */ |
| 207 _setPseudoClassForNodeId: function(nodeId, pseudoClass, enable) | 251 _setPseudoClassForNode: function(node, pseudoClass, enable) |
| 208 { | 252 { |
| 209 var node = WebInspector.domModel.nodeForId(nodeId); | 253 if (!node || !node.target().cssModel.forcePseudoState(node, pseudoClass,
enable)) |
| 210 if (!node) | |
| 211 return; | 254 return; |
| 212 | 255 |
| 213 var pseudoClasses = node.getUserProperty(WebInspector.ElementsTreeOutlin
e.PseudoStateDecorator.PropertyName); | 256 this._targetToTreeOutline.get(node.target()).updateOpenCloseTags(node); |
| 214 if (enable) { | |
| 215 pseudoClasses = pseudoClasses || []; | |
| 216 if (pseudoClasses.indexOf(pseudoClass) >= 0) | |
| 217 return; | |
| 218 pseudoClasses.push(pseudoClass); | |
| 219 node.setUserProperty(WebInspector.ElementsTreeOutline.PseudoStateDec
orator.PropertyName, pseudoClasses); | |
| 220 } else { | |
| 221 if (!pseudoClasses || pseudoClasses.indexOf(pseudoClass) < 0) | |
| 222 return; | |
| 223 pseudoClasses.remove(pseudoClass); | |
| 224 if (!pseudoClasses.length) | |
| 225 node.removeUserProperty(WebInspector.ElementsTreeOutline.PseudoS
tateDecorator.PropertyName); | |
| 226 } | |
| 227 | |
| 228 this.treeOutline.updateOpenCloseTags(node); | |
| 229 WebInspector.cssModel.forcePseudoState(node.id, node.getUserProperty(Web
Inspector.ElementsTreeOutline.PseudoStateDecorator.PropertyName)); | |
| 230 this._metricsPaneEdited(); | 257 this._metricsPaneEdited(); |
| 231 this._stylesPaneEdited(); | 258 this._stylesPaneEdited(); |
| 232 | 259 |
| 233 WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMet
rics.UserAction, { | 260 WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMet
rics.UserAction, { |
| 234 action: WebInspector.UserMetrics.UserActionNames.ForcedElementState, | 261 action: WebInspector.UserMetrics.UserActionNames.ForcedElementState, |
| 235 selector: WebInspector.DOMPresentationUtils.fullQualifiedSelector(no
de, false), | 262 selector: WebInspector.DOMPresentationUtils.fullQualifiedSelector(no
de, false), |
| 236 enabled: enable, | 263 enabled: enable, |
| 237 state: pseudoClass | 264 state: pseudoClass |
| 238 }); | 265 }); |
| 239 }, | 266 }, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 265 this.updatePlatformFonts(); | 292 this.updatePlatformFonts(); |
| 266 this.updateProperties(); | 293 this.updateProperties(); |
| 267 this.updateEventListeners(); | 294 this.updateEventListeners(); |
| 268 }, | 295 }, |
| 269 | 296 |
| 270 _reset: function() | 297 _reset: function() |
| 271 { | 298 { |
| 272 delete this.currentQuery; | 299 delete this.currentQuery; |
| 273 }, | 300 }, |
| 274 | 301 |
| 275 _documentUpdatedEvent: function(event) | 302 /** |
| 303 * @param {!WebInspector.Target} target |
| 304 * @param {!WebInspector.Event} event |
| 305 */ |
| 306 _documentUpdatedEvent: function(target, event) |
| 276 { | 307 { |
| 277 this._documentUpdated(event.data); | 308 this._documentUpdated(target, /** @type {?WebInspector.DOMDocument} */ (
event.data)); |
| 278 }, | 309 }, |
| 279 | 310 |
| 280 _documentUpdated: function(inspectedRootDocument) | 311 /** |
| 312 * @param {!WebInspector.Target} target |
| 313 * @param {?WebInspector.DOMDocument} inspectedRootDocument |
| 314 */ |
| 315 _documentUpdated: function(target, inspectedRootDocument) |
| 281 { | 316 { |
| 282 this._reset(); | 317 this._reset(); |
| 283 this.searchCanceled(); | 318 this.searchCanceled(); |
| 284 | 319 |
| 285 this.treeOutline.rootDOMNode = inspectedRootDocument; | 320 var treeOutline = this._targetToTreeOutline.get(target); |
| 321 treeOutline.rootDOMNode = inspectedRootDocument; |
| 286 | 322 |
| 287 if (!inspectedRootDocument) { | 323 if (!inspectedRootDocument) { |
| 288 if (this.isShowing()) | 324 if (this.isShowing()) |
| 289 WebInspector.domModel.requestDocument(); | 325 target.domModel.requestDocument(); |
| 290 return; | 326 return; |
| 291 } | 327 } |
| 292 | 328 |
| 293 WebInspector.domBreakpointsSidebarPane.restoreBreakpoints(); | 329 WebInspector.domBreakpointsSidebarPane.restoreBreakpoints(); |
| 294 | 330 |
| 295 /** | 331 /** |
| 296 * @this {WebInspector.ElementsPanel} | 332 * @this {WebInspector.ElementsPanel} |
| 297 * @param {?WebInspector.DOMNode} candidateFocusNode | 333 * @param {?WebInspector.DOMNode} candidateFocusNode |
| 298 */ | 334 */ |
| 299 function selectNode(candidateFocusNode) | 335 function selectNode(candidateFocusNode) |
| 300 { | 336 { |
| 301 if (!candidateFocusNode) | 337 if (!candidateFocusNode) |
| 302 candidateFocusNode = inspectedRootDocument.body || inspectedRoot
Document.documentElement; | 338 candidateFocusNode = inspectedRootDocument.body || inspectedRoot
Document.documentElement; |
| 303 | 339 |
| 304 if (!candidateFocusNode) | 340 if (!candidateFocusNode) |
| 305 return; | 341 return; |
| 306 | 342 |
| 307 this.selectDOMNode(candidateFocusNode); | 343 this.selectDOMNode(candidateFocusNode); |
| 308 if (this.treeOutline.selectedTreeElement) | 344 if (treeOutline.selectedTreeElement) |
| 309 this.treeOutline.selectedTreeElement.expand(); | 345 treeOutline.selectedTreeElement.expand(); |
| 310 } | 346 } |
| 311 | 347 |
| 312 /** | 348 /** |
| 313 * @param {?DOMAgent.NodeId} nodeId | 349 * @param {?DOMAgent.NodeId} nodeId |
| 314 * @this {WebInspector.ElementsPanel} | 350 * @this {WebInspector.ElementsPanel} |
| 315 */ | 351 */ |
| 316 function selectLastSelectedNode(nodeId) | 352 function selectLastSelectedNode(nodeId) |
| 317 { | 353 { |
| 318 if (this.selectedDOMNode()) { | 354 if (this.selectedDOMNode()) { |
| 319 // Focused node has been explicitly set while reaching out for t
he last selected node. | 355 // Focused node has been explicitly set while reaching out for t
he last selected node. |
| 320 return; | 356 return; |
| 321 } | 357 } |
| 322 var node = nodeId ? WebInspector.domModel.nodeForId(nodeId) : null; | 358 var node = nodeId ? target.domModel.nodeForId(nodeId) : null; |
| 323 selectNode.call(this, node); | 359 selectNode.call(this, node); |
| 324 } | 360 } |
| 325 | 361 |
| 326 if (this._omitDefaultSelection) | 362 if (this._omitDefaultSelection) |
| 327 return; | 363 return; |
| 328 | 364 |
| 329 if (this._selectedPathOnReset) | 365 if (this._selectedPathOnReset) |
| 330 WebInspector.domModel.pushNodeByPathToFrontend(this._selectedPathOnR
eset, selectLastSelectedNode.bind(this)); | 366 target.domModel.pushNodeByPathToFrontend(this._selectedPathOnReset,
selectLastSelectedNode.bind(this)); |
| 331 else | 367 else |
| 332 selectNode.call(this, null); | 368 selectNode.call(this, null); |
| 333 delete this._selectedPathOnReset; | 369 delete this._selectedPathOnReset; |
| 334 }, | 370 }, |
| 335 | 371 |
| 336 searchCanceled: function() | 372 searchCanceled: function() |
| 337 { | 373 { |
| 338 delete this._searchQuery; | 374 delete this._searchQuery; |
| 339 this._hideSearchHighlights(); | 375 this._hideSearchHighlights(); |
| 340 | 376 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 this._currentSearchResultIndex = -1; | 410 this._currentSearchResultIndex = -1; |
| 375 if (shouldJump) | 411 if (shouldJump) |
| 376 this.jumpToNextSearchResult(); | 412 this.jumpToNextSearchResult(); |
| 377 } | 413 } |
| 378 WebInspector.domModel.performSearch(whitespaceTrimmedQuery, resultCountC
allback.bind(this)); | 414 WebInspector.domModel.performSearch(whitespaceTrimmedQuery, resultCountC
allback.bind(this)); |
| 379 }, | 415 }, |
| 380 | 416 |
| 381 _contextMenuEventFired: function(event) | 417 _contextMenuEventFired: function(event) |
| 382 { | 418 { |
| 383 var contextMenu = new WebInspector.ContextMenu(event); | 419 var contextMenu = new WebInspector.ContextMenu(event); |
| 384 this.treeOutline.populateContextMenu(contextMenu, event); | 420 for (var i = 0; i < this._treeOutlines.length; ++i) |
| 421 this._treeOutlines[i].populateContextMenu(contextMenu, event); |
| 385 contextMenu.show(); | 422 contextMenu.show(); |
| 386 }, | 423 }, |
| 387 | 424 |
| 388 _domWordWrapSettingChanged: function(event) | 425 _domWordWrapSettingChanged: function(event) |
| 389 { | 426 { |
| 390 if (event.data) | 427 if (event.data) |
| 391 this.contentElement.classList.remove("nowrap"); | 428 this.contentElement.classList.remove("nowrap"); |
| 392 else | 429 else |
| 393 this.contentElement.classList.add("nowrap"); | 430 this.contentElement.classList.add("nowrap"); |
| 394 | 431 |
| 395 var selectedNode = this.selectedDOMNode(); | 432 var selectedNode = this.selectedDOMNode(); |
| 396 if (!selectedNode) | 433 if (!selectedNode) |
| 397 return; | 434 return; |
| 398 | 435 |
| 399 var treeElement = this.treeOutline.findTreeElement(selectedNode); | 436 var treeOutline = this._targetToTreeOutline.get(selectedNode.target()); |
| 437 var treeElement = treeOutline.findTreeElement(selectedNode); |
| 400 if (treeElement) | 438 if (treeElement) |
| 401 treeElement.updateSelection(); // Recalculate selection highlight di
mensions. | 439 treeElement.updateSelection(); // Recalculate selection highlight di
mensions. |
| 402 }, | 440 }, |
| 403 | 441 |
| 404 switchToAndFocus: function(node) | 442 switchToAndFocus: function(node) |
| 405 { | 443 { |
| 406 // Reset search restore. | 444 // Reset search restore. |
| 407 this._searchableView.cancelSearch(); | 445 this._searchableView.cancelSearch(); |
| 408 WebInspector.inspectorView.setCurrentPanel(this); | 446 WebInspector.inspectorView.setCurrentPanel(this); |
| 409 this.selectDOMNode(node, true); | 447 this.selectDOMNode(node, true); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 429 return null; | 467 return null; |
| 430 | 468 |
| 431 anchor.removeAttribute("title"); | 469 anchor.removeAttribute("title"); |
| 432 } | 470 } |
| 433 return anchor; | 471 return anchor; |
| 434 }, | 472 }, |
| 435 | 473 |
| 436 _loadDimensionsForNode: function(treeElement, callback) | 474 _loadDimensionsForNode: function(treeElement, callback) |
| 437 { | 475 { |
| 438 // We get here for CSS properties, too, so bail out early for non-DOM tr
eeElements. | 476 // We get here for CSS properties, too, so bail out early for non-DOM tr
eeElements. |
| 439 if (treeElement.treeOutline !== this.treeOutline) { | 477 if (!(treeElement.treeOutline instanceof WebInspector.ElementsTreeOutlin
e)) { |
| 440 callback(); | 478 callback(); |
| 441 return; | 479 return; |
| 442 } | 480 } |
| 443 | 481 |
| 444 var node = /** @type {!WebInspector.DOMNode} */ (treeElement.represented
Object); | 482 var node = /** @type {!WebInspector.DOMNode} */ (treeElement.represented
Object); |
| 445 | 483 |
| 446 if (!node.nodeName() || node.nodeName().toLowerCase() !== "img") { | 484 if (!node.nodeName() || node.nodeName().toLowerCase() !== "img") { |
| 447 callback(); | 485 callback(); |
| 448 return; | 486 return; |
| 449 } | 487 } |
| 450 | 488 |
| 451 WebInspector.RemoteObject.resolveNode(node, "", resolvedNode); | 489 node.resolveToObject("", resolvedNode); |
| 452 | 490 |
| 453 function resolvedNode(object) | 491 function resolvedNode(object) |
| 454 { | 492 { |
| 455 if (!object) { | 493 if (!object) { |
| 456 callback(); | 494 callback(); |
| 457 return; | 495 return; |
| 458 } | 496 } |
| 459 | 497 |
| 460 object.callFunctionJSON(dimensions, undefined, callback); | 498 object.callFunctionJSON(dimensions, undefined, callback); |
| 461 object.release(); | 499 object.release(); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 | 553 |
| 516 this._hideSearchHighlights(); | 554 this._hideSearchHighlights(); |
| 517 if (--this._currentSearchResultIndex < 0) | 555 if (--this._currentSearchResultIndex < 0) |
| 518 this._currentSearchResultIndex = (this._searchResults.length - 1); | 556 this._currentSearchResultIndex = (this._searchResults.length - 1); |
| 519 | 557 |
| 520 this._highlightCurrentSearchResult(); | 558 this._highlightCurrentSearchResult(); |
| 521 }, | 559 }, |
| 522 | 560 |
| 523 _highlightCurrentSearchResult: function() | 561 _highlightCurrentSearchResult: function() |
| 524 { | 562 { |
| 563 var treeOutline = this._firstTreeOutlineDeprecated(); |
| 564 if (!treeOutline) |
| 565 return; |
| 566 |
| 525 var index = this._currentSearchResultIndex; | 567 var index = this._currentSearchResultIndex; |
| 526 var searchResults = this._searchResults; | 568 var searchResults = this._searchResults; |
| 527 var searchResult = searchResults[index]; | 569 var searchResult = searchResults[index]; |
| 528 | 570 |
| 529 if (searchResult === null) { | 571 if (searchResult === null) { |
| 530 this._searchableView.updateCurrentMatchIndex(index); | 572 this._searchableView.updateCurrentMatchIndex(index); |
| 531 return; | 573 return; |
| 532 } | 574 } |
| 533 | 575 |
| 534 /** | 576 /** |
| 535 * @param {?WebInspector.DOMNode} node | 577 * @param {?WebInspector.DOMNode} node |
| 536 * @this {WebInspector.ElementsPanel} | 578 * @this {WebInspector.ElementsPanel} |
| 537 */ | 579 */ |
| 538 function searchCallback(node) | 580 function searchCallback(node) |
| 539 { | 581 { |
| 540 searchResults[index] = node; | 582 searchResults[index] = node; |
| 541 this._highlightCurrentSearchResult(); | 583 this._highlightCurrentSearchResult(); |
| 542 } | 584 } |
| 543 | 585 |
| 544 if (typeof searchResult === "undefined") { | 586 if (typeof searchResult === "undefined") { |
| 545 // No data for slot, request it. | 587 // No data for slot, request it. |
| 546 WebInspector.domModel.searchResult(index, searchCallback.bind(this))
; | 588 WebInspector.domModel.searchResult(index, searchCallback.bind(this))
; |
| 547 return; | 589 return; |
| 548 } | 590 } |
| 549 | 591 |
| 550 this._searchableView.updateCurrentMatchIndex(index); | 592 this._searchableView.updateCurrentMatchIndex(index); |
| 551 | 593 |
| 552 var treeElement = this.treeOutline.findTreeElement(searchResult); | 594 var treeElement = treeOutline.findTreeElement(searchResult); |
| 553 if (treeElement) { | 595 if (treeElement) { |
| 554 treeElement.highlightSearchResults(this._searchQuery); | 596 treeElement.highlightSearchResults(this._searchQuery); |
| 555 treeElement.reveal(); | 597 treeElement.reveal(); |
| 556 var matches = treeElement.listItemElement.getElementsByClassName("hi
ghlighted-search-result"); | 598 var matches = treeElement.listItemElement.getElementsByClassName("hi
ghlighted-search-result"); |
| 557 if (matches.length) | 599 if (matches.length) |
| 558 matches[0].scrollIntoViewIfNeeded(); | 600 matches[0].scrollIntoViewIfNeeded(); |
| 559 } | 601 } |
| 560 }, | 602 }, |
| 561 | 603 |
| 562 _hideSearchHighlights: function() | 604 _hideSearchHighlights: function() |
| 563 { | 605 { |
| 564 if (!this._searchResults) | 606 if (!this._searchResults) |
| 565 return; | 607 return; |
| 566 var searchResult = this._searchResults[this._currentSearchResultIndex]; | 608 var searchResult = this._searchResults[this._currentSearchResultIndex]; |
| 567 if (!searchResult) | 609 if (!searchResult) |
| 568 return; | 610 return; |
| 569 var treeElement = this.treeOutline.findTreeElement(searchResult); | 611 var treeOutline = this._targetToTreeOutline.get(searchResult.target()); |
| 612 var treeElement = treeOutline.findTreeElement(searchResult); |
| 570 if (treeElement) | 613 if (treeElement) |
| 571 treeElement.hideSearchHighlights(); | 614 treeElement.hideSearchHighlights(); |
| 572 }, | 615 }, |
| 573 | 616 |
| 574 /** | 617 /** |
| 575 * @return {?WebInspector.DOMNode} | 618 * @return {?WebInspector.DOMNode} |
| 576 */ | 619 */ |
| 577 selectedDOMNode: function() | 620 selectedDOMNode: function() |
| 578 { | 621 { |
| 579 return this.treeOutline.selectedDOMNode(); | 622 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 623 var treeOutline = this._treeOutlines[i]; |
| 624 if (treeOutline.selectedDOMNode()) |
| 625 return treeOutline.selectedDOMNode(); |
| 626 } |
| 627 return null; |
| 580 }, | 628 }, |
| 581 | 629 |
| 582 /** | 630 /** |
| 583 * @param {boolean=} focus | 631 * @param {boolean=} focus |
| 584 */ | 632 */ |
| 585 selectDOMNode: function(node, focus) | 633 selectDOMNode: function(node, focus) |
| 586 { | 634 { |
| 587 this.treeOutline.selectDOMNode(node, focus); | 635 for (var i = 0; i < this._treeOutlines.length; ++i) { |
| 636 var treeOutline = this._treeOutlines[i]; |
| 637 if (treeOutline.target() === node.target()) |
| 638 treeOutline.selectDOMNode(node, focus); |
| 639 else |
| 640 treeOutline.selectDOMNode(null); |
| 641 } |
| 588 }, | 642 }, |
| 589 | 643 |
| 590 /** | 644 /** |
| 591 * @param {!WebInspector.Event} event | 645 * @param {!WebInspector.Event} event |
| 592 */ | 646 */ |
| 593 _updateBreadcrumbIfNeeded: function(event) | 647 _updateBreadcrumbIfNeeded: function(event) |
| 594 { | 648 { |
| 595 var nodes = /** @type {!Array.<!WebInspector.DOMNode>} */ (event.data ||
[]); | 649 var nodes = /** @type {!Array.<!WebInspector.DOMNode>} */ (event.data ||
[]); |
| 596 if (!nodes.length) | 650 if (!nodes.length) |
| 597 return; | 651 return; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 618 { | 672 { |
| 619 // Once metrics are edited, the Styles pane should be updated. | 673 // Once metrics are edited, the Styles pane should be updated. |
| 620 this.sidebarPanes.styles.needsUpdate = true; | 674 this.sidebarPanes.styles.needsUpdate = true; |
| 621 this.updateStyles(true); | 675 this.updateStyles(true); |
| 622 }, | 676 }, |
| 623 | 677 |
| 624 _mouseMovedInCrumbs: function(event) | 678 _mouseMovedInCrumbs: function(event) |
| 625 { | 679 { |
| 626 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; | 680 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; |
| 627 var crumbElement = nodeUnderMouse.enclosingNodeOrSelfWithClass("crumb"); | 681 var crumbElement = nodeUnderMouse.enclosingNodeOrSelfWithClass("crumb"); |
| 628 | 682 var node = /** @type {?WebInspector.DOMNode} */ (crumbElement ? crumbEle
ment.representedObject : null); |
| 629 WebInspector.domModel.highlightDOMNode(crumbElement ? crumbElement.repre
sentedObject.id : 0); | 683 if (node) |
| 630 | 684 node.highlight(); |
| 631 if ("_mouseOutOfCrumbsTimeout" in this) { | |
| 632 clearTimeout(this._mouseOutOfCrumbsTimeout); | |
| 633 delete this._mouseOutOfCrumbsTimeout; | |
| 634 } | |
| 635 }, | 685 }, |
| 636 | 686 |
| 637 _mouseMovedOutOfCrumbs: function(event) | 687 _mouseMovedOutOfCrumbs: function(event) |
| 638 { | 688 { |
| 639 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; | 689 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; |
| 640 if (nodeUnderMouse && nodeUnderMouse.isDescendant(this.crumbsElement)) | 690 if (nodeUnderMouse && nodeUnderMouse.isDescendant(this.crumbsElement)) |
| 641 return; | 691 return; |
| 642 | 692 |
| 643 WebInspector.domModel.hideDOMNodeHighlight(); | 693 for (var i = 0; i < this._treeOutlines.length; ++i) |
| 644 | 694 this._treeOutlines[i].domModel().hideDOMNodeHighlight(); |
| 645 this._mouseOutOfCrumbsTimeout = setTimeout(this.updateBreadcrumbSizes.bi
nd(this), 1000); | |
| 646 }, | 695 }, |
| 647 | 696 |
| 648 /** | 697 /** |
| 649 * @param {boolean=} forceUpdate | 698 * @param {boolean=} forceUpdate |
| 650 */ | 699 */ |
| 651 updateBreadcrumb: function(forceUpdate) | 700 updateBreadcrumb: function(forceUpdate) |
| 652 { | 701 { |
| 653 if (!this.isShowing()) | 702 if (!this.isShowing()) |
| 654 return; | 703 return; |
| 655 | 704 |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1073 { | 1122 { |
| 1074 if (WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) && !even
t.shiftKey && event.keyIdentifier === "U+005A") { // Z key | 1123 if (WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) && !even
t.shiftKey && event.keyIdentifier === "U+005A") { // Z key |
| 1075 WebInspector.domModel.undo(this._updateSidebars.bind(this)); | 1124 WebInspector.domModel.undo(this._updateSidebars.bind(this)); |
| 1076 event.handled = true; | 1125 event.handled = true; |
| 1077 return; | 1126 return; |
| 1078 } | 1127 } |
| 1079 | 1128 |
| 1080 var isRedoKey = WebInspector.isMac() ? event.metaKey && event.shiftK
ey && event.keyIdentifier === "U+005A" : // Z key | 1129 var isRedoKey = WebInspector.isMac() ? event.metaKey && event.shiftK
ey && event.keyIdentifier === "U+005A" : // Z key |
| 1081 event.ctrlKey && event.keyIde
ntifier === "U+0059"; // Y key | 1130 event.ctrlKey && event.keyIde
ntifier === "U+0059"; // Y key |
| 1082 if (isRedoKey) { | 1131 if (isRedoKey) { |
| 1083 DOMAgent.redo(this._updateSidebars.bind(this)); | 1132 WebInspector.domModel.redo(this._updateSidebars.bind(this)); |
| 1084 event.handled = true; | 1133 event.handled = true; |
| 1085 } | 1134 } |
| 1086 } | 1135 } |
| 1087 | 1136 |
| 1088 if (!this.treeOutline.editing()) { | 1137 var treeOutline = this._firstTreeOutlineDeprecated(); |
| 1138 if (!treeOutline) |
| 1139 return; |
| 1140 |
| 1141 if (!treeOutline.editing()) { |
| 1089 handleUndoRedo.call(this); | 1142 handleUndoRedo.call(this); |
| 1090 if (event.handled) | 1143 if (event.handled) |
| 1091 return; | 1144 return; |
| 1092 } | 1145 } |
| 1093 | 1146 |
| 1094 this.treeOutline.handleShortcut(event); | 1147 treeOutline.handleShortcut(event); |
| 1095 }, | 1148 }, |
| 1096 | 1149 |
| 1097 handleCopyEvent: function(event) | 1150 handleCopyEvent: function(event) |
| 1098 { | 1151 { |
| 1099 var currentFocusElement = WebInspector.currentFocusElement(); | 1152 var currentFocusElement = WebInspector.currentFocusElement(); |
| 1100 if (currentFocusElement && WebInspector.isBeingEdited(currentFocusElemen
t)) | 1153 if (currentFocusElement && WebInspector.isBeingEdited(currentFocusElemen
t)) |
| 1101 return; | 1154 return; |
| 1102 | 1155 |
| 1103 // Don't prevent the normal copy if the user has a selection. | 1156 // Don't prevent the normal copy if the user has a selection. |
| 1104 if (!window.getSelection().isCollapsed) | 1157 if (!window.getSelection().isCollapsed) |
| 1105 return; | 1158 return; |
| 1106 event.clipboardData.clearData(); | 1159 event.clipboardData.clearData(); |
| 1107 event.preventDefault(); | 1160 event.preventDefault(); |
| 1108 this.selectedDOMNode().copyNode(); | 1161 this.selectedDOMNode().copyNode(); |
| 1109 }, | 1162 }, |
| 1110 | 1163 |
| 1111 /** | 1164 /** |
| 1112 * @param {!WebInspector.DOMNode} node | 1165 * @param {!WebInspector.DOMNode} node |
| 1113 * @return {!WebInspector.DOMNode} | 1166 * @return {!WebInspector.DOMNode} |
| 1114 */ | 1167 */ |
| 1115 _leaveUserAgentShadowDOM: function(node) | 1168 _leaveUserAgentShadowDOM: function(node) |
| 1116 { | 1169 { |
| 1117 var userAgentShadowRoot = node.ancestorUserAgentShadowRoot(); | 1170 var userAgentShadowRoot = node.ancestorUserAgentShadowRoot(); |
| 1118 return userAgentShadowRoot ? /** @type {!WebInspector.DOMNode} */ (userA
gentShadowRoot.parentNode) : node; | 1171 return userAgentShadowRoot ? /** @type {!WebInspector.DOMNode} */ (userA
gentShadowRoot.parentNode) : node; |
| 1119 }, | 1172 }, |
| 1120 | 1173 |
| 1121 /** | 1174 /** |
| 1122 * @param {!DOMAgent.NodeId} nodeId | 1175 * @param {!WebInspector.DOMNode} node |
| 1123 */ | 1176 */ |
| 1124 revealAndSelectNode: function(nodeId) | 1177 revealAndSelectNode: function(node) |
| 1125 { | 1178 { |
| 1126 WebInspector.inspectorView.setCurrentPanel(this); | 1179 WebInspector.inspectorView.setCurrentPanel(this); |
| 1127 | |
| 1128 var node = WebInspector.domModel.nodeForId(nodeId); | |
| 1129 if (!node) | |
| 1130 return; | |
| 1131 | |
| 1132 node = WebInspector.settings.showUAShadowDOM.get() ? node : this._leaveU
serAgentShadowDOM(node); | 1180 node = WebInspector.settings.showUAShadowDOM.get() ? node : this._leaveU
serAgentShadowDOM(node); |
| 1133 WebInspector.domModel.highlightDOMNodeForTwoSeconds(nodeId); | 1181 node.highlightForTwoSeconds(); |
| 1134 this.selectDOMNode(node, true); | 1182 this.selectDOMNode(node, true); |
| 1135 }, | 1183 }, |
| 1136 | 1184 |
| 1137 /** | 1185 /** |
| 1138 * @param {!WebInspector.ContextMenu} contextMenu | 1186 * @param {!WebInspector.ContextMenu} contextMenu |
| 1139 * @param {!Object} target | 1187 * @param {!Object} object |
| 1140 */ | 1188 */ |
| 1141 appendApplicableItems: function(event, contextMenu, target) | 1189 appendApplicableItems: function(event, contextMenu, object) |
| 1142 { | 1190 { |
| 1143 /** | 1191 /** |
| 1192 * @param {!WebInspector.Target} target |
| 1144 * @param {?DOMAgent.NodeId} nodeId | 1193 * @param {?DOMAgent.NodeId} nodeId |
| 1145 */ | 1194 */ |
| 1146 function selectNode(nodeId) | 1195 function selectNode(target, nodeId) |
| 1147 { | 1196 { |
| 1148 if (nodeId) | 1197 if (nodeId) |
| 1149 WebInspector.domModel.inspectElement(nodeId); | 1198 target.domModel.inspectElement(nodeId); |
| 1150 } | 1199 } |
| 1151 | 1200 |
| 1152 /** | 1201 /** |
| 1153 * @param {!WebInspector.RemoteObject} remoteObject | 1202 * @param {!WebInspector.RemoteObject} remoteObject |
| 1154 */ | 1203 */ |
| 1155 function revealElement(remoteObject) | 1204 function revealElement(remoteObject) |
| 1156 { | 1205 { |
| 1157 remoteObject.pushNodeToFrontend(selectNode); | 1206 remoteObject.pushNodeToFrontend(selectNode.bind(null, /** @type {!We
bInspector.Target} */ (remoteObject.target()))); |
| 1158 } | 1207 } |
| 1159 | 1208 |
| 1160 var commandCallback; | 1209 var commandCallback; |
| 1161 if (target instanceof WebInspector.RemoteObject) { | 1210 if (object instanceof WebInspector.RemoteObject) { |
| 1162 var remoteObject = /** @type {!WebInspector.RemoteObject} */ (target
); | 1211 var remoteObject = /** @type {!WebInspector.RemoteObject} */ (object
); |
| 1163 if (remoteObject.subtype === "node") | 1212 if (remoteObject.subtype === "node") |
| 1164 commandCallback = revealElement.bind(null, remoteObject); | 1213 commandCallback = revealElement.bind(null, remoteObject); |
| 1165 } else if (target instanceof WebInspector.DOMNode) { | 1214 } else if (object instanceof WebInspector.DOMNode) { |
| 1166 var domNode = /** @type {!WebInspector.DOMNode} */ (target); | 1215 var domNode = /** @type {!WebInspector.DOMNode} */ (object); |
| 1167 if (domNode.id) | 1216 commandCallback = domNode.reveal.bind(domNode); |
| 1168 commandCallback = WebInspector.domModel.inspectElement.bind(WebI
nspector.domModel, domNode.id); | |
| 1169 } | 1217 } |
| 1170 if (!commandCallback) | 1218 if (!commandCallback) |
| 1171 return; | 1219 return; |
| 1172 // Skip adding "Reveal..." menu item for our own tree outline. | 1220 // Skip adding "Reveal..." menu item for our own tree outline. |
| 1173 if (this.treeOutline.element.isAncestor(event.target)) | 1221 if (this.element.isAncestor(event.target)) |
| 1174 return; | 1222 return; |
| 1175 contextMenu.appendItem(WebInspector.useLowerCaseMenuTitles() ? "Reveal i
n Elements panel" : "Reveal in Elements Panel", commandCallback); | 1223 contextMenu.appendItem(WebInspector.useLowerCaseMenuTitles() ? "Reveal i
n Elements panel" : "Reveal in Elements Panel", commandCallback); |
| 1176 }, | 1224 }, |
| 1177 | 1225 |
| 1178 _sidebarContextMenuEventFired: function(event) | 1226 _sidebarContextMenuEventFired: function(event) |
| 1179 { | 1227 { |
| 1180 var contextMenu = new WebInspector.ContextMenu(event); | 1228 var contextMenu = new WebInspector.ContextMenu(event); |
| 1181 contextMenu.show(); | 1229 contextMenu.show(); |
| 1182 }, | 1230 }, |
| 1183 | 1231 |
| 1184 _dockSideChanged: function() | 1232 _dockSideChanged: function() |
| 1185 { | 1233 { |
| 1186 var vertically = WebInspector.dockController.isVertical() && WebInspecto
r.settings.splitVerticallyWhenDockedToRight.get(); | 1234 var vertically = WebInspector.dockController.isVertical() && WebInspecto
r.settings.splitVerticallyWhenDockedToRight.get(); |
| 1187 this._splitVertically(vertically); | 1235 this._splitVertically(vertically); |
| 1188 }, | 1236 }, |
| 1189 | 1237 |
| 1190 _showUAShadowDOMChanged: function() | 1238 _showUAShadowDOMChanged: function() |
| 1191 { | 1239 { |
| 1192 this.treeOutline.update(); | 1240 for (var i = 0; i < this._treeOutlines.length; ++i) |
| 1241 this._treeOutlines[i].update(); |
| 1193 }, | 1242 }, |
| 1194 | 1243 |
| 1195 /** | 1244 /** |
| 1196 * @param {boolean} vertically | 1245 * @param {boolean} vertically |
| 1197 */ | 1246 */ |
| 1198 _splitVertically: function(vertically) | 1247 _splitVertically: function(vertically) |
| 1199 { | 1248 { |
| 1200 if (this.sidebarPaneView && vertically === !this._splitView.isVertical()
) | 1249 if (this.sidebarPaneView && vertically === !this._splitView.isVertical()
) |
| 1201 return; | 1250 return; |
| 1202 | 1251 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1359 reveal: function(node) | 1408 reveal: function(node) |
| 1360 { | 1409 { |
| 1361 if (!(node instanceof WebInspector.DOMNode)) | 1410 if (!(node instanceof WebInspector.DOMNode)) |
| 1362 return; | 1411 return; |
| 1363 | 1412 |
| 1364 if (WebInspector.inspectElementModeController && WebInspector.inspectEle
mentModeController.enabled()) { | 1413 if (WebInspector.inspectElementModeController && WebInspector.inspectEle
mentModeController.enabled()) { |
| 1365 InspectorFrontendHost.bringToFront(); | 1414 InspectorFrontendHost.bringToFront(); |
| 1366 WebInspector.inspectElementModeController.disable(); | 1415 WebInspector.inspectElementModeController.disable(); |
| 1367 } | 1416 } |
| 1368 | 1417 |
| 1369 /** @type {!WebInspector.ElementsPanel} */ (WebInspector.inspectorView.p
anel("elements")).revealAndSelectNode(node.id); | 1418 /** @type {!WebInspector.ElementsPanel} */ (WebInspector.inspectorView.p
anel("elements")).revealAndSelectNode(node); |
| 1370 } | 1419 } |
| 1371 } | 1420 } |
| OLD | NEW |