Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(380)

Side by Side Diff: Source/devtools/front_end/elements/ElementsPanel.js

Issue 1273313002: DevTools: introduce dom markers, decorate hidden, forced state and breakpoint elements using marker… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 this._dockSideChanged(); 99 this._dockSideChanged();
100 this._loadSidebarViews(); 100 this._loadSidebarViews();
101 101
102 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */ 102 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */
103 this._treeOutlines = []; 103 this._treeOutlines = [];
104 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */ 104 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */
105 this._modelToTreeOutline = new Map(); 105 this._modelToTreeOutline = new Map();
106 WebInspector.targetManager.observeTargets(this); 106 WebInspector.targetManager.observeTargets(this);
107 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this)); 107 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this));
108 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this); 108 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this);
109 WebInspector.targetManager.addModelListener(WebInspector.CSSStyleModel, WebI nspector.CSSStyleModel.Events.PseudoStateForced, this._decoratorsChanged, this); 109 if (Runtime.experiments.isEnabled("materialDesign"))
110 WebInspector.domBreakpointsSidebarPane.addEventListener(WebInspector.DOMBrea kpointsSidebarPane.Events.BreakpointsChanged, this._decoratorsChanged, this); 110 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebIn spector.DOMModel.Events.MarkersChanged, this._updateToolbarButtons, this);
111 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this); 111 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this);
112 } 112 }
113 113
114 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title"); 114 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title");
115 115
116 WebInspector.ElementsPanel.prototype = { 116 WebInspector.ElementsPanel.prototype = {
117 /** 117 /**
118 * @return {!WebInspector.Toolbar} 118 * @return {!WebInspector.Toolbar}
119 */ 119 */
120 _createElementsToolbar: function() 120 _createElementsToolbar: function()
(...skipping 18 matching lines...) Expand all
139 return toolbar; 139 return toolbar;
140 }, 140 },
141 141
142 _toggleHideElement: function() 142 _toggleHideElement: function()
143 { 143 {
144 var node = this.selectedDOMNode(); 144 var node = this.selectedDOMNode();
145 var treeOutline = this._treeOutlineForNode(node); 145 var treeOutline = this._treeOutlineForNode(node);
146 if (!node || !treeOutline) 146 if (!node || !treeOutline)
147 return; 147 return;
148 treeOutline.toggleHideElement(node); 148 treeOutline.toggleHideElement(node);
149 this._hideElementButton.setToggled(!this._hideElementButton.toggled());
150 }, 149 },
151 150
152 _updateToolbarButtons: function() 151 _updateToolbarButtons: function()
153 { 152 {
154 var node = this.selectedDOMNode(); 153 var node = this.selectedDOMNode();
155 if (!node) 154 if (!node)
156 return; 155 return;
157 var classText = node.getAttribute("class"); 156 var classText = node.getAttribute("class");
158 this._hideElementButton.setToggled(classText && classText.match(/__web-i nspector-hide/)); 157 this._hideElementButton.setToggled(!!node.marker(WebInspector.DOMPresent ationUtils.GenericMarkers.Hidden));
159 this._editAsHTMLButton.setToggled(false); 158 this._editAsHTMLButton.setToggled(false);
160 this._breakpointsButton.setEnabled(!node.pseudoType()); 159 this._breakpointsButton.setEnabled(!node.pseudoType());
161 this._breakpointsButton.setToggled(WebInspector.domBreakpointsSidebarPan e.hasBreakpoints(node)); 160 this._breakpointsButton.setToggled(WebInspector.domBreakpointsSidebarPan e.hasBreakpoints(node));
162 this._forceElementStateButton.setEnabled(node.nodeType() === Node.ELEMEN T_NODE && !node.pseudoType()); 161 this._forceElementStateButton.setEnabled(node.nodeType() === Node.ELEMEN T_NODE && !node.pseudoType());
163 this._forceElementStateButton.setToggled(!!node.getUserProperty(WebInspe ctor.CSSStyleModel.PseudoStatePropertyName)); 162 this._forceElementStateButton.setToggled(!!WebInspector.CSSStyleModel.fr omNode(node).pseudoState(node).length);
164 }, 163 },
165 164
166 _toggleEditAsHTML: function() 165 _toggleEditAsHTML: function()
167 { 166 {
168 var node = this.selectedDOMNode(); 167 var node = this.selectedDOMNode();
169 var treeOutline = this._treeOutlineForNode(node); 168 var treeOutline = this._treeOutlineForNode(node);
170 if (!node || !treeOutline) 169 if (!node || !treeOutline)
171 return; 170 return;
172 var startEditing = !this._editAsHTMLButton.toggled(); 171 var startEditing = !this._editAsHTMLButton.toggled();
173 treeOutline.toggleEditAsHTML(node, startEditing, this._updateToolbarButt ons.bind(this)); 172 treeOutline.toggleEditAsHTML(node, startEditing, this._updateToolbarButt ons.bind(this));
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 }, 347 },
349 348
350 onResize: function() 349 onResize: function()
351 { 350 {
352 this._updateTreeOutlineVisibleWidth(); 351 this._updateTreeOutlineVisibleWidth();
353 }, 352 },
354 353
355 /** 354 /**
356 * @param {!WebInspector.Event} event 355 * @param {!WebInspector.Event} event
357 */ 356 */
358 _decoratorsChanged: function(event)
359 {
360 var node = /** @type {!WebInspector.DOMNode} */ (event.data["node"]);
361 this._treeOutlineForNode(node).updateOpenCloseTags(node);
dgozman 2015/08/07 23:35:05 This call disappeared. I don't really understand i
pfeldman 2015/08/10 21:35:17 This was indirectly triggering decorators which ar
362 this._updateToolbarButtons();
363 },
364
365 /**
366 * @param {!WebInspector.Event} event
367 */
368 _onNodePicked: function(event) 357 _onNodePicked: function(event)
369 { 358 {
370 if (!this.sidebarPanes.styles.isEditingSelector()) 359 if (!this.sidebarPanes.styles.isEditingSelector())
371 return; 360 return;
372 this.sidebarPanes.styles.updateEditingSelectorForNode(/** @type {!WebIns pector.DOMNode} */(event.data)); 361 this.sidebarPanes.styles.updateEditingSelectorForNode(/** @type {!WebIns pector.DOMNode} */(event.data));
373 }, 362 },
374 363
375 /** 364 /**
376 * @param {!WebInspector.Event} event 365 * @param {!WebInspector.Event} event
377 */ 366 */
(...skipping 841 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 */ 1208 */
1220 handleAction: function(context, actionId) 1209 handleAction: function(context, actionId)
1221 { 1210 {
1222 var elementsPanel = WebInspector.ElementsPanel.instance(); 1211 var elementsPanel = WebInspector.ElementsPanel.instance();
1223 if (actionId === "elements.hide-element") 1212 if (actionId === "elements.hide-element")
1224 elementsPanel._toggleHideElement(); 1213 elementsPanel._toggleHideElement();
1225 else if (actionId === "elements.edit-as-html") 1214 else if (actionId === "elements.edit-as-html")
1226 elementsPanel._toggleEditAsHTML(); 1215 elementsPanel._toggleEditAsHTML();
1227 } 1216 }
1228 } 1217 }
1218
1219 /**
1220 * @constructor
1221 * @implements {WebInspector.DOMPresentationUtils.MarkerDecorator}
1222 */
1223 WebInspector.ElementsPanel.PseudoStateMarkerDecorator = function()
1224 {
1225 }
1226
1227 WebInspector.ElementsPanel.PseudoStateMarkerDecorator.prototype = {
1228 /**
1229 * @override
1230 * @param {!WebInspector.DOMNode} node
1231 * @return {?string}
1232 */
1233 decorate: function(node)
1234 {
1235 return WebInspector.UIString("Element state: %s", ":" + WebInspector.CSS StyleModel.fromNode(node).pseudoState(node).join(", :"));
1236 }
1237 }
1238
1239 /**
1240 * @constructor
1241 * @implements {WebInspector.DOMPresentationUtils.MarkerDecorator}
1242 */
1243 WebInspector.ElementsPanel.HiddenMarkerDecorator = function()
1244 {
1245 }
1246
1247 WebInspector.ElementsPanel.HiddenMarkerDecorator.prototype = {
1248 /**
1249 * @override
1250 * @param {!WebInspector.DOMNode} node
1251 * @return {?string}
1252 */
1253 decorate: function(node)
1254 {
1255 return WebInspector.UIString("Element is hidden");
1256 }
1257 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698