OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 /** |
| 5 * Specifies a custom vendor capability. |
| 6 * @typedef {{ |
| 7 * id: (string), |
| 8 * display_name: (string), |
| 9 * localized_display_name: (string | undefined), |
| 10 * type: (string), |
| 11 * select_cap: ({ |
| 12 * option: (Array<{ |
| 13 * display_name: (string), |
| 14 * type: (string | undefined), |
| 15 * value: (number | string | boolean), |
| 16 * is_default: (boolean | undefined) |
| 17 * }>|undefined) |
| 18 * }|undefined) |
| 19 * }} |
| 20 */ |
| 21 print_preview.VendorCapability; |
4 | 22 |
5 cr.define('print_preview', function() { | 23 cr.define('print_preview', function() { |
6 'use strict'; | 24 'use strict'; |
7 | 25 |
8 /** | 26 /** |
9 * Component that renders a destination item in a destination list. | 27 * Component that renders a destination item in a destination list. |
10 * @param {!cr.EventTarget} eventTarget Event target to dispatch selection | |
11 * events to. | |
12 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the | 28 * @param {!print_preview.PrintTicketStore} printTicketStore Contains the |
13 * print ticket to print. | 29 * print ticket to print. |
14 * @param {!Object} capability Capability to render. | 30 * @param {!print_preview.VendorCapability} capability Capability to render. |
15 * @constructor | 31 * @constructor |
16 * @extends {print_preview.Component} | 32 * @extends {print_preview.Component} |
17 */ | 33 */ |
18 function AdvancedSettingsItem(eventTarget, printTicketStore, capability) { | 34 function AdvancedSettingsItem(printTicketStore, capability) { |
19 print_preview.Component.call(this); | 35 print_preview.Component.call(this); |
20 | 36 |
21 /** | 37 /** |
22 * Event target to dispatch selection events to. | |
23 * @private {!cr.EventTarget} | |
24 */ | |
25 this.eventTarget_ = eventTarget; | |
26 | |
27 /** | |
28 * Contains the print ticket to print. | 38 * Contains the print ticket to print. |
29 * @private {!print_preview.PrintTicketStore} | 39 * @private {!print_preview.PrintTicketStore} |
30 */ | 40 */ |
31 this.printTicketStore_ = printTicketStore; | 41 this.printTicketStore_ = printTicketStore; |
32 | 42 |
33 /** | 43 /** |
34 * Capability this component renders. | 44 * Capability this component renders. |
35 * @private {!Object} | 45 * @private {!print_preview.VendorCapability} |
36 */ | 46 */ |
37 this.capability_ = capability; | 47 this.capability_ = capability; |
38 | 48 |
39 /** | 49 /** |
40 * Value selected by user. {@code null}, if user has not changed the default | 50 * Value selected by user. {@code null}, if user has not changed the default |
41 * value yet (still, the value can be the default one, if it is what user | 51 * value yet (still, the value can be the default one, if it is what user |
42 * selected). | 52 * selected). |
43 * @private {?string} | 53 * @private {?string} |
44 */ | 54 */ |
45 this.selectedValue_ = null; | 55 this.selectedValue_ = null; |
46 | 56 |
47 /** | 57 /** |
48 * Active filter query. | 58 * Active filter query. |
49 * @private {RegExp} | 59 * @private {RegExp} |
50 */ | 60 */ |
51 this.query_ = null; | 61 this.query_ = null; |
52 | 62 |
53 /** | 63 /** |
54 * Search hint for the control. | 64 * Search hint for the control. |
55 * @private {print_preview.SearchBubble} | 65 * @private {print_preview.SearchBubble} |
56 */ | 66 */ |
57 this.searchBubble_ = null; | 67 this.searchBubble_ = null; |
58 | 68 |
59 /** @private {!EventTracker} */ | 69 /** @private {!EventTracker} */ |
60 this.tracker_ = new EventTracker(); | 70 this.tracker_ = new EventTracker(); |
61 }; | 71 } |
62 | 72 |
63 AdvancedSettingsItem.prototype = { | 73 AdvancedSettingsItem.prototype = { |
64 __proto__: print_preview.Component.prototype, | 74 __proto__: print_preview.Component.prototype, |
65 | 75 |
66 /** @override */ | 76 /** @override */ |
67 createDom: function() { | 77 createDom: function() { |
68 this.setElementInternal(this.cloneTemplateInternal( | 78 this.setElementInternal(this.cloneTemplateInternal( |
69 'advanced-settings-item-template')); | 79 'advanced-settings-item-template')); |
70 | 80 |
71 this.tracker_.add( | 81 this.tracker_.add( |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 updateSearchQuery: function(query) { | 115 updateSearchQuery: function(query) { |
106 this.query_ = query; | 116 this.query_ = query; |
107 this.renderCapability_(); | 117 this.renderCapability_(); |
108 }, | 118 }, |
109 | 119 |
110 get searchBubbleShown() { | 120 get searchBubbleShown() { |
111 return getIsVisible(this.getElement()) && !!this.searchBubble_; | 121 return getIsVisible(this.getElement()) && !!this.searchBubble_; |
112 }, | 122 }, |
113 | 123 |
114 /** | 124 /** |
115 * @return {HTMLSelectElement} Select element. | 125 * @return {!HTMLSelectElement} Select element. |
116 * @private | 126 * @private |
117 */ | 127 */ |
118 get select_() { | 128 get select_() { |
119 return this.getChildElement( | 129 return /** @type {!HTMLSelectElement} */ ( |
120 '.advanced-settings-item-value-select-control'); | 130 this.getChildElement('.advanced-settings-item-value-select-control')); |
121 }, | 131 }, |
122 | 132 |
123 /** | 133 /** |
124 * @return {HTMLSelectElement} Text element. | 134 * @return {!HTMLSelectElement} Text element. |
125 * @private | 135 * @private |
126 */ | 136 */ |
127 get text_() { | 137 get text_() { |
128 return this.getChildElement('.advanced-settings-item-value-text-control'); | 138 return /** @type {!HTMLSelectElement} */( |
| 139 this.getChildElement('.advanced-settings-item-value-text-control')); |
129 }, | 140 }, |
130 | 141 |
131 /** | 142 /** |
132 * Called when the select element value is changed. | 143 * Called when the select element value is changed. |
133 * @private | 144 * @private |
134 */ | 145 */ |
135 onSelectChange_: function() { | 146 onSelectChange_: function() { |
136 this.selectedValue_ = this.select_.value; | 147 this.selectedValue_ = this.select_.value; |
137 }, | 148 }, |
138 | 149 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 this.initializeSelectValue_(); | 260 this.initializeSelectValue_(); |
250 else | 261 else |
251 this.initializeTextValue_(); | 262 this.initializeTextValue_(); |
252 }, | 263 }, |
253 | 264 |
254 /** | 265 /** |
255 * Initializes the select element. | 266 * Initializes the select element. |
256 * @private | 267 * @private |
257 */ | 268 */ |
258 initializeSelectValue_: function() { | 269 initializeSelectValue_: function() { |
259 setIsVisible( | 270 setIsVisible(assert(this.getChildElement( |
260 this.getChildElement('.advanced-settings-item-value-select'), true); | 271 '.advanced-settings-item-value-select')), true); |
261 var selectEl = this.select_; | 272 var selectEl = this.select_; |
262 var indexToSelect = 0; | 273 var indexToSelect = 0; |
263 this.capability_.select_cap.option.forEach(function(option, index) { | 274 this.capability_.select_cap.option.forEach(function(option, index) { |
264 var item = document.createElement('option'); | 275 var item = document.createElement('option'); |
265 item.text = this.getEntityDisplayName_(option); | 276 item.text = this.getEntityDisplayName_(option); |
266 item.value = option.value; | 277 item.value = option.value; |
267 if (option.is_default) | 278 if (option.is_default) |
268 indexToSelect = index; | 279 indexToSelect = index; |
269 selectEl.appendChild(item); | 280 selectEl.appendChild(item); |
270 }, this); | 281 }, this); |
271 for (var i = 0, option; option = selectEl.options[i]; i++) { | 282 for (var i = 0, option; (option = selectEl.options[i]); i++) { |
272 if (option.value == this.selectedValue_) { | 283 if (option.value == this.selectedValue_) { |
273 indexToSelect = i; | 284 indexToSelect = i; |
274 break; | 285 break; |
275 } | 286 } |
276 } | 287 } |
277 selectEl.selectedIndex = indexToSelect; | 288 selectEl.selectedIndex = indexToSelect; |
278 }, | 289 }, |
279 | 290 |
280 /** | 291 /** |
281 * Initializes the text element. | 292 * Initializes the text element. |
282 * @private | 293 * @private |
283 */ | 294 */ |
284 initializeTextValue_: function() { | 295 initializeTextValue_: function() { |
285 setIsVisible( | 296 setIsVisible(assert(this.getChildElement( |
286 this.getChildElement('.advanced-settings-item-value-text'), true); | 297 '.advanced-settings-item-value-text')), true); |
287 | 298 |
288 var defaultValue = null; | 299 var defaultValue = null; |
289 if (this.capability_.type == 'TYPED_VALUE' && | 300 if (this.capability_.type == 'TYPED_VALUE' && |
290 this.capability_.typed_value_cap) { | 301 this.capability_.typed_value_cap) { |
291 defaultValue = this.capability_.typed_value_cap.default || null; | 302 defaultValue = this.capability_.typed_value_cap.default || null; |
292 } else if (this.capability_.type == 'RANGE' && | 303 } else if (this.capability_.type == 'RANGE' && |
293 this.capability_.range_cap) { | 304 this.capability_.range_cap) { |
294 defaultValue = this.capability_.range_cap.default || null; | 305 defaultValue = this.capability_.range_cap.default || null; |
295 } | 306 } |
296 | 307 |
(...skipping 21 matching lines...) Expand all Loading... |
318 } | 329 } |
319 }); | 330 }); |
320 } | 331 } |
321 }; | 332 }; |
322 | 333 |
323 // Export | 334 // Export |
324 return { | 335 return { |
325 AdvancedSettingsItem: AdvancedSettingsItem | 336 AdvancedSettingsItem: AdvancedSettingsItem |
326 }; | 337 }; |
327 }); | 338 }); |
OLD | NEW |