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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 this.contentElement.classList.add("nowrap"); | 64 this.contentElement.classList.add("nowrap"); |
65 WebInspector.settings.domWordWrap.addChangeListener(this._domWordWrapSetting
Changed.bind(this)); | 65 WebInspector.settings.domWordWrap.addChangeListener(this._domWordWrapSetting
Changed.bind(this)); |
66 | 66 |
67 this.contentElement.addEventListener("contextmenu", this._contextMenuEventFi
red.bind(this), true); | 67 this.contentElement.addEventListener("contextmenu", this._contextMenuEventFi
red.bind(this), true); |
68 this.splitView.sidebarElement.addEventListener("contextmenu", this._sidebarC
ontextMenuEventFired.bind(this), false); | 68 this.splitView.sidebarElement.addEventListener("contextmenu", this._sidebarC
ontextMenuEventFired.bind(this), false); |
69 | 69 |
70 this.treeOutline = new WebInspector.ElementsTreeOutline(true, true, false, t
his._populateContextMenu.bind(this), this._setPseudoClassForNodeId.bind(this)); | 70 this.treeOutline = new WebInspector.ElementsTreeOutline(true, true, false, t
his._populateContextMenu.bind(this), this._setPseudoClassForNodeId.bind(this)); |
71 this.treeOutline.wireToDomAgent(); | 71 this.treeOutline.wireToDomAgent(); |
72 | 72 |
73 this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Se
lectedNodeChanged, this._selectedNodeChanged, this); | 73 this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.Se
lectedNodeChanged, this._selectedNodeChanged, this); |
| 74 this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.DO
MNodesUpdated, this._updateBreadcrumbIfNeeded, this); |
74 | 75 |
75 this.crumbsElement = document.createElement("div"); | 76 this.crumbsElement = document.createElement("div"); |
76 this.crumbsElement.className = "crumbs"; | 77 this.crumbsElement.className = "crumbs"; |
77 this.crumbsElement.addEventListener("mousemove", this._mouseMovedInCrumbs.bi
nd(this), false); | 78 this.crumbsElement.addEventListener("mousemove", this._mouseMovedInCrumbs.bi
nd(this), false); |
78 this.crumbsElement.addEventListener("mouseout", this._mouseMovedOutOfCrumbs.
bind(this), false); | 79 this.crumbsElement.addEventListener("mouseout", this._mouseMovedOutOfCrumbs.
bind(this), false); |
79 | 80 |
80 this.sidebarPanes = {}; | 81 this.sidebarPanes = {}; |
81 this.sidebarPanes.computedStyle = new WebInspector.ComputedStyleSidebarPane(
); | 82 this.sidebarPanes.computedStyle = new WebInspector.ComputedStyleSidebarPane(
); |
82 this.sidebarPanes.styles = new WebInspector.StylesSidebarPane(this.sidebarPa
nes.computedStyle, this._setPseudoClassForNodeId.bind(this)); | 83 this.sidebarPanes.styles = new WebInspector.StylesSidebarPane(this.sidebarPa
nes.computedStyle, this._setPseudoClassForNodeId.bind(this)); |
83 this.sidebarPanes.metrics = new WebInspector.MetricsSidebarPane(); | 84 this.sidebarPanes.metrics = new WebInspector.MetricsSidebarPane(); |
(...skipping 10 matching lines...) Expand all Loading... |
94 this.sidebarPanes.styles.addEventListener("style property toggled", this._st
ylesPaneEdited, this); | 95 this.sidebarPanes.styles.addEventListener("style property toggled", this._st
ylesPaneEdited, this); |
95 this.sidebarPanes.metrics.addEventListener("metrics edited", this._metricsPa
neEdited, this); | 96 this.sidebarPanes.metrics.addEventListener("metrics edited", this._metricsPa
neEdited, this); |
96 | 97 |
97 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve
nts.DockSideChanged, this._dockSideChanged.bind(this)); | 98 WebInspector.dockController.addEventListener(WebInspector.DockController.Eve
nts.DockSideChanged, this._dockSideChanged.bind(this)); |
98 WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(thi
s._dockSideChanged.bind(this)); | 99 WebInspector.settings.splitVerticallyWhenDockedToRight.addChangeListener(thi
s._dockSideChanged.bind(this)); |
99 this._dockSideChanged(); | 100 this._dockSideChanged(); |
100 | 101 |
101 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get
PopoverAnchor.bind(this), this._showPopover.bind(this)); | 102 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._get
PopoverAnchor.bind(this), this._showPopover.bind(this)); |
102 this._popoverHelper.setTimeout(0); | 103 this._popoverHelper.setTimeout(0); |
103 | 104 |
104 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModi
fied, this._updateBreadcrumbIfNeeded, this); | |
105 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemo
ved, this._updateBreadcrumbIfNeeded, this); | |
106 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.NodeRemo
ved, this._nodeRemoved, this); | |
107 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.Document
Updated, this._documentUpdatedEvent, this); | 105 WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.Document
Updated, this._documentUpdatedEvent, this); |
108 WebInspector.settings.showShadowDOM.addChangeListener(this._showShadowDOMCha
nged.bind(this)); | 106 WebInspector.settings.showShadowDOM.addChangeListener(this._showShadowDOMCha
nged.bind(this)); |
109 | 107 |
110 if (WebInspector.domAgent.existingDocument()) | 108 if (WebInspector.domAgent.existingDocument()) |
111 this._documentUpdated(WebInspector.domAgent.existingDocument()); | 109 this._documentUpdated(WebInspector.domAgent.existingDocument()); |
112 } | 110 } |
113 | 111 |
114 WebInspector.ElementsPanel.prototype = { | 112 WebInspector.ElementsPanel.prototype = { |
115 _updateTreeOutlineVisibleWidth: function() | 113 _updateTreeOutlineVisibleWidth: function() |
116 { | 114 { |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 if (!this._searchResults) | 540 if (!this._searchResults) |
543 return; | 541 return; |
544 var searchResult = this._searchResults[this._currentSearchResultIndex]; | 542 var searchResult = this._searchResults[this._currentSearchResultIndex]; |
545 if (!searchResult) | 543 if (!searchResult) |
546 return; | 544 return; |
547 var treeElement = this.treeOutline.findTreeElement(searchResult); | 545 var treeElement = this.treeOutline.findTreeElement(searchResult); |
548 if (treeElement) | 546 if (treeElement) |
549 treeElement.hideSearchHighlights(); | 547 treeElement.hideSearchHighlights(); |
550 }, | 548 }, |
551 | 549 |
| 550 /** |
| 551 * @return {WebInspector.DOMNode} |
| 552 */ |
552 selectedDOMNode: function() | 553 selectedDOMNode: function() |
553 { | 554 { |
554 return this.treeOutline.selectedDOMNode(); | 555 return this.treeOutline.selectedDOMNode(); |
555 }, | 556 }, |
556 | 557 |
557 /** | 558 /** |
558 * @param {boolean=} focus | 559 * @param {boolean=} focus |
559 */ | 560 */ |
560 selectDOMNode: function(node, focus) | 561 selectDOMNode: function(node, focus) |
561 { | 562 { |
562 this.treeOutline.selectDOMNode(node, focus); | 563 this.treeOutline.selectDOMNode(node, focus); |
563 }, | 564 }, |
564 | 565 |
565 _nodeRemoved: function(event) | 566 /** |
| 567 * @param {WebInspector.Event} event |
| 568 */ |
| 569 _updateBreadcrumbIfNeeded: function(event) |
566 { | 570 { |
567 if (!this.isShowing()) | 571 var nodes = /** @type {!Array.<!WebInspector.DOMNode>} */ (event.data ||
[]); |
| 572 if (!nodes.length) |
568 return; | 573 return; |
569 | 574 |
570 var crumbs = this.crumbsElement; | 575 var crumbs = this.crumbsElement; |
571 for (var crumb = crumbs.firstChild; crumb; crumb = crumb.nextSibling) { | 576 for (var crumb = crumbs.firstChild; crumb; crumb = crumb.nextSibling) { |
572 if (crumb.representedObject === event.data.node) { | 577 if (nodes.indexOf(crumb.representedObject) !== -1) { |
573 this.updateBreadcrumb(true); | 578 this.updateBreadcrumb(true); |
574 return; | 579 return; |
575 } | 580 } |
576 } | 581 } |
577 }, | 582 }, |
578 | 583 |
579 _stylesPaneEdited: function() | 584 _stylesPaneEdited: function() |
580 { | 585 { |
581 // Once styles are edited, the Metrics pane should be updated. | 586 // Once styles are edited, the Metrics pane should be updated. |
582 this.sidebarPanes.metrics.needsUpdate = true; | 587 this.sidebarPanes.metrics.needsUpdate = true; |
(...skipping 24 matching lines...) Expand all Loading... |
607 { | 612 { |
608 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; | 613 var nodeUnderMouse = document.elementFromPoint(event.pageX, event.pageY)
; |
609 if (nodeUnderMouse && nodeUnderMouse.isDescendant(this.crumbsElement)) | 614 if (nodeUnderMouse && nodeUnderMouse.isDescendant(this.crumbsElement)) |
610 return; | 615 return; |
611 | 616 |
612 WebInspector.domAgent.hideDOMNodeHighlight(); | 617 WebInspector.domAgent.hideDOMNodeHighlight(); |
613 | 618 |
614 this._mouseOutOfCrumbsTimeout = setTimeout(this.updateBreadcrumbSizes.bi
nd(this), 1000); | 619 this._mouseOutOfCrumbsTimeout = setTimeout(this.updateBreadcrumbSizes.bi
nd(this), 1000); |
615 }, | 620 }, |
616 | 621 |
617 _updateBreadcrumbIfNeeded: function(event) | |
618 { | |
619 var name = event.data.name; | |
620 if (name !== "class" && name !== "id") | |
621 return; | |
622 | |
623 var node = /** @type {WebInspector.DOMNode} */ (event.data.node); | |
624 var crumbs = this.crumbsElement; | |
625 var crumb = crumbs.firstChild; | |
626 while (crumb) { | |
627 if (crumb.representedObject === node) { | |
628 this.updateBreadcrumb(true); | |
629 break; | |
630 } | |
631 crumb = crumb.nextSibling; | |
632 } | |
633 }, | |
634 | |
635 /** | 622 /** |
636 * @param {boolean=} forceUpdate | 623 * @param {boolean=} forceUpdate |
637 */ | 624 */ |
638 updateBreadcrumb: function(forceUpdate) | 625 updateBreadcrumb: function(forceUpdate) |
639 { | 626 { |
640 if (!this.isShowing()) | 627 if (!this.isShowing()) |
641 return; | 628 return; |
642 | 629 |
643 var crumbs = this.crumbsElement; | 630 var crumbs = this.crumbsElement; |
644 | 631 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 | 681 |
695 for (var current = this.selectedDOMNode(); current; current = current.pa
rentNode) { | 682 for (var current = this.selectedDOMNode(); current; current = current.pa
rentNode) { |
696 if (current.nodeType() === Node.DOCUMENT_NODE) | 683 if (current.nodeType() === Node.DOCUMENT_NODE) |
697 continue; | 684 continue; |
698 | 685 |
699 crumb = document.createElement("span"); | 686 crumb = document.createElement("span"); |
700 crumb.className = "crumb"; | 687 crumb.className = "crumb"; |
701 crumb.representedObject = current; | 688 crumb.representedObject = current; |
702 crumb.addEventListener("mousedown", selectCrumbFunction, false); | 689 crumb.addEventListener("mousedown", selectCrumbFunction, false); |
703 | 690 |
704 var crumbTitle; | 691 var crumbTitle = ""; |
705 switch (current.nodeType()) { | 692 switch (current.nodeType()) { |
706 case Node.ELEMENT_NODE: | 693 case Node.ELEMENT_NODE: |
707 WebInspector.DOMPresentationUtils.decorateNodeLabel(current,
crumb); | 694 WebInspector.DOMPresentationUtils.decorateNodeLabel(current,
crumb); |
708 break; | 695 break; |
709 | 696 |
710 case Node.TEXT_NODE: | 697 case Node.TEXT_NODE: |
711 crumbTitle = WebInspector.UIString("(text)"); | 698 crumbTitle = WebInspector.UIString("(text)"); |
712 break | 699 break; |
713 | 700 |
714 case Node.COMMENT_NODE: | 701 case Node.COMMENT_NODE: |
715 crumbTitle = "<!-->"; | 702 crumbTitle = "<!-->"; |
716 break; | 703 break; |
717 | 704 |
718 case Node.DOCUMENT_TYPE_NODE: | 705 case Node.DOCUMENT_TYPE_NODE: |
719 crumbTitle = "<!DOCTYPE>"; | 706 crumbTitle = "<!DOCTYPE>"; |
720 break; | 707 break; |
721 | 708 |
722 default: | 709 default: |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 * @param {WebInspector.SidebarPane} pane | 1189 * @param {WebInspector.SidebarPane} pane |
1203 */ | 1190 */ |
1204 addExtensionSidebarPane: function(id, pane) | 1191 addExtensionSidebarPane: function(id, pane) |
1205 { | 1192 { |
1206 this.sidebarPanes[id] = pane; | 1193 this.sidebarPanes[id] = pane; |
1207 this.sidebarPaneView.addPane(pane); | 1194 this.sidebarPaneView.addPane(pane); |
1208 }, | 1195 }, |
1209 | 1196 |
1210 __proto__: WebInspector.Panel.prototype | 1197 __proto__: WebInspector.Panel.prototype |
1211 } | 1198 } |
OLD | NEW |