Index: third_party/WebKit/Source/devtools/front_end/ui/SettingsUI.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/SettingsUI.js b/third_party/WebKit/Source/devtools/front_end/ui/SettingsUI.js |
index a8aafa6ae7f4d2f20c086261c23d7668b150eddb..1caafef9be72801bc01dea81d6547b8e8ca808ba 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui/SettingsUI.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui/SettingsUI.js |
@@ -54,6 +54,48 @@ UI.SettingsUI.createSettingCheckbox = function(name, setting, omitParagraphEleme |
}; |
/** |
+ * @param {string} name |
+ * @param {!Common.Setting} setting |
+ * @return {!Element} |
+ */ |
+UI.SettingsUI.createSettingSelect = function(name, setting) { |
+ var p = createElement('p'); |
+ p.createChild('label').textContent = name; |
+ var select = p.createChild('select', 'chrome-select'); |
+ var settingValue = setting.get(); |
+ var options = setting.options(); |
+ |
+ for (var i = 0; i < options.length; ++i) { |
+ var option = options[i]; |
+ // The "raw" flag indicates text is non-i18n-izable. |
+ var optionName = option.raw ? option.text : Common.UIString(option.text); |
+ select.add(new Option(optionName, option.value)); |
+ if (settingValue === option.value) |
+ select.selectedIndex = i; |
+ } |
+ |
+ setting.addChangeListener(settingChanged); |
+ settingChanged(); |
+ select.addEventListener('change', selectChanged, false); |
+ return p; |
+ |
+ function settingChanged() { |
+ var newValue = setting.get(); |
+ if (options[select.selectedIndex].value !== newValue) { |
+ for (var i = 0; i < options.length; i++) { |
+ if (options[i].value === newValue) |
+ select.selectedIndex = i; |
+ } |
+ } |
+ } |
+ |
+ function selectChanged() { |
+ // Don't use event.target.value to avoid conversion of the value to string. |
+ setting.set(options[select.selectedIndex].value); |
+ } |
+}; |
+ |
+/** |
* @param {!Element} input |
* @param {!Common.Setting} setting |
*/ |