| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 */ | 27 */ |
| 28 | 28 |
| 29 /** | 29 /** |
| 30 * @constructor | 30 * @constructor |
| 31 * @extends {WebInspector.SidebarPane} | 31 * @extends {WebInspector.SidebarPane} |
| 32 */ | 32 */ |
| 33 WebInspector.MetricsSidebarPane = function() | 33 WebInspector.MetricsSidebarPane = function() |
| 34 { | 34 { |
| 35 WebInspector.SidebarPane.call(this, WebInspector.UIString("Metrics")); | 35 WebInspector.SidebarPane.call(this, WebInspector.UIString("Metrics")); |
| 36 | |
| 37 WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.Sty
leSheetChanged, this._styleSheetOrMediaQueryResultChanged, this); | |
| 38 WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.Med
iaQueryResultChanged, this._styleSheetOrMediaQueryResultChanged, this); | |
| 39 WebInspector.domModel.addEventListener(WebInspector.DOMModel.Events.AttrModi
fied, this._attributesUpdated, this); | |
| 40 WebInspector.domModel.addEventListener(WebInspector.DOMModel.Events.AttrRemo
ved, this._attributesUpdated, this); | |
| 41 WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeMod
el.EventTypes.FrameResized, this._frameResized, this); | |
| 42 } | 36 } |
| 43 | 37 |
| 44 WebInspector.MetricsSidebarPane.prototype = { | 38 WebInspector.MetricsSidebarPane.prototype = { |
| 45 /** | 39 /** |
| 46 * @param {?WebInspector.DOMNode=} node | 40 * @param {?WebInspector.DOMNode=} node |
| 47 */ | 41 */ |
| 48 update: function(node) | 42 update: function(node) |
| 49 { | 43 { |
| 50 if (node) | 44 if (!node || this._node === node) { |
| 51 this.node = node; | 45 this._innerUpdate(); |
| 46 return; |
| 47 } |
| 48 |
| 49 this._node = node; |
| 50 this._updateTarget(node.target()); |
| 52 this._innerUpdate(); | 51 this._innerUpdate(); |
| 53 }, | 52 }, |
| 54 | 53 |
| 54 /** |
| 55 * @param {!WebInspector.Target} target |
| 56 */ |
| 57 _updateTarget: function(target) |
| 58 { |
| 59 if (this._target === target) |
| 60 return; |
| 61 |
| 62 if (this._target) { |
| 63 this._target.cssModel.removeEventListener(WebInspector.CSSStyleModel
.Events.StyleSheetChanged, this._styleSheetOrMediaQueryResultChanged, this); |
| 64 this._target.cssModel.removeEventListener(WebInspector.CSSStyleModel
.Events.MediaQueryResultChanged, this._styleSheetOrMediaQueryResultChanged, this
); |
| 65 this._target.domModel.removeEventListener(WebInspector.DOMModel.Even
ts.AttrModified, this._attributesUpdated, this); |
| 66 this._target.domModel.removeEventListener(WebInspector.DOMModel.Even
ts.AttrRemoved, this._attributesUpdated, this); |
| 67 this._target.resourceTreeModel.removeEventListener(WebInspector.Reso
urceTreeModel.EventTypes.FrameResized, this._frameResized, this); |
| 68 } |
| 69 this._target = target; |
| 70 this._target.cssModel.addEventListener(WebInspector.CSSStyleModel.Events
.StyleSheetChanged, this._styleSheetOrMediaQueryResultChanged, this); |
| 71 this._target.cssModel.addEventListener(WebInspector.CSSStyleModel.Events
.MediaQueryResultChanged, this._styleSheetOrMediaQueryResultChanged, this); |
| 72 this._target.domModel.addEventListener(WebInspector.DOMModel.Events.Attr
Modified, this._attributesUpdated, this); |
| 73 this._target.domModel.addEventListener(WebInspector.DOMModel.Events.Attr
Removed, this._attributesUpdated, this); |
| 74 this._target.resourceTreeModel.addEventListener(WebInspector.ResourceTre
eModel.EventTypes.FrameResized, this._frameResized, this); |
| 75 }, |
| 76 |
| 55 _innerUpdate: function() | 77 _innerUpdate: function() |
| 56 { | 78 { |
| 57 // "style" attribute might have changed. Update metrics unless they are
being edited | 79 // "style" attribute might have changed. Update metrics unless they are
being edited |
| 58 // (if a CSS property is added, a StyleSheetChanged event is dispatched)
. | 80 // (if a CSS property is added, a StyleSheetChanged event is dispatched)
. |
| 59 if (this._isEditingMetrics) | 81 if (this._isEditingMetrics) |
| 60 return; | 82 return; |
| 61 | 83 |
| 62 // FIXME: avoid updates of a collapsed pane. | 84 // FIXME: avoid updates of a collapsed pane. |
| 63 var node = this.node; | 85 var node = this._node; |
| 64 | 86 |
| 65 if (!node || node.nodeType() !== Node.ELEMENT_NODE) { | 87 if (!node || node.nodeType() !== Node.ELEMENT_NODE) { |
| 66 this.bodyElement.removeChildren(); | 88 this.bodyElement.removeChildren(); |
| 67 return; | 89 return; |
| 68 } | 90 } |
| 69 | 91 |
| 70 /** | 92 /** |
| 71 * @param {?WebInspector.CSSStyleDeclaration} style | 93 * @param {?WebInspector.CSSStyleDeclaration} style |
| 72 * @this {WebInspector.MetricsSidebarPane} | 94 * @this {WebInspector.MetricsSidebarPane} |
| 73 */ | 95 */ |
| 74 function callback(style) | 96 function callback(style) |
| 75 { | 97 { |
| 76 if (!style || this.node !== node) | 98 if (!style || this._node !== node) |
| 77 return; | 99 return; |
| 78 this._updateMetrics(style); | 100 this._updateMetrics(style); |
| 79 } | 101 } |
| 80 WebInspector.cssModel.getComputedStyleAsync(node.id, callback.bind(this)
); | 102 this._target.cssModel.getComputedStyleAsync(node.id, callback.bind(this)
); |
| 81 | 103 |
| 82 /** | 104 /** |
| 83 * @param {?WebInspector.CSSStyleDeclaration} style | 105 * @param {?WebInspector.CSSStyleDeclaration} style |
| 84 * @this {WebInspector.MetricsSidebarPane} | 106 * @this {WebInspector.MetricsSidebarPane} |
| 85 */ | 107 */ |
| 86 function inlineStyleCallback(style) | 108 function inlineStyleCallback(style) |
| 87 { | 109 { |
| 88 if (!style || this.node !== node) | 110 if (!style || this._node !== node) |
| 89 return; | 111 return; |
| 90 this.inlineStyle = style; | 112 this.inlineStyle = style; |
| 91 } | 113 } |
| 92 WebInspector.cssModel.getInlineStylesAsync(node.id, inlineStyleCallback.
bind(this)); | 114 this._target.cssModel.getInlineStylesAsync(node.id, inlineStyleCallback.
bind(this)); |
| 93 }, | 115 }, |
| 94 | 116 |
| 95 _styleSheetOrMediaQueryResultChanged: function() | 117 _styleSheetOrMediaQueryResultChanged: function() |
| 96 { | 118 { |
| 97 this._innerUpdate(); | 119 this._innerUpdate(); |
| 98 }, | 120 }, |
| 99 | 121 |
| 100 _frameResized: function() | 122 _frameResized: function() |
| 101 { | 123 { |
| 102 /** | 124 /** |
| 103 * @this {WebInspector.MetricsSidebarPane} | 125 * @this {WebInspector.MetricsSidebarPane} |
| 104 */ | 126 */ |
| 105 function refreshContents() | 127 function refreshContents() |
| 106 { | 128 { |
| 107 this._innerUpdate(); | 129 this._innerUpdate(); |
| 108 delete this._activeTimer; | 130 delete this._activeTimer; |
| 109 } | 131 } |
| 110 | 132 |
| 111 if (this._activeTimer) | 133 if (this._activeTimer) |
| 112 clearTimeout(this._activeTimer); | 134 clearTimeout(this._activeTimer); |
| 113 | 135 |
| 114 this._activeTimer = setTimeout(refreshContents.bind(this), 100); | 136 this._activeTimer = setTimeout(refreshContents.bind(this), 100); |
| 115 }, | 137 }, |
| 116 | 138 |
| 117 _attributesUpdated: function(event) | 139 _attributesUpdated: function(event) |
| 118 { | 140 { |
| 119 if (this.node !== event.data.node) | 141 if (this._node !== event.data.node) |
| 120 return; | 142 return; |
| 121 | 143 |
| 122 this._innerUpdate(); | 144 this._innerUpdate(); |
| 123 }, | 145 }, |
| 124 | 146 |
| 125 _getPropertyValueAsPx: function(style, propertyName) | 147 _getPropertyValueAsPx: function(style, propertyName) |
| 126 { | 148 { |
| 127 return Number(style.getPropertyValue(propertyName).replace(/px$/, "") ||
0); | 149 return Number(style.getPropertyValue(propertyName).replace(/px$/, "") ||
0); |
| 128 }, | 150 }, |
| 129 | 151 |
| 130 _getBox: function(computedStyle, componentName) | 152 _getBox: function(computedStyle, componentName) |
| 131 { | 153 { |
| 132 var suffix = componentName === "border" ? "-width" : ""; | 154 var suffix = componentName === "border" ? "-width" : ""; |
| 133 var left = this._getPropertyValueAsPx(computedStyle, componentName + "-l
eft" + suffix); | 155 var left = this._getPropertyValueAsPx(computedStyle, componentName + "-l
eft" + suffix); |
| 134 var top = this._getPropertyValueAsPx(computedStyle, componentName + "-to
p" + suffix); | 156 var top = this._getPropertyValueAsPx(computedStyle, componentName + "-to
p" + suffix); |
| 135 var right = this._getPropertyValueAsPx(computedStyle, componentName + "-
right" + suffix); | 157 var right = this._getPropertyValueAsPx(computedStyle, componentName + "-
right" + suffix); |
| 136 var bottom = this._getPropertyValueAsPx(computedStyle, componentName + "
-bottom" + suffix); | 158 var bottom = this._getPropertyValueAsPx(computedStyle, componentName + "
-bottom" + suffix); |
| 137 return { left: left, top: top, right: right, bottom: bottom }; | 159 return { left: left, top: top, right: right, bottom: bottom }; |
| 138 }, | 160 }, |
| 139 | 161 |
| 140 _highlightDOMNode: function(showHighlight, mode, event) | 162 _highlightDOMNode: function(showHighlight, mode, event) |
| 141 { | 163 { |
| 142 event.consume(); | 164 event.consume(); |
| 143 if (showHighlight && this.node) { | 165 if (showHighlight && this._node) { |
| 144 if (this._highlightMode === mode) | 166 if (this._highlightMode === mode) |
| 145 return; | 167 return; |
| 146 this._highlightMode = mode; | 168 this._highlightMode = mode; |
| 147 this.node.highlight(mode); | 169 this._node.highlight(mode); |
| 148 } else { | 170 } else { |
| 149 delete this._highlightMode; | 171 delete this._highlightMode; |
| 150 WebInspector.domModel.hideDOMNodeHighlight(); | 172 this._target.domModel.hideDOMNodeHighlight(); |
| 151 } | 173 } |
| 152 | 174 |
| 153 for (var i = 0; this._boxElements && i < this._boxElements.length; ++i)
{ | 175 for (var i = 0; this._boxElements && i < this._boxElements.length; ++i)
{ |
| 154 var element = this._boxElements[i]; | 176 var element = this._boxElements[i]; |
| 155 if (!this.node || mode === "all" || element._name === mode) | 177 if (!this._node || mode === "all" || element._name === mode) |
| 156 element.style.backgroundColor = element._backgroundColor; | 178 element.style.backgroundColor = element._backgroundColor; |
| 157 else | 179 else |
| 158 element.style.backgroundColor = ""; | 180 element.style.backgroundColor = ""; |
| 159 } | 181 } |
| 160 }, | 182 }, |
| 161 | 183 |
| 162 /** | 184 /** |
| 163 * @param {!WebInspector.CSSStyleDeclaration} style | 185 * @param {!WebInspector.CSSStyleDeclaration} style |
| 164 */ | 186 */ |
| 165 _updateMetrics: function(style) | 187 _updateMetrics: function(style) |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 this.previousPropertyDataCandidate = null; | 448 this.previousPropertyDataCandidate = null; |
| 427 var self = this; | 449 var self = this; |
| 428 var callback = function(style) { | 450 var callback = function(style) { |
| 429 if (!style) | 451 if (!style) |
| 430 return; | 452 return; |
| 431 self.inlineStyle = style; | 453 self.inlineStyle = style; |
| 432 if (!("originalPropertyData" in self)) | 454 if (!("originalPropertyData" in self)) |
| 433 self.originalPropertyData = self.previousPropertyDataCandidate; | 455 self.originalPropertyData = self.previousPropertyDataCandidate; |
| 434 | 456 |
| 435 if (typeof self._highlightMode !== "undefined") | 457 if (typeof self._highlightMode !== "undefined") |
| 436 self.node.highlight(self._highlightMode); | 458 self._node.highlight(self._highlightMode); |
| 437 | 459 |
| 438 if (commitEditor) { | 460 if (commitEditor) { |
| 439 self.dispatchEventToListeners("metrics edited"); | 461 self.dispatchEventToListeners("metrics edited"); |
| 440 self.update(); | 462 self.update(); |
| 441 } | 463 } |
| 442 }; | 464 }; |
| 443 | 465 |
| 444 var allProperties = this.inlineStyle.allProperties; | 466 var allProperties = this.inlineStyle.allProperties; |
| 445 for (var i = 0; i < allProperties.length; ++i) { | 467 for (var i = 0; i < allProperties.length; ++i) { |
| 446 var property = allProperties[i]; | 468 var property = allProperties[i]; |
| 447 if (property.name !== context.styleProperty || property.inactive) | 469 if (property.name !== context.styleProperty || property.inactive) |
| 448 continue; | 470 continue; |
| 449 | 471 |
| 450 this.previousPropertyDataCandidate = property; | 472 this.previousPropertyDataCandidate = property; |
| 451 property.setValue(userInput, commitEditor, true, callback); | 473 property.setValue(userInput, commitEditor, true, callback); |
| 452 return; | 474 return; |
| 453 } | 475 } |
| 454 | 476 |
| 455 this.inlineStyle.appendProperty(context.styleProperty, userInput, callba
ck); | 477 this.inlineStyle.appendProperty(context.styleProperty, userInput, callba
ck); |
| 456 }, | 478 }, |
| 457 | 479 |
| 458 editingCommitted: function(element, userInput, previousContent, context) | 480 editingCommitted: function(element, userInput, previousContent, context) |
| 459 { | 481 { |
| 460 this.editingEnded(element, context); | 482 this.editingEnded(element, context); |
| 461 this._applyUserInput(element, userInput, previousContent, context, true)
; | 483 this._applyUserInput(element, userInput, previousContent, context, true)
; |
| 462 }, | 484 }, |
| 463 | 485 |
| 464 __proto__: WebInspector.SidebarPane.prototype | 486 __proto__: WebInspector.SidebarPane.prototype |
| 465 } | 487 } |
| OLD | NEW |