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

Side by Side Diff: Source/devtools/front_end/StylesSidebarPane.js

Issue 208503006: Revert of DevTools: Implement Styles search and Computed style filter (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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
« no previous file with comments | « Source/devtools/front_end/Settings.js ('k') | Source/devtools/front_end/elementsPanel.css » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 this.titleElement.appendChild(this._elementStateButton); 44 this.titleElement.appendChild(this._elementStateButton);
45 45
46 var addButton = document.createElement("button"); 46 var addButton = document.createElement("button");
47 addButton.className = "pane-title-button add"; 47 addButton.className = "pane-title-button add";
48 addButton.id = "add-style-button-test-id"; 48 addButton.id = "add-style-button-test-id";
49 addButton.title = WebInspector.UIString("New Style Rule"); 49 addButton.title = WebInspector.UIString("New Style Rule");
50 addButton.addEventListener("click", this._createNewRule.bind(this), false); 50 addButton.addEventListener("click", this._createNewRule.bind(this), false);
51 this.titleElement.appendChild(addButton); 51 this.titleElement.appendChild(addButton);
52 52
53 this._computedStylePane = computedStylePane; 53 this._computedStylePane = computedStylePane;
54 computedStylePane.setHostingPane(this); 54 computedStylePane._stylesSidebarPane = this;
55 this._setPseudoClassCallback = setPseudoClassCallback; 55 this._setPseudoClassCallback = setPseudoClassCallback;
56 this.element.addEventListener("contextmenu", this._contextMenuEventFired.bin d(this), true); 56 this.element.addEventListener("contextmenu", this._contextMenuEventFired.bin d(this), true);
57 WebInspector.settings.colorFormat.addChangeListener(this._colorFormatSetting Changed.bind(this)); 57 WebInspector.settings.colorFormat.addChangeListener(this._colorFormatSetting Changed.bind(this));
58 58
59 this._createElementStatePane(); 59 this._createElementStatePane();
60 this.bodyElement.appendChild(this._elementStatePane); 60 this.bodyElement.appendChild(this._elementStatePane);
61 this._sectionsContainer = document.createElement("div"); 61 this._sectionsContainer = document.createElement("div");
62 this.bodyElement.appendChild(this._sectionsContainer); 62 this.bodyElement.appendChild(this._sectionsContainer);
63 63
64 this._spectrumHelper = new WebInspector.SpectrumPopupHelper(); 64 this._spectrumHelper = new WebInspector.SpectrumPopupHelper();
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 */ 173 */
174 _contextMenuEventFired: function(event) 174 _contextMenuEventFired: function(event)
175 { 175 {
176 // We start editing upon click -> default navigation to resources panel is not available 176 // We start editing upon click -> default navigation to resources panel is not available
177 // Hence we add a soft context menu for hrefs. 177 // Hence we add a soft context menu for hrefs.
178 var contextMenu = new WebInspector.ContextMenu(event); 178 var contextMenu = new WebInspector.ContextMenu(event);
179 contextMenu.appendApplicableItems(/** @type {!Node} */ (event.target)); 179 contextMenu.appendApplicableItems(/** @type {!Node} */ (event.target));
180 contextMenu.show(); 180 contextMenu.show();
181 }, 181 },
182 182
183 /**
184 * @param {!Element} matchedStylesElement
185 * @param {!Element} computedStylesElement
186 */
187 setFilterBoxContainers: function(matchedStylesElement, computedStylesElement )
188 {
189 if (!WebInspector.experimentsSettings.cssStyleSearch.isEnabled())
190 return;
191
192 matchedStylesElement.appendChild(this._createCSSFilterControl());
193 this._computedStylePane.setFilterBoxContainer(computedStylesElement);
194 },
195
196 /**
197 * @return {!Element}
198 */
199 _createCSSFilterControl: function()
200 {
201 var filterInput = this._createPropertyFilterElement(false, searchHandler .bind(this));
202
203 /**
204 * @param {?RegExp} regex
205 * @this {WebInspector.StylesSidebarPane}
206 */
207 function searchHandler(regex)
208 {
209 this._filterRegex = regex;
210 }
211
212 filterInput.addEventListener("keydown", tabHandler.bind(this), false);
213
214 /**
215 * @param {?Event} event
216 * @this {WebInspector.StylesSidebarPane}
217 */
218 function tabHandler(event)
219 {
220 if (event.keyIdentifier !== "U+0009")
221 return;
222
223 event.consume(true);
224 var firstSection = this.sections[0][1];
225 if (!firstSection)
226 return;
227 firstSection._moveEditorFromSelector(event.shiftKey ? "backward" : " forward");
228 }
229 return filterInput;
230 },
231
232 get _forcedPseudoClasses() 183 get _forcedPseudoClasses()
233 { 184 {
234 return this.node ? (this.node.getUserProperty("pseudoState") || undefine d) : undefined; 185 return this.node ? (this.node.getUserProperty("pseudoState") || undefine d) : undefined;
235 }, 186 },
236 187
237 _updateForcedPseudoStateInputs: function() 188 _updateForcedPseudoStateInputs: function()
238 { 189 {
239 if (!this.node) 190 if (!this.node)
240 return; 191 return;
241 192
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 this._rebuildUpdate(); 239 this._rebuildUpdate();
289 }, 240 },
290 241
291 /** 242 /**
292 * @param {!WebInspector.StylePropertiesSection=} editedSection 243 * @param {!WebInspector.StylePropertiesSection=} editedSection
293 * @param {boolean=} forceFetchComputedStyle 244 * @param {boolean=} forceFetchComputedStyle
294 * @param {function()=} userCallback 245 * @param {function()=} userCallback
295 */ 246 */
296 _refreshUpdate: function(editedSection, forceFetchComputedStyle, userCallbac k) 247 _refreshUpdate: function(editedSection, forceFetchComputedStyle, userCallbac k)
297 { 248 {
298 var callbackWrapper = function()
299 {
300 if (this._filterRegex)
301 this._updateFilter(false);
302 if (userCallback)
303 userCallback();
304 }.bind(this);
305
306 if (this._refreshUpdateInProgress) { 249 if (this._refreshUpdateInProgress) {
307 this._lastNodeForInnerRefresh = this.node; 250 this._lastNodeForInnerRefresh = this.node;
308 return; 251 return;
309 } 252 }
310 253
311 var node = this._validateNode(userCallback); 254 var node = this._validateNode(userCallback);
312 if (!node) 255 if (!node)
313 return; 256 return;
314 257
315 /** 258 /**
316 * @param {?WebInspector.CSSStyleDeclaration} computedStyle 259 * @param {?WebInspector.CSSStyleDeclaration} computedStyle
317 * @this {WebInspector.StylesSidebarPane} 260 * @this {WebInspector.StylesSidebarPane}
318 */ 261 */
319 function computedStyleCallback(computedStyle) 262 function computedStyleCallback(computedStyle)
320 { 263 {
321 delete this._refreshUpdateInProgress; 264 delete this._refreshUpdateInProgress;
322 265
323 if (this._lastNodeForInnerRefresh) { 266 if (this._lastNodeForInnerRefresh) {
324 delete this._lastNodeForInnerRefresh; 267 delete this._lastNodeForInnerRefresh;
325 this._refreshUpdate(editedSection, forceFetchComputedStyle, call backWrapper); 268 this._refreshUpdate(editedSection, forceFetchComputedStyle, user Callback);
326 return; 269 return;
327 } 270 }
328 271
329 if (this.node === node && computedStyle) 272 if (this.node === node && computedStyle)
330 this._innerRefreshUpdate(node, computedStyle, editedSection); 273 this._innerRefreshUpdate(node, computedStyle, editedSection);
331 274
332 callbackWrapper(); 275 if (userCallback)
276 userCallback();
333 } 277 }
334 278
335 if (this._computedStylePane.isShowing() || forceFetchComputedStyle) { 279 if (this._computedStylePane.isShowing() || forceFetchComputedStyle) {
336 this._refreshUpdateInProgress = true; 280 this._refreshUpdateInProgress = true;
337 WebInspector.cssModel.getComputedStyleAsync(node.id, computedStyleCa llback.bind(this)); 281 WebInspector.cssModel.getComputedStyleAsync(node.id, computedStyleCa llback.bind(this));
338 } else { 282 } else {
339 this._innerRefreshUpdate(node, null, editedSection); 283 this._innerRefreshUpdate(node, null, editedSection);
340 callbackWrapper(); 284 if (userCallback)
285 userCallback();
341 } 286 }
342 }, 287 },
343 288
344 _rebuildUpdate: function() 289 _rebuildUpdate: function()
345 { 290 {
346 if (this._rebuildUpdateInProgress) { 291 if (this._rebuildUpdateInProgress) {
347 this._lastNodeForInnerRebuild = this.node; 292 this._lastNodeForInnerRebuild = this.node;
348 return; 293 return;
349 } 294 }
350 295
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 // Add rules in reverse order to match the cascade order. 456 // Add rules in reverse order to match the cascade order.
512 for (var j = pseudoElementCSSRules.rules.length - 1; j >= 0; --j) { 457 for (var j = pseudoElementCSSRules.rules.length - 1; j >= 0; --j) {
513 var rule = pseudoElementCSSRules.rules[j]; 458 var rule = pseudoElementCSSRules.rules[j];
514 styleRules.push({ style: rule.style, selectorText: rule.selector Text, media: rule.media, sourceURL: rule.resourceURL(), rule: rule, editable: !! (rule.style && rule.style.id) }); 459 styleRules.push({ style: rule.style, selectorText: rule.selector Text, media: rule.media, sourceURL: rule.resourceURL(), rule: rule, editable: !! (rule.style && rule.style.id) });
515 } 460 }
516 usedProperties = {}; 461 usedProperties = {};
517 this._markUsedProperties(styleRules, usedProperties); 462 this._markUsedProperties(styleRules, usedProperties);
518 this.sections[pseudoId] = this._rebuildSectionsForStyleRules(styleRu les, usedProperties, anchorElement); 463 this.sections[pseudoId] = this._rebuildSectionsForStyleRules(styleRu les, usedProperties, anchorElement);
519 } 464 }
520 465
521 if (this._filterRegex)
522 this._updateFilter(false);
523 this._nodeStylesUpdatedForTest(node, true); 466 this._nodeStylesUpdatedForTest(node, true);
524 }, 467 },
525 468
526 _nodeStylesUpdatedForTest: function(node, rebuild) 469 _nodeStylesUpdatedForTest: function(node, rebuild)
527 { 470 {
528 // Tests override this method. 471 // Tests override this method.
529 }, 472 },
530 473
531 _refreshStyleRules: function(sections, computedStyle) 474 _refreshStyleRules: function(sections, computedStyle)
532 { 475 {
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 input.type = "checkbox"; 799 input.type = "checkbox";
857 input.state = state; 800 input.state = state;
858 input.addEventListener("click", clickListener.bind(this), false); 801 input.addEventListener("click", clickListener.bind(this), false);
859 inputs.push(input); 802 inputs.push(input);
860 label.appendChild(input); 803 label.appendChild(input);
861 label.appendChild(document.createTextNode(":" + state)); 804 label.appendChild(document.createTextNode(":" + state));
862 td.appendChild(label); 805 td.appendChild(label);
863 return td; 806 return td;
864 } 807 }
865 808
866 var tr = table.createChild("tr"); 809 var tr = document.createElement("tr");
867 tr.appendChild(createCheckbox.call(this, "active")); 810 tr.appendChild(createCheckbox.call(this, "active"));
868 tr.appendChild(createCheckbox.call(this, "hover")); 811 tr.appendChild(createCheckbox.call(this, "hover"));
812 table.appendChild(tr);
869 813
870 tr = table.createChild("tr"); 814 tr = document.createElement("tr");
871 tr.appendChild(createCheckbox.call(this, "focus")); 815 tr.appendChild(createCheckbox.call(this, "focus"));
872 tr.appendChild(createCheckbox.call(this, "visited")); 816 tr.appendChild(createCheckbox.call(this, "visited"));
817 table.appendChild(tr);
873 818
874 this._elementStatePane.appendChild(table); 819 this._elementStatePane.appendChild(table);
875 }, 820 },
876 821
877 /** 822 /**
878 * @return {?RegExp}
879 */
880 filterRegex: function()
881 {
882 return this._filterRegex;
883 },
884
885 /**
886 * @param {boolean} isComputedStyleFilter
887 * @return {!Element}
888 * @param {function(?RegExp)} filterCallback
889 */
890 _createPropertyFilterElement: function(isComputedStyleFilter, filterCallback )
891 {
892 var input = document.createElement("input");
893 input.type = "text";
894 input.placeholder = isComputedStyleFilter ? WebInspector.UIString("Filte r") : WebInspector.UIString("Find in Styles");
895 input.className = "filter-box toolbar-search-control search-replace";
896 var boundSearchHandler = searchHandler.bind(this);
897
898 /**
899 * @this {WebInspector.StylesSidebarPane}
900 */
901 function searchHandler()
902 {
903 var regex = input.value ? new RegExp(input.value.escapeForRegExp(), "i") : null;
904 filterCallback(regex);
905 this._updateFilter(isComputedStyleFilter);
906 }
907 input.addEventListener("input", boundSearchHandler, false);
908
909 /**
910 * @param {?Event} event
911 */
912 function keydownHandler(event)
913 {
914 var Esc = "U+001B";
915 if (event.keyIdentifier !== Esc || !input.value)
916 return;
917 event.consume(true);
918 input.value = "";
919 boundSearchHandler();
920 }
921 input.addEventListener("keydown", keydownHandler, false);
922
923 return input;
924 },
925
926 /**
927 * @param {boolean} isComputedStyleFilter
928 */
929 _updateFilter: function(isComputedStyleFilter)
930 {
931 for (var pseudoId in this.sections) {
932 var sections = this.sections[pseudoId];
933 for (var i = 0; i < sections.length; ++i) {
934 var section = sections[i];
935 if (isComputedStyleFilter !== !!section.computedStyle)
936 continue;
937 section.updateFilter();
938 }
939 }
940 },
941
942 /**
943 * @param {!WebInspector.Event} event 823 * @param {!WebInspector.Event} event
944 */ 824 */
945 _showUserAgentStylesSettingChanged: function(event) 825 _showUserAgentStylesSettingChanged: function(event)
946 { 826 {
947 var showStyles = /** @type {boolean} */ (event.data); 827 var showStyles = /** @type {boolean} */ (event.data);
948 this.element.classList.toggle("show-user-styles", showStyles); 828 this.element.classList.toggle("show-user-styles", showStyles);
949 }, 829 },
950 830
951 willHide: function() 831 willHide: function()
952 { 832 {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 /** 873 /**
994 * @constructor 874 * @constructor
995 * @extends {WebInspector.SidebarPane} 875 * @extends {WebInspector.SidebarPane}
996 */ 876 */
997 WebInspector.ComputedStyleSidebarPane = function() 877 WebInspector.ComputedStyleSidebarPane = function()
998 { 878 {
999 WebInspector.SidebarPane.call(this, WebInspector.UIString("Computed Style")) ; 879 WebInspector.SidebarPane.call(this, WebInspector.UIString("Computed Style")) ;
1000 } 880 }
1001 881
1002 WebInspector.ComputedStyleSidebarPane.prototype = { 882 WebInspector.ComputedStyleSidebarPane.prototype = {
1003 /**
1004 * @param {!WebInspector.StylesSidebarPane} pane
1005 */
1006 setHostingPane: function(pane)
1007 {
1008 this._stylesSidebarPane = pane;
1009 },
1010
1011 setFilterBoxContainer: function(element)
1012 {
1013 element.appendChild(this._stylesSidebarPane._createPropertyFilterElement (true, filterCallback.bind(this)));
1014
1015 /**
1016 * @param {?RegExp} regex
1017 * @this {WebInspector.ComputedStyleSidebarPane}
1018 */
1019 function filterCallback(regex)
1020 {
1021 this._filterRegex = regex;
1022 }
1023 },
1024
1025 wasShown: function() 883 wasShown: function()
1026 { 884 {
1027 WebInspector.SidebarPane.prototype.wasShown.call(this); 885 WebInspector.SidebarPane.prototype.wasShown.call(this);
1028 if (!this._hasFreshContent) 886 if (!this._hasFreshContent)
1029 this.prepareContent(); 887 this.prepareContent();
1030 }, 888 },
1031 889
1032 /** 890 /**
1033 * @param {function()=} callback 891 * @param {function()=} callback
1034 */ 892 */
1035 prepareContent: function(callback) 893 prepareContent: function(callback)
1036 { 894 {
1037 /** 895 /**
1038 * @this {WebInspector.ComputedStyleSidebarPane} 896 * @this {WebInspector.ComputedStyleSidebarPane}
1039 */ 897 */
1040 function wrappedCallback() { 898 function wrappedCallback() {
1041 this._hasFreshContent = true; 899 this._hasFreshContent = true;
1042 if (callback) 900 if (callback)
1043 callback(); 901 callback();
1044 delete this._hasFreshContent; 902 delete this._hasFreshContent;
1045 } 903 }
1046 this._stylesSidebarPane._refreshUpdate(null, true, wrappedCallback.bind( this)); 904 this._stylesSidebarPane._refreshUpdate(null, true, wrappedCallback.bind( this));
1047 }, 905 },
1048 906
1049 /**
1050 * @return {?RegExp}
1051 */
1052 filterRegex: function()
1053 {
1054 return this._filterRegex;
1055 },
1056
1057 __proto__: WebInspector.SidebarPane.prototype 907 __proto__: WebInspector.SidebarPane.prototype
1058 } 908 }
1059 909
1060 /** 910 /**
1061 * @constructor 911 * @constructor
1062 * @extends {WebInspector.PropertiesSection} 912 * @extends {WebInspector.PropertiesSection}
1063 * @param {!WebInspector.StylesSidebarPane} parentPane 913 * @param {!WebInspector.StylesSidebarPane} parentPane
1064 * @param {!Object} styleRule 914 * @param {!Object} styleRule
1065 * @param {boolean} editable 915 * @param {boolean} editable
1066 * @param {boolean} isInherited 916 * @param {boolean} isInherited
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 if (shorthandPropertyAvailable) 1214 if (shorthandPropertyAvailable)
1365 continue; // Shorthand for the property found. 1215 continue; // Shorthand for the property found.
1366 1216
1367 var inherited = this.isPropertyInherited(property.name); 1217 var inherited = this.isPropertyInherited(property.name);
1368 var overloaded = property.inactive || this.isPropertyOverloaded(prop erty.name, isShorthand); 1218 var overloaded = property.inactive || this.isPropertyOverloaded(prop erty.name, isShorthand);
1369 var item = new WebInspector.StylePropertyTreeElement(this._parentPan e, this.styleRule, style, property, isShorthand, inherited, overloaded); 1219 var item = new WebInspector.StylePropertyTreeElement(this._parentPan e, this.styleRule, style, property, isShorthand, inherited, overloaded);
1370 this.propertiesTreeOutline.appendChild(item); 1220 this.propertiesTreeOutline.appendChild(item);
1371 } 1221 }
1372 }, 1222 },
1373 1223
1374 updateFilter: function()
1375 {
1376 var children = this.propertiesTreeOutline.children;
1377 for (var i = 0; i < children.length; ++i)
1378 children[i].updateFilter();
1379
1380 if (this.styleRule.rule)
1381 this._markSelectorHighlights();
1382 },
1383
1384 _markSelectorMatches: function() 1224 _markSelectorMatches: function()
1385 { 1225 {
1386 var rule = this.styleRule.rule; 1226 var rule = this.styleRule.rule;
1387 if (!rule) 1227 if (!rule)
1388 return; 1228 return;
1389 1229
1390 var matchingSelectors = rule.matchingSelectors; 1230 var matchingSelectors = rule.matchingSelectors;
1391 // .selector is rendered as non-affecting selector by default. 1231 // .selector is rendered as non-affecting selector by default.
1392 if (this.noAffect || matchingSelectors) 1232 if (this.noAffect || matchingSelectors)
1393 this._selectorElement.className = "selector"; 1233 this._selectorElement.className = "selector";
(...skipping 15 matching lines...) Expand all
1409 selectorElement.className = "simple-selector" + matchingSelectorClas s; 1249 selectorElement.className = "simple-selector" + matchingSelectorClas s;
1410 if (rule.id) 1250 if (rule.id)
1411 selectorElement._selectorIndex = i; 1251 selectorElement._selectorIndex = i;
1412 selectorElement.textContent = selectors[i].value; 1252 selectorElement.textContent = selectors[i].value;
1413 1253
1414 fragment.appendChild(selectorElement); 1254 fragment.appendChild(selectorElement);
1415 } 1255 }
1416 1256
1417 this._selectorElement.removeChildren(); 1257 this._selectorElement.removeChildren();
1418 this._selectorElement.appendChild(fragment); 1258 this._selectorElement.appendChild(fragment);
1419 this._markSelectorHighlights();
1420 },
1421
1422 _markSelectorHighlights: function()
1423 {
1424 var selectors = this._selectorElement.getElementsByClassName("simple-sel ector");
1425 var regex = this.pane.filterRegex();
1426 for (var i = 0; i < selectors.length; ++i) {
1427 var selectorMatchesFilter = regex && regex.test(selectors[i].textCon tent);
1428 selectors[i].classList.toggle("filter-match", selectorMatchesFilter) ;
1429 }
1430 }, 1259 },
1431 1260
1432 _checkWillCancelEditing: function() 1261 _checkWillCancelEditing: function()
1433 { 1262 {
1434 var willCauseCancelEditing = this._willCauseCancelEditing; 1263 var willCauseCancelEditing = this._willCauseCancelEditing;
1435 delete this._willCauseCancelEditing; 1264 delete this._willCauseCancelEditing;
1436 return willCauseCancelEditing; 1265 return willCauseCancelEditing;
1437 }, 1266 },
1438 1267
1439 _handleSelectorContainerClick: function(event) 1268 _handleSelectorContainerClick: function(event)
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1669 * @constructor 1498 * @constructor
1670 * @extends {WebInspector.PropertiesSection} 1499 * @extends {WebInspector.PropertiesSection}
1671 * @param {!WebInspector.StylesSidebarPane} stylesPane 1500 * @param {!WebInspector.StylesSidebarPane} stylesPane
1672 * @param {!Object} styleRule 1501 * @param {!Object} styleRule
1673 * @param {!Object.<string, boolean>} usedProperties 1502 * @param {!Object.<string, boolean>} usedProperties
1674 */ 1503 */
1675 WebInspector.ComputedStylePropertiesSection = function(stylesPane, styleRule, us edProperties) 1504 WebInspector.ComputedStylePropertiesSection = function(stylesPane, styleRule, us edProperties)
1676 { 1505 {
1677 WebInspector.PropertiesSection.call(this, ""); 1506 WebInspector.PropertiesSection.call(this, "");
1678 1507
1679 var subtitle = this.headerElement.createChild("div", "sidebar-pane-subtitle vbox"); 1508 var showInheritedCheckbox = new WebInspector.Checkbox(WebInspector.UIString( "Show inherited properties"), "sidebar-pane-subtitle");
1680 var showInheritedCheckbox = new WebInspector.Checkbox(WebInspector.UIString( "Show inherited properties"), "hbox"); 1509 this.headerElement.appendChild(showInheritedCheckbox.element);
1681 subtitle.appendChild(showInheritedCheckbox.element);
1682
1683 this._hasFreshContent = false; 1510 this._hasFreshContent = false;
1684 1511
1685 /** 1512 /**
1686 * @this {WebInspector.ComputedStylePropertiesSection} 1513 * @this {WebInspector.ComputedStylePropertiesSection}
1687 */ 1514 */
1688 function showInheritedToggleFunction() 1515 function showInheritedToggleFunction()
1689 { 1516 {
1690 var showInherited = showInheritedCheckbox.checked; 1517 var showInherited = showInheritedCheckbox.checked;
1691 WebInspector.settings.showInheritedComputedStyleProperties.set(showInher ited); 1518 WebInspector.settings.showInheritedComputedStyleProperties.set(showInher ited);
1692 if (showInherited) 1519 if (showInherited)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 this._expandedPropertyNames = {}; 1556 this._expandedPropertyNames = {};
1730 for (var name in this._propertyTreeElements) { 1557 for (var name in this._propertyTreeElements) {
1731 if (this._propertyTreeElements[name].expanded) 1558 if (this._propertyTreeElements[name].expanded)
1732 this._expandedPropertyNames[name] = true; 1559 this._expandedPropertyNames[name] = true;
1733 } 1560 }
1734 this._propertyTreeElements = {}; 1561 this._propertyTreeElements = {};
1735 this.propertiesTreeOutline.removeChildren(); 1562 this.propertiesTreeOutline.removeChildren();
1736 this.populated = false; 1563 this.populated = false;
1737 }, 1564 },
1738 1565
1739 updateFilter: function()
1740 {
1741 var children = this.propertiesTreeOutline.children;
1742 for (var i = 0; i < children.length; ++i)
1743 children[i].updateFilter();
1744 },
1745
1746 onpopulate: function() 1566 onpopulate: function()
1747 { 1567 {
1748 function sorter(a, b) 1568 function sorter(a, b)
1749 { 1569 {
1750 return a.name.compareTo(b.name); 1570 return a.name.compareTo(b.name);
1751 } 1571 }
1752 1572
1753 var style = this.styleRule.style; 1573 var style = this.styleRule.style;
1754 if (!style) 1574 if (!style)
1755 return; 1575 return;
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1953 }, 1773 },
1954 1774
1955 /** 1775 /**
1956 * @return {?WebInspector.StylesSidebarPane} 1776 * @return {?WebInspector.StylesSidebarPane}
1957 */ 1777 */
1958 editablePane: function() 1778 editablePane: function()
1959 { 1779 {
1960 return null; // Overridden by ancestors. 1780 return null; // Overridden by ancestors.
1961 }, 1781 },
1962 1782
1963 /**
1964 * @return {!WebInspector.StylesSidebarPane|!WebInspector.ComputedStyleSideb arPane}
1965 */
1966 parentPane: function()
1967 {
1968 throw "Not implemented";
1969 },
1970
1971 get inherited() 1783 get inherited()
1972 { 1784 {
1973 return this._inherited; 1785 return this._inherited;
1974 }, 1786 },
1975 1787
1976 /** 1788 /**
1977 * @return {boolean} 1789 * @return {boolean}
1978 */ 1790 */
1979 hasIgnorableError: function() 1791 hasIgnorableError: function()
1980 { 1792 {
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2143 if (!this.parsedOk) { 1955 if (!this.parsedOk) {
2144 // Avoid having longhands under an invalid shorthand. 1956 // Avoid having longhands under an invalid shorthand.
2145 this.hasChildren = false; 1957 this.hasChildren = false;
2146 this.listItemElement.classList.add("not-parsed-ok"); 1958 this.listItemElement.classList.add("not-parsed-ok");
2147 1959
2148 // Add a separate exclamation mark IMG element with a tooltip. 1960 // Add a separate exclamation mark IMG element with a tooltip.
2149 this.listItemElement.insertBefore(WebInspector.StylesSidebarPane.cre ateExclamationMark(this.property), this.listItemElement.firstChild); 1961 this.listItemElement.insertBefore(WebInspector.StylesSidebarPane.cre ateExclamationMark(this.property), this.listItemElement.firstChild);
2150 } 1962 }
2151 if (this.property.inactive) 1963 if (this.property.inactive)
2152 this.listItemElement.classList.add("inactive"); 1964 this.listItemElement.classList.add("inactive");
2153 this.updateFilter();
2154 },
2155
2156 updateFilter: function()
2157 {
2158 var regEx = this.parentPane().filterRegex();
2159 this.listItemElement.classList.toggle("filter-match", !!regEx && (regEx. test(this.property.name) || regEx.test(this.property.value)));
2160 }, 1965 },
2161 1966
2162 /** 1967 /**
2163 * @param {!Element} nameElement 1968 * @param {!Element} nameElement
2164 * @param {!Element} valueElement 1969 * @param {!Element} valueElement
2165 * @param {string} text 1970 * @param {string} text
2166 */ 1971 */
2167 _processColor: function(nameElement, valueElement, text) 1972 _processColor: function(nameElement, valueElement, text)
2168 { 1973 {
2169 var color = WebInspector.Color.parse(text); 1974 var color = WebInspector.Color.parse(text);
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
2381 }, 2186 },
2382 2187
2383 /** 2188 /**
2384 * @return {?WebInspector.StylesSidebarPane} 2189 * @return {?WebInspector.StylesSidebarPane}
2385 */ 2190 */
2386 editablePane: function() 2191 editablePane: function()
2387 { 2192 {
2388 return null; 2193 return null;
2389 }, 2194 },
2390 2195
2391 /**
2392 * @return {!WebInspector.ComputedStyleSidebarPane}
2393 */
2394 parentPane: function()
2395 {
2396 return this._stylesPane._computedStylePane;
2397 },
2398
2399 updateFilter: function()
2400 {
2401 var regEx = this.parentPane().filterRegex();
2402 this.listItemElement.classList.toggle("hidden", !!regEx && (!regEx.test( this.property.name) && !regEx.test(this.property.value)));
2403 },
2404
2405 __proto__: WebInspector.StylePropertyTreeElementBase.prototype 2196 __proto__: WebInspector.StylePropertyTreeElementBase.prototype
2406 } 2197 }
2407 2198
2408 /** 2199 /**
2409 * @constructor 2200 * @constructor
2410 * @extends {WebInspector.StylePropertyTreeElementBase} 2201 * @extends {WebInspector.StylePropertyTreeElementBase}
2411 * @param {!WebInspector.StylesSidebarPane} stylesPane 2202 * @param {!WebInspector.StylesSidebarPane} stylesPane
2412 * @param {!Object} styleRule 2203 * @param {!Object} styleRule
2413 * @param {!WebInspector.CSSStyleDeclaration} style 2204 * @param {!WebInspector.CSSStyleDeclaration} style
2414 * @param {!WebInspector.CSSProperty} property 2205 * @param {!WebInspector.CSSProperty} property
(...skipping 17 matching lines...) Expand all
2432 return this._parentPane.node; 2223 return this._parentPane.node;
2433 }, 2224 },
2434 2225
2435 /** 2226 /**
2436 * @return {?WebInspector.StylesSidebarPane} 2227 * @return {?WebInspector.StylesSidebarPane}
2437 */ 2228 */
2438 editablePane: function() 2229 editablePane: function()
2439 { 2230 {
2440 return this._parentPane; 2231 return this._parentPane;
2441 }, 2232 },
2442
2443 /**
2444 * @return {!WebInspector.StylesSidebarPane}
2445 */
2446 parentPane: function()
2447 {
2448 return this._parentPane;
2449 },
2450 2233
2451 /** 2234 /**
2452 * @return {?WebInspector.StylePropertiesSection} 2235 * @return {?WebInspector.StylePropertiesSection}
2453 */ 2236 */
2454 section: function() 2237 section: function()
2455 { 2238 {
2456 return this.treeOutline && this.treeOutline.section; 2239 return this.treeOutline && this.treeOutline.section;
2457 }, 2240 },
2458 2241
2459 /** 2242 /**
(...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after
3251 return; 3034 return;
3252 } 3035 }
3253 3036
3254 var results = this._cssCompletions.startsWith(prefix); 3037 var results = this._cssCompletions.startsWith(prefix);
3255 var selectedIndex = this._cssCompletions.mostUsedOf(results); 3038 var selectedIndex = this._cssCompletions.mostUsedOf(results);
3256 completionsReadyCallback(results, selectedIndex); 3039 completionsReadyCallback(results, selectedIndex);
3257 }, 3040 },
3258 3041
3259 __proto__: WebInspector.TextPrompt.prototype 3042 __proto__: WebInspector.TextPrompt.prototype
3260 } 3043 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/Settings.js ('k') | Source/devtools/front_end/elementsPanel.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698