OLD | NEW |
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 19 matching lines...) Expand all Loading... |
30 /** | 30 /** |
31 * @constructor | 31 * @constructor |
32 * @extends {WebInspector.SidebarPane} | 32 * @extends {WebInspector.SidebarPane} |
33 * @param {!WebInspector.ComputedStyleSidebarPane} computedStylePane | 33 * @param {!WebInspector.ComputedStyleSidebarPane} computedStylePane |
34 * @param {function(!WebInspector.DOMNode, string, boolean)=} setPseudoClassCall
back | 34 * @param {function(!WebInspector.DOMNode, string, boolean)=} setPseudoClassCall
back |
35 */ | 35 */ |
36 WebInspector.StylesSidebarPane = function(computedStylePane, setPseudoClassCallb
ack) | 36 WebInspector.StylesSidebarPane = function(computedStylePane, setPseudoClassCallb
ack) |
37 { | 37 { |
38 WebInspector.SidebarPane.call(this, WebInspector.UIString("Styles")); | 38 WebInspector.SidebarPane.call(this, WebInspector.UIString("Styles")); |
39 | 39 |
40 this._elementStateButton = document.createElement("button"); | 40 this._elementStateButton = createElement("button"); |
41 this._elementStateButton.className = "pane-title-button element-state"; | 41 this._elementStateButton.className = "pane-title-button element-state"; |
42 this._elementStateButton.title = WebInspector.UIString("Toggle Element State
"); | 42 this._elementStateButton.title = WebInspector.UIString("Toggle Element State
"); |
43 this._elementStateButton.addEventListener("click", this._toggleElementStateP
ane.bind(this), false); | 43 this._elementStateButton.addEventListener("click", this._toggleElementStateP
ane.bind(this), false); |
44 this.titleElement.appendChild(this._elementStateButton); | 44 this.titleElement.appendChild(this._elementStateButton); |
45 | 45 |
46 var addButton = document.createElement("button"); | 46 var addButton = 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._createNewRuleInViaInspectorStyleSh
eet.bind(this), false); | 50 addButton.addEventListener("click", this._createNewRuleInViaInspectorStyleSh
eet.bind(this), false); |
51 this.titleElement.appendChild(addButton); | 51 this.titleElement.appendChild(addButton); |
52 addButton.createChild("div", "long-click-glyph fill"); | 52 addButton.createChild("div", "long-click-glyph fill"); |
53 | 53 |
54 this._addButtonLongClickController = new WebInspector.LongClickController(ad
dButton); | 54 this._addButtonLongClickController = new WebInspector.LongClickController(ad
dButton); |
55 this._addButtonLongClickController.addEventListener(WebInspector.LongClickCo
ntroller.Events.LongClick, this._onAddButtonLongClick.bind(this)); | 55 this._addButtonLongClickController.addEventListener(WebInspector.LongClickCo
ntroller.Events.LongClick, this._onAddButtonLongClick.bind(this)); |
56 this._addButtonLongClickController.enable(); | 56 this._addButtonLongClickController.enable(); |
57 | 57 |
58 this._computedStylePane = computedStylePane; | 58 this._computedStylePane = computedStylePane; |
59 computedStylePane.setHostingPane(this); | 59 computedStylePane.setHostingPane(this); |
60 this._setPseudoClassCallback = setPseudoClassCallback; | 60 this._setPseudoClassCallback = setPseudoClassCallback; |
61 this.element.addEventListener("contextmenu", this._contextMenuEventFired.bin
d(this), true); | 61 this.element.addEventListener("contextmenu", this._contextMenuEventFired.bin
d(this), true); |
62 WebInspector.settings.colorFormat.addChangeListener(this._colorFormatSetting
Changed.bind(this)); | 62 WebInspector.settings.colorFormat.addChangeListener(this._colorFormatSetting
Changed.bind(this)); |
63 WebInspector.settings.showUserAgentStyles.addChangeListener(this._showUserAg
entStylesSettingChanged.bind(this)); | 63 WebInspector.settings.showUserAgentStyles.addChangeListener(this._showUserAg
entStylesSettingChanged.bind(this)); |
64 | 64 |
65 this._createElementStatePane(); | 65 this._createElementStatePane(); |
66 this.bodyElement.appendChild(this._elementStatePane); | 66 this.bodyElement.appendChild(this._elementStatePane); |
67 this._sectionsContainer = document.createElement("div"); | 67 this._sectionsContainer = createElement("div"); |
68 this.bodyElement.appendChild(this._sectionsContainer); | 68 this.bodyElement.appendChild(this._sectionsContainer); |
69 | 69 |
70 this._spectrumHelper = new WebInspector.SpectrumPopupHelper(); | 70 this._spectrumHelper = new WebInspector.SpectrumPopupHelper(); |
71 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa
ultCSSFormatter()); | 71 this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.Defa
ultCSSFormatter()); |
72 | 72 |
73 this.element.classList.add("styles-pane"); | 73 this.element.classList.add("styles-pane"); |
74 this.element.classList.toggle("show-user-styles", WebInspector.settings.show
UserAgentStyles.get()); | 74 this.element.classList.toggle("show-user-styles", WebInspector.settings.show
UserAgentStyles.get()); |
75 this.element.addEventListener("mousemove", this._mouseMovedOverElement.bind(
this), false); | 75 this.element.addEventListener("mousemove", this._mouseMovedOverElement.bind(
this), false); |
76 document.body.addEventListener("keydown", this._keyDown.bind(this), false); | 76 document.body.addEventListener("keydown", this._keyDown.bind(this), false); |
77 document.body.addEventListener("keyup", this._keyUp.bind(this), false); | 77 document.body.addEventListener("keyup", this._keyUp.bind(this), false); |
(...skipping 18 matching lines...) Expand all Loading... |
96 SelectorEditingStarted: "SelectorEditingStarted", | 96 SelectorEditingStarted: "SelectorEditingStarted", |
97 SelectorEditingEnded: "SelectorEditingEnded" | 97 SelectorEditingEnded: "SelectorEditingEnded" |
98 }; | 98 }; |
99 | 99 |
100 /** | 100 /** |
101 * @param {!WebInspector.CSSProperty} property | 101 * @param {!WebInspector.CSSProperty} property |
102 * @return {!Element} | 102 * @return {!Element} |
103 */ | 103 */ |
104 WebInspector.StylesSidebarPane.createExclamationMark = function(property) | 104 WebInspector.StylesSidebarPane.createExclamationMark = function(property) |
105 { | 105 { |
106 var exclamationElement = document.createElement("div"); | 106 var exclamationElement = createElement("div"); |
107 exclamationElement.className = "exclamation-mark" + (WebInspector.StylesSide
barPane._ignoreErrorsForProperty(property) ? "" : " warning-icon-small"); | 107 exclamationElement.className = "exclamation-mark" + (WebInspector.StylesSide
barPane._ignoreErrorsForProperty(property) ? "" : " warning-icon-small"); |
108 exclamationElement.title = WebInspector.CSSMetadata.cssPropertiesMetainfo.ke
ySet()[property.name.toLowerCase()] ? WebInspector.UIString("Invalid property va
lue.") : WebInspector.UIString("Unknown property name."); | 108 exclamationElement.title = WebInspector.CSSMetadata.cssPropertiesMetainfo.ke
ySet()[property.name.toLowerCase()] ? WebInspector.UIString("Invalid property va
lue.") : WebInspector.UIString("Unknown property name."); |
109 return exclamationElement; | 109 return exclamationElement; |
110 } | 110 } |
111 | 111 |
112 /** | 112 /** |
113 * @param {!WebInspector.Color} color | 113 * @param {!WebInspector.Color} color |
114 */ | 114 */ |
115 WebInspector.StylesSidebarPane._colorFormat = function(color) | 115 WebInspector.StylesSidebarPane._colorFormat = function(color) |
116 { | 116 { |
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 * @param {!Object.<string, boolean>} usedProperties | 806 * @param {!Object.<string, boolean>} usedProperties |
807 * @param {?Element} anchorElement | 807 * @param {?Element} anchorElement |
808 */ | 808 */ |
809 _rebuildSectionsForStyleRules: function(styleRules, usedProperties, anchorEl
ement) | 809 _rebuildSectionsForStyleRules: function(styleRules, usedProperties, anchorEl
ement) |
810 { | 810 { |
811 // Make a property section for each style rule. | 811 // Make a property section for each style rule. |
812 var sections = []; | 812 var sections = []; |
813 for (var i = 0; i < styleRules.length; ++i) { | 813 for (var i = 0; i < styleRules.length; ++i) { |
814 var styleRule = styleRules[i]; | 814 var styleRule = styleRules[i]; |
815 if (styleRule.isStyleSeparator) { | 815 if (styleRule.isStyleSeparator) { |
816 var separatorElement = document.createElement("div"); | 816 var separatorElement = createElement("div"); |
817 if (styleRule.isPlaceholder) { | 817 if (styleRule.isPlaceholder) { |
818 separatorElement.className = "styles-sidebar-placeholder"; | 818 separatorElement.className = "styles-sidebar-placeholder"; |
819 this._sectionsContainer.insertBefore(separatorElement, ancho
rElement); | 819 this._sectionsContainer.insertBefore(separatorElement, ancho
rElement); |
820 continue; | 820 continue; |
821 } | 821 } |
822 separatorElement.className = "sidebar-separator"; | 822 separatorElement.className = "sidebar-separator"; |
823 if (styleRule.node) { | 823 if (styleRule.node) { |
824 var link = WebInspector.DOMPresentationUtils.linkifyNodeRefe
rence(styleRule.node); | 824 var link = WebInspector.DOMPresentationUtils.linkifyNodeRefe
rence(styleRule.node); |
825 separatorElement.createTextChild(WebInspector.UIString("Inhe
rited from") + " "); | 825 separatorElement.createTextChild(WebInspector.UIString("Inhe
rited from") + " "); |
826 separatorElement.appendChild(link); | 826 separatorElement.appendChild(link); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
948 | 948 |
949 var buttonToggled = !this._elementStateButton.classList.contains("toggle
d"); | 949 var buttonToggled = !this._elementStateButton.classList.contains("toggle
d"); |
950 if (buttonToggled) | 950 if (buttonToggled) |
951 this.expand(); | 951 this.expand(); |
952 this._elementStateButton.classList.toggle("toggled", buttonToggled); | 952 this._elementStateButton.classList.toggle("toggled", buttonToggled); |
953 this._elementStatePane.classList.toggle("expanded", buttonToggled); | 953 this._elementStatePane.classList.toggle("expanded", buttonToggled); |
954 }, | 954 }, |
955 | 955 |
956 _createElementStatePane: function() | 956 _createElementStatePane: function() |
957 { | 957 { |
958 this._elementStatePane = document.createElement("div"); | 958 this._elementStatePane = createElement("div"); |
959 this._elementStatePane.className = "styles-element-state-pane source-cod
e"; | 959 this._elementStatePane.className = "styles-element-state-pane source-cod
e"; |
960 var table = document.createElement("table"); | 960 var table = createElement("table"); |
961 | 961 |
962 var inputs = []; | 962 var inputs = []; |
963 this._elementStatePane.inputs = inputs; | 963 this._elementStatePane.inputs = inputs; |
964 | 964 |
965 /** | 965 /** |
966 * @param {!Event} event | 966 * @param {!Event} event |
967 * @this {WebInspector.StylesSidebarPane} | 967 * @this {WebInspector.StylesSidebarPane} |
968 */ | 968 */ |
969 function clickListener(event) | 969 function clickListener(event) |
970 { | 970 { |
971 var node = this._validateNode(); | 971 var node = this._validateNode(); |
972 if (!node) | 972 if (!node) |
973 return; | 973 return; |
974 this._setPseudoClassCallback(node, event.target.state, event.target.
checked); | 974 this._setPseudoClassCallback(node, event.target.state, event.target.
checked); |
975 } | 975 } |
976 | 976 |
977 /** | 977 /** |
978 * @param {string} state | 978 * @param {string} state |
979 * @return {!Element} | 979 * @return {!Element} |
980 * @this {WebInspector.StylesSidebarPane} | 980 * @this {WebInspector.StylesSidebarPane} |
981 */ | 981 */ |
982 function createCheckbox(state) | 982 function createCheckbox(state) |
983 { | 983 { |
984 var td = document.createElement("td"); | 984 var td = createElement("td"); |
985 var label = document.createElement("label"); | 985 var label = createElement("label"); |
986 var input = document.createElement("input"); | 986 var input = createElement("input"); |
987 input.type = "checkbox"; | 987 input.type = "checkbox"; |
988 input.state = state; | 988 input.state = state; |
989 input.addEventListener("click", clickListener.bind(this), false); | 989 input.addEventListener("click", clickListener.bind(this), false); |
990 inputs.push(input); | 990 inputs.push(input); |
991 label.appendChild(input); | 991 label.appendChild(input); |
992 label.createTextChild(":" + state); | 992 label.createTextChild(":" + state); |
993 td.appendChild(label); | 993 td.appendChild(label); |
994 return td; | 994 return td; |
995 } | 995 } |
996 | 996 |
(...skipping 16 matching lines...) Expand all Loading... |
1013 return this._filterRegex; | 1013 return this._filterRegex; |
1014 }, | 1014 }, |
1015 | 1015 |
1016 /** | 1016 /** |
1017 * @param {boolean} isComputedStyleFilter | 1017 * @param {boolean} isComputedStyleFilter |
1018 * @return {!Element} | 1018 * @return {!Element} |
1019 * @param {function(?RegExp)} filterCallback | 1019 * @param {function(?RegExp)} filterCallback |
1020 */ | 1020 */ |
1021 _createPropertyFilterElement: function(isComputedStyleFilter, filterCallback
) | 1021 _createPropertyFilterElement: function(isComputedStyleFilter, filterCallback
) |
1022 { | 1022 { |
1023 var input = document.createElement("input"); | 1023 var input = createElement("input"); |
1024 input.type = "text"; | 1024 input.type = "text"; |
1025 input.placeholder = isComputedStyleFilter ? WebInspector.UIString("Filte
r") : WebInspector.UIString("Find in Styles"); | 1025 input.placeholder = isComputedStyleFilter ? WebInspector.UIString("Filte
r") : WebInspector.UIString("Find in Styles"); |
1026 var boundSearchHandler = searchHandler.bind(this); | 1026 var boundSearchHandler = searchHandler.bind(this); |
1027 | 1027 |
1028 /** | 1028 /** |
1029 * @this {WebInspector.StylesSidebarPane} | 1029 * @this {WebInspector.StylesSidebarPane} |
1030 */ | 1030 */ |
1031 function searchHandler() | 1031 function searchHandler() |
1032 { | 1032 { |
1033 var regex = input.value ? new RegExp(input.value.escapeForRegExp(),
"i") : null; | 1033 var regex = input.value ? new RegExp(input.value.escapeForRegExp(),
"i") : null; |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1204 this.styleRule = styleRule; | 1204 this.styleRule = styleRule; |
1205 this.rule = this.styleRule.rule; | 1205 this.rule = this.styleRule.rule; |
1206 this.editable = editable; | 1206 this.editable = editable; |
1207 this.isInherited = isInherited; | 1207 this.isInherited = isInherited; |
1208 | 1208 |
1209 var extraClasses = (this.rule && (this.rule.isUser || this.rule.isUserAgent)
? " user-rule" : ""); | 1209 var extraClasses = (this.rule && (this.rule.isUser || this.rule.isUserAgent)
? " user-rule" : ""); |
1210 this.element.className = "styles-section matched-styles monospace" + extraCl
asses; | 1210 this.element.className = "styles-section matched-styles monospace" + extraCl
asses; |
1211 // We don't really use properties' disclosure. | 1211 // We don't really use properties' disclosure. |
1212 this.propertiesElement.classList.remove("properties-tree"); | 1212 this.propertiesElement.classList.remove("properties-tree"); |
1213 | 1213 |
1214 var selectorContainer = document.createElement("div"); | 1214 var selectorContainer = createElement("div"); |
1215 this._selectorElement = document.createElement("span"); | 1215 this._selectorElement = createElement("span"); |
1216 this._selectorElement.textContent = styleRule.selectorText; | 1216 this._selectorElement.textContent = styleRule.selectorText; |
1217 selectorContainer.appendChild(this._selectorElement); | 1217 selectorContainer.appendChild(this._selectorElement); |
1218 | 1218 |
1219 var openBrace = document.createElement("span"); | 1219 var openBrace = createElement("span"); |
1220 openBrace.textContent = " {"; | 1220 openBrace.textContent = " {"; |
1221 selectorContainer.appendChild(openBrace); | 1221 selectorContainer.appendChild(openBrace); |
1222 selectorContainer.addEventListener("mousedown", this._handleEmptySpaceMouseD
own.bind(this), false); | 1222 selectorContainer.addEventListener("mousedown", this._handleEmptySpaceMouseD
own.bind(this), false); |
1223 selectorContainer.addEventListener("click", this._handleSelectorContainerCli
ck.bind(this), false); | 1223 selectorContainer.addEventListener("click", this._handleSelectorContainerCli
ck.bind(this), false); |
1224 | 1224 |
1225 var closeBrace = document.createElement("div"); | 1225 var closeBrace = createElement("div"); |
1226 closeBrace.textContent = "}"; | 1226 closeBrace.textContent = "}"; |
1227 this.element.appendChild(closeBrace); | 1227 this.element.appendChild(closeBrace); |
1228 | 1228 |
1229 if (this.editable && this.rule) { | 1229 if (this.editable && this.rule) { |
1230 var newRuleButton = closeBrace.createChild("div", "sidebar-pane-button-n
ew-rule"); | 1230 var newRuleButton = closeBrace.createChild("div", "sidebar-pane-button-n
ew-rule"); |
1231 newRuleButton.title = WebInspector.UIString("Insert Style Rule"); | 1231 newRuleButton.title = WebInspector.UIString("Insert Style Rule"); |
1232 newRuleButton.addEventListener("click", this._onNewRuleClick.bind(this),
false); | 1232 newRuleButton.addEventListener("click", this._onNewRuleClick.bind(this),
false); |
1233 } | 1233 } |
1234 | 1234 |
1235 this._selectorElement.addEventListener("click", this._handleSelectorClick.bi
nd(this), false); | 1235 this._selectorElement.addEventListener("click", this._handleSelectorClick.bi
nd(this), false); |
1236 this.element.addEventListener("mousedown", this._handleEmptySpaceMouseDown.b
ind(this), false); | 1236 this.element.addEventListener("mousedown", this._handleEmptySpaceMouseDown.b
ind(this), false); |
1237 this.element.addEventListener("click", this._handleEmptySpaceClick.bind(this
), false); | 1237 this.element.addEventListener("click", this._handleEmptySpaceClick.bind(this
), false); |
1238 | 1238 |
1239 if (this.rule) { | 1239 if (this.rule) { |
1240 // Prevent editing the user agent and user rules. | 1240 // Prevent editing the user agent and user rules. |
1241 if (this.rule.isUserAgent || this.rule.isUser) | 1241 if (this.rule.isUserAgent || this.rule.isUser) |
1242 this.editable = false; | 1242 this.editable = false; |
1243 else { | 1243 else { |
1244 // Check this is a real CSSRule, not a bogus object coming from WebI
nspector.BlankStylePropertiesSection. | 1244 // Check this is a real CSSRule, not a bogus object coming from WebI
nspector.BlankStylePropertiesSection. |
1245 if (this.rule.styleSheetId) | 1245 if (this.rule.styleSheetId) |
1246 this.navigable = !!this.rule.resourceURL(); | 1246 this.navigable = !!this.rule.resourceURL(); |
1247 } | 1247 } |
1248 this.titleElement.classList.add("styles-selector"); | 1248 this.titleElement.classList.add("styles-selector"); |
1249 } | 1249 } |
1250 | 1250 |
1251 this._usedProperties = styleRule.usedProperties; | 1251 this._usedProperties = styleRule.usedProperties; |
1252 | 1252 |
1253 this._selectorRefElement = document.createElement("div"); | 1253 this._selectorRefElement = createElement("div"); |
1254 this._selectorRefElement.className = "subtitle"; | 1254 this._selectorRefElement.className = "subtitle"; |
1255 this._mediaListElement = this.titleElement.createChild("div", "media-list"); | 1255 this._mediaListElement = this.titleElement.createChild("div", "media-list"); |
1256 this._updateMediaList(); | 1256 this._updateMediaList(); |
1257 this._updateRuleOrigin(); | 1257 this._updateRuleOrigin(); |
1258 selectorContainer.insertBefore(this._selectorRefElement, selectorContainer.f
irstChild); | 1258 selectorContainer.insertBefore(this._selectorRefElement, selectorContainer.f
irstChild); |
1259 this.titleElement.appendChild(selectorContainer); | 1259 this.titleElement.appendChild(selectorContainer); |
1260 this._selectorContainer = selectorContainer; | 1260 this._selectorContainer = selectorContainer; |
1261 | 1261 |
1262 if (isInherited) | 1262 if (isInherited) |
1263 this.element.classList.add("styles-show-inherited"); // This one is rela
ted to inherited rules, not computed style. | 1263 this.element.classList.add("styles-show-inherited"); // This one is rela
ted to inherited rules, not computed style. |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1554 return; | 1554 return; |
1555 | 1555 |
1556 var matchingSelectors = rule.matchingSelectors; | 1556 var matchingSelectors = rule.matchingSelectors; |
1557 // .selector is rendered as non-affecting selector by default. | 1557 // .selector is rendered as non-affecting selector by default. |
1558 if (this.noAffect || matchingSelectors) | 1558 if (this.noAffect || matchingSelectors) |
1559 this._selectorElement.className = "selector"; | 1559 this._selectorElement.className = "selector"; |
1560 if (!matchingSelectors) | 1560 if (!matchingSelectors) |
1561 return; | 1561 return; |
1562 | 1562 |
1563 var selectors = rule.selectors; | 1563 var selectors = rule.selectors; |
1564 var fragment = document.createDocumentFragment(); | 1564 var fragment = createDocumentFragment(); |
1565 var currentMatch = 0; | 1565 var currentMatch = 0; |
1566 for (var i = 0; i < selectors.length ; ++i) { | 1566 for (var i = 0; i < selectors.length ; ++i) { |
1567 if (i) | 1567 if (i) |
1568 fragment.createTextChild(", "); | 1568 fragment.createTextChild(", "); |
1569 var isSelectorMatching = matchingSelectors[currentMatch] === i; | 1569 var isSelectorMatching = matchingSelectors[currentMatch] === i; |
1570 if (isSelectorMatching) | 1570 if (isSelectorMatching) |
1571 ++currentMatch; | 1571 ++currentMatch; |
1572 var matchingSelectorClass = isSelectorMatching ? " selector-matches"
: ""; | 1572 var matchingSelectorClass = isSelectorMatching ? " selector-matches"
: ""; |
1573 var selectorElement = document.createElement("span"); | 1573 var selectorElement = createElement("span"); |
1574 selectorElement.className = "simple-selector" + matchingSelectorClas
s; | 1574 selectorElement.className = "simple-selector" + matchingSelectorClas
s; |
1575 if (rule.styleSheetId) | 1575 if (rule.styleSheetId) |
1576 selectorElement._selectorIndex = i; | 1576 selectorElement._selectorIndex = i; |
1577 selectorElement.textContent = selectors[i].value; | 1577 selectorElement.textContent = selectors[i].value; |
1578 | 1578 |
1579 fragment.appendChild(selectorElement); | 1579 fragment.appendChild(selectorElement); |
1580 } | 1580 } |
1581 | 1581 |
1582 this._selectorElement.removeChildren(); | 1582 this._selectorElement.removeChildren(); |
1583 this._selectorElement.appendChild(fragment); | 1583 this._selectorElement.appendChild(fragment); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1629 }, | 1629 }, |
1630 | 1630 |
1631 /** | 1631 /** |
1632 * @param {?WebInspector.CSSRule} rule | 1632 * @param {?WebInspector.CSSRule} rule |
1633 * @param {!WebInspector.TextRange=} ruleLocation | 1633 * @param {!WebInspector.TextRange=} ruleLocation |
1634 * @return {!Node} | 1634 * @return {!Node} |
1635 */ | 1635 */ |
1636 _createRuleOriginNode: function(rule, ruleLocation) | 1636 _createRuleOriginNode: function(rule, ruleLocation) |
1637 { | 1637 { |
1638 if (!rule) | 1638 if (!rule) |
1639 return document.createTextNode(""); | 1639 return createTextNode(""); |
1640 | 1640 |
1641 if (!ruleLocation) { | 1641 if (!ruleLocation) { |
1642 var firstMatchingIndex = rule.matchingSelectors && rule.matchingSele
ctors.length ? rule.matchingSelectors[0] : 0; | 1642 var firstMatchingIndex = rule.matchingSelectors && rule.matchingSele
ctors.length ? rule.matchingSelectors[0] : 0; |
1643 ruleLocation = rule.selectors[firstMatchingIndex].range; | 1643 ruleLocation = rule.selectors[firstMatchingIndex].range; |
1644 } | 1644 } |
1645 | 1645 |
1646 if (ruleLocation && rule.styleSheetId) | 1646 if (ruleLocation && rule.styleSheetId) |
1647 return this._linkifyRuleLocation(rule.styleSheetId, ruleLocation); | 1647 return this._linkifyRuleLocation(rule.styleSheetId, ruleLocation); |
1648 | 1648 |
1649 if (rule.isUserAgent) | 1649 if (rule.isUserAgent) |
1650 return document.createTextNode(WebInspector.UIString("user agent sty
lesheet")); | 1650 return createTextNode(WebInspector.UIString("user agent stylesheet")
); |
1651 if (rule.isUser) | 1651 if (rule.isUser) |
1652 return document.createTextNode(WebInspector.UIString("user styleshee
t")); | 1652 return createTextNode(WebInspector.UIString("user stylesheet")); |
1653 if (rule.isViaInspector) | 1653 if (rule.isViaInspector) |
1654 return document.createTextNode(WebInspector.UIString("via inspector"
)); | 1654 return createTextNode(WebInspector.UIString("via inspector")); |
1655 return document.createTextNode(""); | 1655 return createTextNode(""); |
1656 }, | 1656 }, |
1657 | 1657 |
1658 /** | 1658 /** |
1659 * @param {string} styleSheetId | 1659 * @param {string} styleSheetId |
1660 * @param {!WebInspector.TextRange} ruleLocation | 1660 * @param {!WebInspector.TextRange} ruleLocation |
1661 * @return {!Node} | 1661 * @return {!Node} |
1662 */ | 1662 */ |
1663 _linkifyRuleLocation: function(styleSheetId, ruleLocation) | 1663 _linkifyRuleLocation: function(styleSheetId, ruleLocation) |
1664 { | 1664 { |
1665 /** | 1665 /** |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1992 | 1992 |
1993 for (var j = 0; j < section.uniqueProperties.length; ++j) { | 1993 for (var j = 0; j < section.uniqueProperties.length; ++j) { |
1994 var property = section.uniqueProperties[j]; | 1994 var property = section.uniqueProperties[j]; |
1995 if (property.disabled) | 1995 if (property.disabled) |
1996 continue; | 1996 continue; |
1997 if (section.isInherited && !WebInspector.CSSMetadata.isPropertyI
nherited(property.name)) | 1997 if (section.isInherited && !WebInspector.CSSMetadata.isPropertyI
nherited(property.name)) |
1998 continue; | 1998 continue; |
1999 | 1999 |
2000 var treeElement = this._propertyTreeElements[property.name.toLow
erCase()]; | 2000 var treeElement = this._propertyTreeElements[property.name.toLow
erCase()]; |
2001 if (treeElement) { | 2001 if (treeElement) { |
2002 var fragment = document.createDocumentFragment(); | 2002 var fragment = createDocumentFragment(); |
2003 var selector = fragment.createChild("span"); | 2003 var selector = fragment.createChild("span"); |
2004 selector.style.color = "gray"; | 2004 selector.style.color = "gray"; |
2005 selector.textContent = section.styleRule.selectorText; | 2005 selector.textContent = section.styleRule.selectorText; |
2006 fragment.createTextChild(" - " + property.value + " "); | 2006 fragment.createTextChild(" - " + property.value + " "); |
2007 var subtitle = fragment.createChild("span"); | 2007 var subtitle = fragment.createChild("span"); |
2008 subtitle.style.float = "right"; | 2008 subtitle.style.float = "right"; |
2009 subtitle.appendChild(section._createRuleOriginNode(section.r
ule)); | 2009 subtitle.appendChild(section._createRuleOriginNode(section.r
ule)); |
2010 var childElement = new TreeElement(fragment, null, false); | 2010 var childElement = new TreeElement(fragment, null, false); |
2011 treeElement.appendChild(childElement); | 2011 treeElement.appendChild(childElement); |
2012 if (property.inactive || section.isPropertyOverloaded(proper
ty.name)) | 2012 if (property.inactive || section.isPropertyOverloaded(proper
ty.name)) |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2297 { | 2297 { |
2298 this.updateTitle(); | 2298 this.updateTitle(); |
2299 }, | 2299 }, |
2300 | 2300 |
2301 updateTitle: function() | 2301 updateTitle: function() |
2302 { | 2302 { |
2303 var value = this.value; | 2303 var value = this.value; |
2304 | 2304 |
2305 this.updateState(); | 2305 this.updateState(); |
2306 | 2306 |
2307 var nameElement = document.createElement("span"); | 2307 var nameElement = createElement("span"); |
2308 nameElement.className = "webkit-css-property"; | 2308 nameElement.className = "webkit-css-property"; |
2309 nameElement.textContent = this.name; | 2309 nameElement.textContent = this.name; |
2310 nameElement.title = this.property.propertyText; | 2310 nameElement.title = this.property.propertyText; |
2311 this.nameElement = nameElement; | 2311 this.nameElement = nameElement; |
2312 | 2312 |
2313 this._expandElement = document.createElement("span"); | 2313 this._expandElement = createElement("span"); |
2314 this._expandElement.className = "expand-element"; | 2314 this._expandElement.className = "expand-element"; |
2315 | 2315 |
2316 var valueElement = document.createElement("span"); | 2316 var valueElement = createElement("span"); |
2317 valueElement.className = "value"; | 2317 valueElement.className = "value"; |
2318 this.valueElement = valueElement; | 2318 this.valueElement = valueElement; |
2319 | 2319 |
2320 /** | 2320 /** |
2321 * @param {!RegExp} regex | 2321 * @param {!RegExp} regex |
2322 * @param {function(string):!Node} processor | 2322 * @param {function(string):!Node} processor |
2323 * @param {?function(string):!Node} nextProcessor | 2323 * @param {?function(string):!Node} nextProcessor |
2324 * @param {string} valueText | 2324 * @param {string} valueText |
2325 * @return {!DocumentFragment} | 2325 * @return {!DocumentFragment} |
2326 */ | 2326 */ |
2327 function processValue(regex, processor, nextProcessor, valueText) | 2327 function processValue(regex, processor, nextProcessor, valueText) |
2328 { | 2328 { |
2329 var container = document.createDocumentFragment(); | 2329 var container = createDocumentFragment(); |
2330 | 2330 |
2331 var items = valueText.replace(regex, "\0$1\0").split("\0"); | 2331 var items = valueText.replace(regex, "\0$1\0").split("\0"); |
2332 for (var i = 0; i < items.length; ++i) { | 2332 for (var i = 0; i < items.length; ++i) { |
2333 if ((i % 2) === 0) { | 2333 if ((i % 2) === 0) { |
2334 if (nextProcessor) | 2334 if (nextProcessor) |
2335 container.appendChild(nextProcessor(items[i])); | 2335 container.appendChild(nextProcessor(items[i])); |
2336 else | 2336 else |
2337 container.createTextChild(items[i]); | 2337 container.createTextChild(items[i]); |
2338 } else { | 2338 } else { |
2339 var processedNode = processor(items[i]); | 2339 var processedNode = processor(items[i]); |
2340 if (processedNode) | 2340 if (processedNode) |
2341 container.appendChild(processedNode); | 2341 container.appendChild(processedNode); |
2342 } | 2342 } |
2343 } | 2343 } |
2344 | 2344 |
2345 return container; | 2345 return container; |
2346 } | 2346 } |
2347 | 2347 |
2348 /** | 2348 /** |
2349 * @param {string} url | 2349 * @param {string} url |
2350 * @return {!Node} | 2350 * @return {!Node} |
2351 * @this {WebInspector.StylePropertyTreeElementBase} | 2351 * @this {WebInspector.StylePropertyTreeElementBase} |
2352 */ | 2352 */ |
2353 function linkifyURL(url) | 2353 function linkifyURL(url) |
2354 { | 2354 { |
2355 var hrefUrl = url; | 2355 var hrefUrl = url; |
2356 var match = hrefUrl.match(/['"]?([^'"]+)/); | 2356 var match = hrefUrl.match(/['"]?([^'"]+)/); |
2357 if (match) | 2357 if (match) |
2358 hrefUrl = match[1]; | 2358 hrefUrl = match[1]; |
2359 var container = document.createDocumentFragment(); | 2359 var container = createDocumentFragment(); |
2360 container.createTextChild("url("); | 2360 container.createTextChild("url("); |
2361 if (this._styleRule.rule && this._styleRule.rule.resourceURL()) | 2361 if (this._styleRule.rule && this._styleRule.rule.resourceURL()) |
2362 hrefUrl = WebInspector.ParsedURL.completeURL(this._styleRule.rul
e.resourceURL(), hrefUrl); | 2362 hrefUrl = WebInspector.ParsedURL.completeURL(this._styleRule.rul
e.resourceURL(), hrefUrl); |
2363 else if (this.node()) | 2363 else if (this.node()) |
2364 hrefUrl = this.node().resolveURL(hrefUrl); | 2364 hrefUrl = this.node().resolveURL(hrefUrl); |
2365 var hasResource = hrefUrl && !!WebInspector.resourceForURL(hrefUrl); | 2365 var hasResource = hrefUrl && !!WebInspector.resourceForURL(hrefUrl); |
2366 // FIXME: WebInspector.linkifyURLAsNode() should really use baseURI. | 2366 // FIXME: WebInspector.linkifyURLAsNode() should really use baseURI. |
2367 container.appendChild(WebInspector.linkifyURLAsNode(hrefUrl || url,
url, undefined, !hasResource)); | 2367 container.appendChild(WebInspector.linkifyURLAsNode(hrefUrl || url,
url, undefined, !hasResource)); |
2368 container.createTextChild(")"); | 2368 container.createTextChild(")"); |
2369 return container; | 2369 return container; |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2415 * @param {!Element} valueElement | 2415 * @param {!Element} valueElement |
2416 * @param {string} text | 2416 * @param {string} text |
2417 * @return {!Node} | 2417 * @return {!Node} |
2418 */ | 2418 */ |
2419 _processColor: function(nameElement, valueElement, text) | 2419 _processColor: function(nameElement, valueElement, text) |
2420 { | 2420 { |
2421 var color = WebInspector.Color.parse(text); | 2421 var color = WebInspector.Color.parse(text); |
2422 | 2422 |
2423 // We can be called with valid non-color values of |text| (like 'none' f
rom border style) | 2423 // We can be called with valid non-color values of |text| (like 'none' f
rom border style) |
2424 if (!color) | 2424 if (!color) |
2425 return document.createTextNode(text); | 2425 return createTextNode(text); |
2426 | 2426 |
2427 var format = WebInspector.StylesSidebarPane._colorFormat(color); | 2427 var format = WebInspector.StylesSidebarPane._colorFormat(color); |
2428 var spectrumHelper = this.editablePane() && this.editablePane()._spectru
mHelper; | 2428 var spectrumHelper = this.editablePane() && this.editablePane()._spectru
mHelper; |
2429 var spectrum = spectrumHelper ? spectrumHelper.spectrum() : null; | 2429 var spectrum = spectrumHelper ? spectrumHelper.spectrum() : null; |
2430 | 2430 |
2431 var isEditable = !!(this._styleRule && this._styleRule.editable !== fals
e); // |editable| is true by default. | 2431 var isEditable = !!(this._styleRule && this._styleRule.editable !== fals
e); // |editable| is true by default. |
2432 var colorSwatch = new WebInspector.ColorSwatch(!isEditable); | 2432 var colorSwatch = new WebInspector.ColorSwatch(!isEditable); |
2433 colorSwatch.setColorString(text); | 2433 colorSwatch.setColorString(text); |
2434 colorSwatch.element.addEventListener("click", swatchClick.bind(this), fa
lse); | 2434 colorSwatch.element.addEventListener("click", swatchClick.bind(this), fa
lse); |
2435 | 2435 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2500 spectrumHelper.addEventListener(WebInspector.SpectrumPopupHelper
.Events.Hidden, boundSpectrumHidden); | 2500 spectrumHelper.addEventListener(WebInspector.SpectrumPopupHelper
.Events.Hidden, boundSpectrumHidden); |
2501 | 2501 |
2502 scrollerElement = colorSwatch.element.enclosingNodeOrSelfWithCla
ss("style-panes-wrapper"); | 2502 scrollerElement = colorSwatch.element.enclosingNodeOrSelfWithCla
ss("style-panes-wrapper"); |
2503 if (scrollerElement) | 2503 if (scrollerElement) |
2504 scrollerElement.addEventListener("scroll", repositionSpectru
m, false); | 2504 scrollerElement.addEventListener("scroll", repositionSpectru
m, false); |
2505 else | 2505 else |
2506 console.error("Unable to handle color picker scrolling"); | 2506 console.error("Unable to handle color picker scrolling"); |
2507 } | 2507 } |
2508 } | 2508 } |
2509 | 2509 |
2510 var colorValueElement = document.createElement("span"); | 2510 var colorValueElement = createElement("span"); |
2511 if (format === WebInspector.Color.Format.Original) | 2511 if (format === WebInspector.Color.Format.Original) |
2512 colorValueElement.textContent = text; | 2512 colorValueElement.textContent = text; |
2513 else | 2513 else |
2514 colorValueElement.textContent = color.toString(format); | 2514 colorValueElement.textContent = color.toString(format); |
2515 | 2515 |
2516 /** | 2516 /** |
2517 * @param {string} curFormat | 2517 * @param {string} curFormat |
2518 */ | 2518 */ |
2519 function nextFormat(curFormat) | 2519 function nextFormat(curFormat) |
2520 { | 2520 { |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2564 | 2564 |
2565 function changeColorDisplay() | 2565 function changeColorDisplay() |
2566 { | 2566 { |
2567 do { | 2567 do { |
2568 format = nextFormat(format); | 2568 format = nextFormat(format); |
2569 var currentValue = color.toString(format); | 2569 var currentValue = color.toString(format); |
2570 } while (currentValue === colorValueElement.textContent); | 2570 } while (currentValue === colorValueElement.textContent); |
2571 colorValueElement.textContent = currentValue; | 2571 colorValueElement.textContent = currentValue; |
2572 } | 2572 } |
2573 | 2573 |
2574 var container = document.createElement("nobr"); | 2574 var container = createElement("nobr"); |
2575 container.appendChild(colorSwatch.element); | 2575 container.appendChild(colorSwatch.element); |
2576 container.appendChild(colorValueElement); | 2576 container.appendChild(colorValueElement); |
2577 return container; | 2577 return container; |
2578 }, | 2578 }, |
2579 | 2579 |
2580 updateState: function() | 2580 updateState: function() |
2581 { | 2581 { |
2582 if (!this.listItemElement) | 2582 if (!this.listItemElement) |
2583 return; | 2583 return; |
2584 | 2584 |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2829 delete this._parentPane._mouseDownTreeElementIsName; | 2829 delete this._parentPane._mouseDownTreeElementIsName; |
2830 delete this._parentPane._mouseDownTreeElementIsValue; | 2830 delete this._parentPane._mouseDownTreeElementIsValue; |
2831 } | 2831 } |
2832 }, | 2832 }, |
2833 | 2833 |
2834 updateTitle: function() | 2834 updateTitle: function() |
2835 { | 2835 { |
2836 WebInspector.StylePropertyTreeElementBase.prototype.updateTitle.call(thi
s); | 2836 WebInspector.StylePropertyTreeElementBase.prototype.updateTitle.call(thi
s); |
2837 | 2837 |
2838 if (this.parsedOk && this.section() && this.parent.root) { | 2838 if (this.parsedOk && this.section() && this.parent.root) { |
2839 var enabledCheckboxElement = document.createElement("input"); | 2839 var enabledCheckboxElement = createElement("input"); |
2840 enabledCheckboxElement.className = "enabled-button"; | 2840 enabledCheckboxElement.className = "enabled-button"; |
2841 enabledCheckboxElement.type = "checkbox"; | 2841 enabledCheckboxElement.type = "checkbox"; |
2842 enabledCheckboxElement.checked = !this.disabled; | 2842 enabledCheckboxElement.checked = !this.disabled; |
2843 enabledCheckboxElement.addEventListener("click", this.toggleEnabled.
bind(this), false); | 2843 enabledCheckboxElement.addEventListener("click", this.toggleEnabled.
bind(this), false); |
2844 this.listItemElement.insertBefore(enabledCheckboxElement, this.listI
temElement.firstChild); | 2844 this.listItemElement.insertBefore(enabledCheckboxElement, this.listI
temElement.firstChild); |
2845 } | 2845 } |
2846 }, | 2846 }, |
2847 | 2847 |
2848 _mouseClick: function(event) | 2848 _mouseClick: function(event) |
2849 { | 2849 { |
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3582 if (userEnteredText && (userEnteredText === userEnteredText.toUpperCase(
))) { | 3582 if (userEnteredText && (userEnteredText === userEnteredText.toUpperCase(
))) { |
3583 for (var i = 0; i < results.length; ++i) | 3583 for (var i = 0; i < results.length; ++i) |
3584 results[i] = results[i].toUpperCase(); | 3584 results[i] = results[i].toUpperCase(); |
3585 } | 3585 } |
3586 var selectedIndex = this._cssCompletions.mostUsedOf(results); | 3586 var selectedIndex = this._cssCompletions.mostUsedOf(results); |
3587 completionsReadyCallback(results, selectedIndex); | 3587 completionsReadyCallback(results, selectedIndex); |
3588 }, | 3588 }, |
3589 | 3589 |
3590 __proto__: WebInspector.TextPrompt.prototype | 3590 __proto__: WebInspector.TextPrompt.prototype |
3591 } | 3591 } |
OLD | NEW |