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 13 matching lines...) Expand all Loading... |
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 /** | 31 /** |
32 * @unrestricted | 32 * @unrestricted |
33 */ | 33 */ |
34 Elements.ElementsTreeOutline = class extends TreeOutline { | 34 Elements.ElementsTreeOutline = class extends UI.TreeOutline { |
35 /** | 35 /** |
36 * @param {!SDK.DOMModel} domModel | 36 * @param {!SDK.DOMModel} domModel |
37 * @param {boolean=} omitRootDOMNode | 37 * @param {boolean=} omitRootDOMNode |
38 * @param {boolean=} selectEnabled | 38 * @param {boolean=} selectEnabled |
39 */ | 39 */ |
40 constructor(domModel, omitRootDOMNode, selectEnabled) { | 40 constructor(domModel, omitRootDOMNode, selectEnabled) { |
41 super(); | 41 super(); |
42 | 42 |
43 this._domModel = domModel; | 43 this._domModel = domModel; |
44 this._treeElementSymbol = Symbol('treeElement'); | 44 this._treeElementSymbol = Symbol('treeElement'); |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 if (!treeElement && node.nodeType() === Node.TEXT_NODE) { | 419 if (!treeElement && node.nodeType() === Node.TEXT_NODE) { |
420 // The text node might have been inlined if it was short, so try to find t
he parent element. | 420 // The text node might have been inlined if it was short, so try to find t
he parent element. |
421 treeElement = this._lookUpTreeElement(node.parentNode); | 421 treeElement = this._lookUpTreeElement(node.parentNode); |
422 } | 422 } |
423 | 423 |
424 return /** @type {?Elements.ElementsTreeElement} */ (treeElement); | 424 return /** @type {?Elements.ElementsTreeElement} */ (treeElement); |
425 } | 425 } |
426 | 426 |
427 /** | 427 /** |
428 * @param {?SDK.DOMNode} node | 428 * @param {?SDK.DOMNode} node |
429 * @return {?TreeElement} | 429 * @return {?UI.TreeElement} |
430 */ | 430 */ |
431 _lookUpTreeElement(node) { | 431 _lookUpTreeElement(node) { |
432 if (!node) | 432 if (!node) |
433 return null; | 433 return null; |
434 | 434 |
435 var cachedElement = node[this._treeElementSymbol]; | 435 var cachedElement = node[this._treeElementSymbol]; |
436 if (cachedElement) | 436 if (cachedElement) |
437 return cachedElement; | 437 return cachedElement; |
438 | 438 |
439 // Walk up the parent pointers from the desired node | 439 // Walk up the parent pointers from the desired node |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 if (!node) | 491 if (!node) |
492 return; | 492 return; |
493 var treeElement = this.createTreeElementFor(node); | 493 var treeElement = this.createTreeElementFor(node); |
494 if (!treeElement) | 494 if (!treeElement) |
495 return; | 495 return; |
496 | 496 |
497 treeElement.revealAndSelect(omitFocus); | 497 treeElement.revealAndSelect(omitFocus); |
498 } | 498 } |
499 | 499 |
500 /** | 500 /** |
501 * @return {?TreeElement} | 501 * @return {?UI.TreeElement} |
502 */ | 502 */ |
503 _treeElementFromEvent(event) { | 503 _treeElementFromEvent(event) { |
504 var scrollContainer = this.element.parentElement; | 504 var scrollContainer = this.element.parentElement; |
505 | 505 |
506 // We choose this X coordinate based on the knowledge that our list | 506 // We choose this X coordinate based on the knowledge that our list |
507 // items extend at least to the right edge of the outer <ol> container. | 507 // items extend at least to the right edge of the outer <ol> container. |
508 // In the no-word-wrap mode the outer <ol> may be wider than the tree contai
ner | 508 // In the no-word-wrap mode the outer <ol> may be wider than the tree contai
ner |
509 // (and partially hidden), in which case we are left to use only its right b
oundary. | 509 // (and partially hidden), in which case we are left to use only its right b
oundary. |
510 var x = scrollContainer.totalOffsetLeft() + scrollContainer.offsetWidth - 36
; | 510 var x = scrollContainer.totalOffsetLeft() + scrollContainer.offsetWidth - 36
; |
511 | 511 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 _onmousedown(event) { | 601 _onmousedown(event) { |
602 var element = this._treeElementFromEvent(event); | 602 var element = this._treeElementFromEvent(event); |
603 | 603 |
604 if (!element || element.isEventWithinDisclosureTriangle(event)) | 604 if (!element || element.isEventWithinDisclosureTriangle(event)) |
605 return; | 605 return; |
606 | 606 |
607 element.select(); | 607 element.select(); |
608 } | 608 } |
609 | 609 |
610 /** | 610 /** |
611 * @param {?TreeElement} treeElement | 611 * @param {?UI.TreeElement} treeElement |
612 */ | 612 */ |
613 setHoverEffect(treeElement) { | 613 setHoverEffect(treeElement) { |
614 if (this._previousHoveredElement === treeElement) | 614 if (this._previousHoveredElement === treeElement) |
615 return; | 615 return; |
616 | 616 |
617 if (this._previousHoveredElement) { | 617 if (this._previousHoveredElement) { |
618 this._previousHoveredElement.hovered = false; | 618 this._previousHoveredElement.hovered = false; |
619 delete this._previousHoveredElement; | 619 delete this._previousHoveredElement; |
620 } | 620 } |
621 | 621 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 return false; | 693 return false; |
694 } | 694 } |
695 | 695 |
696 _ondragleave(event) { | 696 _ondragleave(event) { |
697 this._clearDragOverTreeElementMarker(); | 697 this._clearDragOverTreeElementMarker(); |
698 event.preventDefault(); | 698 event.preventDefault(); |
699 return false; | 699 return false; |
700 } | 700 } |
701 | 701 |
702 /** | 702 /** |
703 * @param {?TreeElement} treeElement | 703 * @param {?UI.TreeElement} treeElement |
704 * @return {boolean} | 704 * @return {boolean} |
705 */ | 705 */ |
706 _isValidDragSourceOrTarget(treeElement) { | 706 _isValidDragSourceOrTarget(treeElement) { |
707 if (!treeElement) | 707 if (!treeElement) |
708 return false; | 708 return false; |
709 | 709 |
710 if (!(treeElement instanceof Elements.ElementsTreeElement)) | 710 if (!(treeElement instanceof Elements.ElementsTreeElement)) |
711 return false; | 711 return false; |
712 var elementsTreeElement = /** @type {!Elements.ElementsTreeElement} */ (tree
Element); | 712 var elementsTreeElement = /** @type {!Elements.ElementsTreeElement} */ (tree
Element); |
713 | 713 |
714 var node = elementsTreeElement.node(); | 714 var node = elementsTreeElement.node(); |
715 if (!node.parentNode || node.parentNode.nodeType() !== Node.ELEMENT_NODE) | 715 if (!node.parentNode || node.parentNode.nodeType() !== Node.ELEMENT_NODE) |
716 return false; | 716 return false; |
717 | 717 |
718 return true; | 718 return true; |
719 } | 719 } |
720 | 720 |
721 _ondrop(event) { | 721 _ondrop(event) { |
722 event.preventDefault(); | 722 event.preventDefault(); |
723 var treeElement = this._treeElementFromEvent(event); | 723 var treeElement = this._treeElementFromEvent(event); |
724 if (treeElement) | 724 if (treeElement) |
725 this._doMove(treeElement); | 725 this._doMove(treeElement); |
726 } | 726 } |
727 | 727 |
728 /** | 728 /** |
729 * @param {!TreeElement} treeElement | 729 * @param {!UI.TreeElement} treeElement |
730 */ | 730 */ |
731 _doMove(treeElement) { | 731 _doMove(treeElement) { |
732 if (!this._treeElementBeingDragged) | 732 if (!this._treeElementBeingDragged) |
733 return; | 733 return; |
734 | 734 |
735 var parentNode; | 735 var parentNode; |
736 var anchorNode; | 736 var anchorNode; |
737 | 737 |
738 if (treeElement.isClosingTag()) { | 738 if (treeElement.isClosingTag()) { |
739 // Drop onto closing tag -> insert as last child. | 739 // Drop onto closing tag -> insert as last child. |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 return true; | 1271 return true; |
1272 if (node.isInsertionPoint()) | 1272 if (node.isInsertionPoint()) |
1273 return true; | 1273 return true; |
1274 return !!node.childNodeCount() && !Elements.ElementsTreeElement.canShowInlin
eText(node); | 1274 return !!node.childNodeCount() && !Elements.ElementsTreeElement.canShowInlin
eText(node); |
1275 } | 1275 } |
1276 | 1276 |
1277 /** | 1277 /** |
1278 * @param {!Elements.ElementsTreeElement} treeElement | 1278 * @param {!Elements.ElementsTreeElement} treeElement |
1279 */ | 1279 */ |
1280 _createExpandAllButtonTreeElement(treeElement) { | 1280 _createExpandAllButtonTreeElement(treeElement) { |
1281 var button = createTextButton('', handleLoadAllChildren.bind(this)); | 1281 var button = UI.createTextButton('', handleLoadAllChildren.bind(this)); |
1282 button.value = ''; | 1282 button.value = ''; |
1283 var expandAllButtonElement = new TreeElement(button); | 1283 var expandAllButtonElement = new UI.TreeElement(button); |
1284 expandAllButtonElement.selectable = false; | 1284 expandAllButtonElement.selectable = false; |
1285 expandAllButtonElement.expandAllButton = true; | 1285 expandAllButtonElement.expandAllButton = true; |
1286 expandAllButtonElement.button = button; | 1286 expandAllButtonElement.button = button; |
1287 return expandAllButtonElement; | 1287 return expandAllButtonElement; |
1288 | 1288 |
1289 /** | 1289 /** |
1290 * @this {Elements.ElementsTreeOutline} | 1290 * @this {Elements.ElementsTreeOutline} |
1291 * @param {!Event} event | 1291 * @param {!Event} event |
1292 */ | 1292 */ |
1293 function handleLoadAllChildren(event) { | 1293 function handleLoadAllChildren(event) { |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1626 treeOutline.element.treeElementForTest = treeOutline.firstChild(); | 1626 treeOutline.element.treeElementForTest = treeOutline.firstChild(); |
1627 resolve(treeOutline.element); | 1627 resolve(treeOutline.element); |
1628 } | 1628 } |
1629 } | 1629 } |
1630 } | 1630 } |
1631 }; | 1631 }; |
1632 | 1632 |
1633 /** | 1633 /** |
1634 * @unrestricted | 1634 * @unrestricted |
1635 */ | 1635 */ |
1636 Elements.ElementsTreeOutline.ShortcutTreeElement = class extends TreeElement { | 1636 Elements.ElementsTreeOutline.ShortcutTreeElement = class extends UI.TreeElement
{ |
1637 /** | 1637 /** |
1638 * @param {!SDK.DOMNodeShortcut} nodeShortcut | 1638 * @param {!SDK.DOMNodeShortcut} nodeShortcut |
1639 */ | 1639 */ |
1640 constructor(nodeShortcut) { | 1640 constructor(nodeShortcut) { |
1641 super(''); | 1641 super(''); |
1642 this.listItemElement.createChild('div', 'selection fill'); | 1642 this.listItemElement.createChild('div', 'selection fill'); |
1643 var title = this.listItemElement.createChild('span', 'elements-tree-shortcut
-title'); | 1643 var title = this.listItemElement.createChild('span', 'elements-tree-shortcut
-title'); |
1644 var text = nodeShortcut.nodeName.toLowerCase(); | 1644 var text = nodeShortcut.nodeName.toLowerCase(); |
1645 if (nodeShortcut.nodeType === Node.ELEMENT_NODE) | 1645 if (nodeShortcut.nodeType === Node.ELEMENT_NODE) |
1646 text = '<' + text + '>'; | 1646 text = '<' + text + '>'; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 */ | 1694 */ |
1695 function resolved(node) { | 1695 function resolved(node) { |
1696 if (node) { | 1696 if (node) { |
1697 this.treeOutline._selectedDOMNode = node; | 1697 this.treeOutline._selectedDOMNode = node; |
1698 this.treeOutline._selectedNodeChanged(); | 1698 this.treeOutline._selectedNodeChanged(); |
1699 } | 1699 } |
1700 } | 1700 } |
1701 return true; | 1701 return true; |
1702 } | 1702 } |
1703 }; | 1703 }; |
OLD | NEW |