OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 /** | 125 /** |
126 * @param {string=} name | 126 * @param {string=} name |
127 * @return {!Element} | 127 * @return {!Element} |
128 */ | 128 */ |
129 _appendSection(name) { | 129 _appendSection(name) { |
130 var block = this.containerElement.createChild('div', 'help-block'); | 130 var block = this.containerElement.createChild('div', 'help-block'); |
131 if (name) | 131 if (name) |
132 block.createChild('div', 'help-section-title').textContent = name; | 132 block.createChild('div', 'help-section-title').textContent = name; |
133 return block; | 133 return block; |
134 } | 134 } |
135 | |
136 _createSelectSetting(name, options, setting) { | |
137 var p = createElement('p'); | |
138 p.createChild('label').textContent = name; | |
139 | |
140 var select = p.createChild('select', 'chrome-select'); | |
141 var settingValue = setting.get(); | |
142 | |
143 for (var i = 0; i < options.length; ++i) { | |
144 var option = options[i]; | |
145 select.add(new Option(option[0], option[1])); | |
146 if (settingValue === option[1]) | |
147 select.selectedIndex = i; | |
148 } | |
149 | |
150 function changeListener(e) { | |
151 // Don't use e.target.value to avoid conversion of the value to string. | |
152 setting.set(options[select.selectedIndex][1]); | |
153 } | |
154 | |
155 select.addEventListener('change', changeListener, false); | |
156 return p; | |
157 } | |
158 }; | 135 }; |
159 | 136 |
160 /** | 137 /** |
161 * @unrestricted | 138 * @unrestricted |
162 */ | 139 */ |
163 Settings.GenericSettingsTab = class extends Settings.SettingsTab { | 140 Settings.GenericSettingsTab = class extends Settings.SettingsTab { |
164 constructor() { | 141 constructor() { |
165 super(Common.UIString('Preferences'), 'preferences-tab-content'); | 142 super(Common.UIString('Preferences'), 'preferences-tab-content'); |
166 | 143 |
167 /** @const */ | 144 /** @const */ |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 var uiTitle = Common.UIString(extension.title()); | 188 var uiTitle = Common.UIString(extension.title()); |
212 | 189 |
213 var sectionElement = this._sectionElement(sectionName); | 190 var sectionElement = this._sectionElement(sectionName); |
214 var settingControl; | 191 var settingControl; |
215 | 192 |
216 switch (descriptor['settingType']) { | 193 switch (descriptor['settingType']) { |
217 case 'boolean': | 194 case 'boolean': |
218 settingControl = UI.SettingsUI.createSettingCheckbox(uiTitle, setting); | 195 settingControl = UI.SettingsUI.createSettingCheckbox(uiTitle, setting); |
219 break; | 196 break; |
220 case 'enum': | 197 case 'enum': |
221 var descriptorOptions = descriptor['options']; | 198 if (Array.isArray(descriptor['options'])) |
222 var options = new Array(descriptorOptions.length); | 199 settingControl = UI.SettingsUI.createSettingSelect(uiTitle, descriptor
['options'], setting); |
223 for (var i = 0; i < options.length; ++i) { | 200 else |
224 // The "raw" flag indicates text is non-i18n-izable. | 201 console.error('Enum setting defined without options'); |
225 var optionName = descriptorOptions[i]['raw'] ? descriptorOptions[i]['t
ext'] : | |
226 Common.UIString(descrip
torOptions[i]['text']); | |
227 options[i] = [optionName, descriptorOptions[i]['value']]; | |
228 } | |
229 settingControl = this._createSelectSetting(uiTitle, options, setting); | |
230 break; | 202 break; |
231 default: | 203 default: |
232 console.error('Invalid setting type: ' + descriptor['settingType']); | 204 console.error('Invalid setting type: ' + descriptor['settingType']); |
233 return; | 205 return; |
234 } | 206 } |
235 this._nameToSettingElement.set(settingName, settingControl); | 207 if (settingControl) { |
236 sectionElement.appendChild(/** @type {!Element} */ (settingControl)); | 208 this._nameToSettingElement.set(settingName, settingControl); |
| 209 sectionElement.appendChild(settingControl); |
| 210 } |
237 } | 211 } |
238 | 212 |
239 /** | 213 /** |
240 * @param {!Runtime.Extension} extension | 214 * @param {!Runtime.Extension} extension |
241 */ | 215 */ |
242 _addSettingUI(extension) { | 216 _addSettingUI(extension) { |
243 var descriptor = extension.descriptor(); | 217 var descriptor = extension.descriptor(); |
244 var sectionName = descriptor['category'] || ''; | 218 var sectionName = descriptor['category'] || ''; |
245 extension.instance().then(appendCustomSetting.bind(this)); | 219 extension.instance().then(appendCustomSetting.bind(this)); |
246 | 220 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 return; | 372 return; |
399 var settings = extension.descriptor()['settings']; | 373 var settings = extension.descriptor()['settings']; |
400 if (settings && settings.indexOf(setting.name) !== -1) { | 374 if (settings && settings.indexOf(setting.name) !== -1) { |
401 InspectorFrontendHost.bringToFront(); | 375 InspectorFrontendHost.bringToFront(); |
402 Settings.SettingsScreen._showSettingsScreen(extension.descriptor()['id']
); | 376 Settings.SettingsScreen._showSettingsScreen(extension.descriptor()['id']
); |
403 success = true; | 377 success = true; |
404 } | 378 } |
405 } | 379 } |
406 } | 380 } |
407 }; | 381 }; |
OLD | NEW |