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

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

Issue 1304173004: Devtools UI: Add node-specific actions into a ghost toolbar in DOM (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 | Annotate | Revision Log
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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 this._updateSidebarPosition(); 96 this._updateSidebarPosition();
97 this._loadSidebarViews(); 97 this._loadSidebarViews();
98 98
99 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */ 99 /** @type {!Array.<!WebInspector.ElementsTreeOutline>} */
100 this._treeOutlines = []; 100 this._treeOutlines = [];
101 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */ 101 /** @type {!Map.<!WebInspector.DOMModel, !WebInspector.ElementsTreeOutline>} */
102 this._modelToTreeOutline = new Map(); 102 this._modelToTreeOutline = new Map();
103 WebInspector.targetManager.observeTargets(this); 103 WebInspector.targetManager.observeTargets(this);
104 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this)); 104 WebInspector.moduleSetting("showUAShadowDOM").addChangeListener(this._showUA ShadowDOMChanged.bind(this));
105 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this); 105 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspec tor.DOMModel.Events.DocumentUpdated, this._documentUpdatedEvent, this);
106 if (Runtime.experiments.isEnabled("materialDesign"))
107 WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebIn spector.DOMModel.Events.MarkersChanged, this._updateToolbarButtons, this);
108 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this); 106 WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.E vents.SidebarPaneAdded, this._extensionSidebarPaneAdded, this);
109 } 107 }
110 108
111 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title"); 109 WebInspector.ElementsPanel._elementsSidebarViewTitleSymbol = Symbol("title");
112 110
113 WebInspector.ElementsPanel.prototype = { 111 WebInspector.ElementsPanel.prototype = {
114 /** 112 /**
115 * @return {!WebInspector.Toolbar} 113 * @return {!WebInspector.Toolbar}
116 */ 114 */
117 _createElementsToolbar: function() 115 _createElementsToolbar: function()
118 { 116 {
119 var toolbar = new WebInspector.ExtensibleToolbar("elements-toolbar"); 117 var toolbar = new WebInspector.ExtensibleToolbar("elements-toolbar");
120 toolbar.element.classList.add("elements-toolbar");
121 this._hideElementButton = new WebInspector.ToolbarButton(WebInspector.UI String("Hide element"), "visibility-off-toolbar-item");
122 this._hideElementButton.setAction("elements.hide-element");
123 toolbar.appendToolbarItem(this._hideElementButton);
124
125 this._editAsHTMLButton = new WebInspector.ToolbarButton(WebInspector.UIS tring("Edit as HTML"), "edit-toolbar-item");
126 this._editAsHTMLButton.setAction("elements.edit-as-html");
127 toolbar.appendToolbarItem(this._editAsHTMLButton);
128 toolbar.appendSeparator();
129
130 this._forceElementStateButton = new WebInspector.ToolbarMenuButton(WebIn spector.UIString("Force element state"), "pin-toolbar-item", this._showForceElem entStateMenu.bind(this));
131 toolbar.appendToolbarItem(this._forceElementStateButton);
132 this._breakpointsButton = new WebInspector.ToolbarMenuButton(WebInspecto r.UIString("Toggle breakpoints"), "add-breakpoint-toolbar-item", this._showBreak pointsMenu.bind(this));
133 toolbar.appendToolbarItem(this._breakpointsButton);
134
135 toolbar.appendSeparator();
136 if (Runtime.experiments.isEnabled("layoutEditor") && !Runtime.queryParam ("remoteFrontend")) { 118 if (Runtime.experiments.isEnabled("layoutEditor") && !Runtime.queryParam ("remoteFrontend")) {
137 this._layoutEditorButton = new WebInspector.ToolbarButton(WebInspect or.UIString("Toggle Layout Editor"), "layout-editor-toolbar-item"); 119 this._layoutEditorButton = new WebInspector.ToolbarButton(WebInspect or.UIString("Toggle Layout Editor"), "layout-editor-toolbar-item");
138 toolbar.appendToolbarItem(this._layoutEditorButton); 120 toolbar.appendToolbarItem(this._layoutEditorButton);
139 this._layoutEditorButton.addEventListener("click", this._toggleLayou tEditor, this); 121 this._layoutEditorButton.addEventListener("click", this._toggleLayou tEditor, this);
140 toolbar.appendSeparator(); 122 toolbar.appendSeparator();
141 } 123 }
142 return toolbar; 124 return toolbar;
143 }, 125 },
144 126
145 _toggleHideElement: function() 127 _toggleHideElement: function()
146 { 128 {
147 var node = this.selectedDOMNode(); 129 var node = this.selectedDOMNode();
148 var treeOutline = this._treeOutlineForNode(node); 130 var treeOutline = this._treeOutlineForNode(node);
149 if (!node || !treeOutline) 131 if (!node || !treeOutline)
150 return; 132 return;
151 treeOutline.toggleHideElement(node); 133 treeOutline.toggleHideElement(node);
152 }, 134 },
153 135
154 _updateToolbarButtons: function()
155 {
156 if (!Runtime.experiments.isEnabled("materialDesign"))
157 return;
158 var node = this.selectedDOMNode();
159 if (!node)
160 return;
161 var classText = node.getAttribute("class");
162 var treeOutline = this._treeOutlineForNode(node);
163 this._hideElementButton.setToggled(treeOutline && treeOutline.isToggledT oHidden(node));
164 this._editAsHTMLButton.setToggled(false);
165 this._breakpointsButton.setEnabled(!node.pseudoType());
166 this._breakpointsButton.setToggled(WebInspector.domBreakpointsSidebarPan e.hasBreakpoints(node));
167 this._forceElementStateButton.setEnabled(node.nodeType() === Node.ELEMEN T_NODE && !node.pseudoType());
168 this._forceElementStateButton.setToggled(!!WebInspector.CSSStyleModel.fr omNode(node).pseudoState(node).length);
169 },
170
171 _toggleEditAsHTML: function() 136 _toggleEditAsHTML: function()
172 { 137 {
173 var node = this.selectedDOMNode(); 138 var node = this.selectedDOMNode();
174 var treeOutline = this._treeOutlineForNode(node); 139 var treeOutline = this._treeOutlineForNode(node);
175 if (!node || !treeOutline) 140 if (!node || !treeOutline)
176 return; 141 return;
177 142 treeOutline.toggleEditAsHTML(node);
178 var startEditing = true;
179 if (Runtime.experiments.isEnabled("materialDesign")) {
180 startEditing = !this._editAsHTMLButton.toggled();
181 this._editAsHTMLButton.setToggled(startEditing);
182 }
183 treeOutline.toggleEditAsHTML(node, startEditing, this._updateToolbarButt ons.bind(this));
184 },
185
186 /**
187 * @param {!WebInspector.ContextMenu} contextMenu
188 */
189 _showBreakpointsMenu: function(contextMenu)
190 {
191 var node = this.selectedDOMNode();
192 if (!node)
193 return;
194 WebInspector.domBreakpointsSidebarPane.populateNodeContextMenu(node, con textMenu, false);
195 },
196
197 /**
198 * @param {!WebInspector.ContextMenu} contextMenu
199 */
200 _showForceElementStateMenu: function(contextMenu)
201 {
202 var node = this.selectedDOMNode();
203 if (!node)
204 return;
205 WebInspector.ElementsTreeElement.populateForcedPseudoStateItems(contextM enu, node);
206 }, 143 },
207 144
208 _loadSidebarViews: function() 145 _loadSidebarViews: function()
209 { 146 {
210 var extensions = self.runtime.extensions("@WebInspector.Widget"); 147 var extensions = self.runtime.extensions("@WebInspector.Widget");
211 148
212 for (var i = 0; i < extensions.length; ++i) { 149 for (var i = 0; i < extensions.length; ++i) {
213 var descriptor = extensions[i].descriptor(); 150 var descriptor = extensions[i].descriptor();
214 if (descriptor["location"] !== "elements-panel") 151 if (descriptor["location"] !== "elements-panel")
215 continue; 152 continue;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 this._breadcrumbs.setSelectedNode(selectedNode); 328 this._breadcrumbs.setSelectedNode(selectedNode);
392 329
393 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode); 330 WebInspector.context.setFlavor(WebInspector.DOMNode, selectedNode);
394 331
395 if (selectedNode) { 332 if (selectedNode) {
396 selectedNode.setAsInspectedNode(); 333 selectedNode.setAsInspectedNode();
397 this._lastValidSelectedNode = selectedNode; 334 this._lastValidSelectedNode = selectedNode;
398 } 335 }
399 WebInspector.notifications.dispatchEventToListeners(WebInspector.Notific ationService.Events.SelectedNodeChanged); 336 WebInspector.notifications.dispatchEventToListeners(WebInspector.Notific ationService.Events.SelectedNodeChanged);
400 this._selectedNodeChangedForTest(); 337 this._selectedNodeChangedForTest();
401 if (Runtime.experiments.isEnabled("materialDesign"))
402 this._updateToolbarButtons();
403 }, 338 },
404 339
405 _selectedNodeChangedForTest: function() { }, 340 _selectedNodeChangedForTest: function() { },
406 341
407 _reset: function() 342 _reset: function()
408 { 343 {
409 delete this.currentQuery; 344 delete this.currentQuery;
410 }, 345 },
411 346
412 /** 347 /**
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 /** 1211 /**
1277 * @override 1212 * @override
1278 * @param {!WebInspector.DOMNode} node 1213 * @param {!WebInspector.DOMNode} node
1279 * @return {?{title: string, color: string}} 1214 * @return {?{title: string, color: string}}
1280 */ 1215 */
1281 decorate: function(node) 1216 decorate: function(node)
1282 { 1217 {
1283 return { color: "#555", title: WebInspector.UIString("Element is hidden" ) }; 1218 return { color: "#555", title: WebInspector.UIString("Element is hidden" ) };
1284 } 1219 }
1285 } 1220 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698