Index: third_party/WebKit/Source/devtools/front_end/elements/ColorSwatchPopoverIcon.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ColorSwatchPopoverIcon.js b/third_party/WebKit/Source/devtools/front_end/elements/ColorSwatchPopoverIcon.js |
index 54bde3f357bf16d36d745528006c6d43c9ff8c23..4a7dfbabadee3a2093e03e542a5b2f21b9a23194 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/elements/ColorSwatchPopoverIcon.js |
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ColorSwatchPopoverIcon.js |
@@ -260,6 +260,9 @@ WebInspector.ShadowPopoverIcon = function(treeElement, swatchPopoverHelper, shad |
this._shadow = shadow; |
this._element = createElement("span"); |
this._replaceDOM(); |
+ |
+ this._boundShadowChanged = this._shadowChanged.bind(this); |
+ this._boundOnScroll = this._onScroll.bind(this); |
} |
WebInspector.ShadowPopoverIcon.prototype = { |
@@ -275,6 +278,8 @@ WebInspector.ShadowPopoverIcon.prototype = { |
{ |
this._element.removeChildren(); |
this._iconElement = WebInspector.ShadowSwatch.create(); |
+ this._iconElement.title = WebInspector.UIString("Open shadow editor"); |
+ this._iconElement.addEventListener("click", this._iconClick.bind(this), false); |
this._element.appendChild(this._iconElement); |
var shadowParts = this._shadow.textParts(); |
@@ -289,5 +294,59 @@ WebInspector.ShadowPopoverIcon.prototype = { |
this._element.appendChild(createTextNode(shadowPart.text)); |
} |
} |
+ }, |
+ |
+ /** |
+ * @param {!Event} event |
+ */ |
+ _iconClick: function(event) |
+ { |
+ event.consume(true); |
+ if (this._swatchPopoverHelper.isShowing()) { |
+ this._swatchPopoverHelper.hide(true); |
+ return; |
+ } |
+ |
+ this._shadowEditor = new WebInspector.ShadowEditor(this._shadow); |
+ this._shadowEditor.addEventListener(WebInspector.ShadowEditor.Events.ShadowChanged, this._boundShadowChanged); |
+ this._swatchPopoverHelper.show(this._shadowEditor, this._iconElement, this._onPopoverHidden.bind(this)); |
+ |
+ this._scrollerElement = this._iconElement.enclosingNodeOrSelfWithClass("style-panes-wrapper"); |
+ if (this._scrollerElement) |
+ this._scrollerElement.addEventListener("scroll", this._boundOnScroll, false); |
+ |
+ this._originalPropertyText = this._treeElement.property.propertyText; |
+ this._treeElement.parentPane().setEditingStyle(true); |
+ var uiLocation = WebInspector.cssWorkspaceBinding.propertyUILocation(this._treeElement.property, false /* forName */); |
+ if (uiLocation) |
+ WebInspector.Revealer.reveal(uiLocation, true /* omitFocus */); |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _shadowChanged: function(event) |
+ { |
+ this._shadow = /** @type {!WebInspector.ShadowEditor.Shadow} */ (event.data); |
+ this._replaceDOM(); |
+ this._treeElement.applyStyleText(this._treeElement.renderedPropertyText(), false); |
+ }, |
+ |
+ /** |
+ * @param {!Event} event |
+ */ |
+ _onScroll: function(event) |
+ { |
+ this._swatchPopoverHelper.reposition(); |
+ }, |
+ |
+ /** |
+ * @param {boolean} commitEdit |
+ */ |
+ _onPopoverHidden: function(commitEdit) |
+ { |
+ if (this._scrollerElement) |
+ this._scrollerElement.removeEventListener("scroll", this._boundOnScroll, false); |
+ // TODO: Handle popover hidden. |
} |
} |