OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 4 |
5 cr.define('print_preview', function() { | 5 cr.define('print_preview', function() { |
6 'use strict'; | 6 'use strict'; |
7 | 7 |
8 /** | 8 /** |
9 * UI component that renders checkboxes for various print options. | 9 * UI component that renders checkboxes for various print options. |
10 * @param {!print_preview.ticket_items.Duplex} duplex Duplex ticket item. | 10 * @param {!print_preview.ticket_items.Duplex} duplex Duplex ticket item. |
11 * @param {!print_preview.ticket_items.FitToPage} fitToPage Fit-to-page ticket | 11 * @param {!print_preview.ticket_items.FitToPage} fitToPage Fit-to-page ticket |
12 * item. | 12 * item. |
13 * @param {!print_preview.ticket_items.CssBackground} cssBackground CSS | 13 * @param {!print_preview.ticket_items.CssBackground} cssBackground CSS |
14 * background ticket item. | 14 * background ticket item. |
15 * @param {!print_preview.ticket_items.SelectionOnly} selectionOnly Selection | 15 * @param {!print_preview.ticket_items.SelectionOnly} selectionOnly Selection |
16 * only ticket item. | 16 * only ticket item. |
17 * @param {!print_preview.ticket_items.HeaderFooter} headerFooter Header | 17 * @param {!print_preview.ticket_items.HeaderFooter} headerFooter Header |
18 * footer ticket item. | 18 * footer ticket item. |
19 * @constructor | 19 * @constructor |
20 * @extends {print_preview.Component} | 20 * @extends {print_preview.SettingsSection} |
21 */ | 21 */ |
22 function OtherOptionsSettings( | 22 function OtherOptionsSettings( |
23 duplex, fitToPage, cssBackground, selectionOnly, headerFooter) { | 23 duplex, fitToPage, cssBackground, selectionOnly, headerFooter) { |
24 print_preview.Component.call(this); | 24 print_preview.SettingsSection.call(this); |
25 | 25 |
26 /** | 26 /** |
27 * Duplex ticket item, used to read/write the duplex selection. | 27 * Duplex ticket item, used to read/write the duplex selection. |
28 * @type {!print_preview.ticket_items.Duplex} | 28 * @type {!print_preview.ticket_items.Duplex} |
29 * @private | 29 * @private |
30 */ | 30 */ |
31 this.duplexTicketItem_ = duplex; | 31 this.duplexTicketItem_ = duplex; |
32 | 32 |
33 /** | 33 /** |
34 * Fit-to-page ticket item, used to read/write the fit-to-page selection. | 34 * Fit-to-page ticket item, used to read/write the fit-to-page selection. |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 | 123 |
124 /** | 124 /** |
125 * Print selection only checkbox. | 125 * Print selection only checkbox. |
126 * @type {HTMLInputElement} | 126 * @type {HTMLInputElement} |
127 * @private | 127 * @private |
128 */ | 128 */ |
129 this.selectionOnlyCheckbox_ = null; | 129 this.selectionOnlyCheckbox_ = null; |
130 }; | 130 }; |
131 | 131 |
132 OtherOptionsSettings.prototype = { | 132 OtherOptionsSettings.prototype = { |
133 __proto__: print_preview.Component.prototype, | 133 __proto__: print_preview.SettingsSection.prototype, |
134 | 134 |
135 /** @param {boolean} isEnabled Whether the settings is enabled. */ | 135 /** @override */ |
| 136 isAvailable: function() { |
| 137 return this.headerFooterTicketItem_.isCapabilityAvailable() || |
| 138 this.fitToPageTicketItem_.isCapabilityAvailable() || |
| 139 this.duplexTicketItem_.isCapabilityAvailable() || |
| 140 this.cssBackgroundTicketItem_.isCapabilityAvailable() || |
| 141 this.selectionOnlyTicketItem_.isCapabilityAvailable(); |
| 142 }, |
| 143 |
| 144 /** @override */ |
| 145 hasCollapsibleContent: function() { |
| 146 return this.headerFooterTicketItem_.isCapabilityAvailable() || |
| 147 this.fitToPageTicketItem_.isCapabilityAvailable() || |
| 148 this.cssBackgroundTicketItem_.isCapabilityAvailable() || |
| 149 this.selectionOnlyTicketItem_.isCapabilityAvailable(); |
| 150 }, |
| 151 |
| 152 /** @override */ |
136 set isEnabled(isEnabled) { | 153 set isEnabled(isEnabled) { |
137 this.headerFooterCheckbox_.disabled = !isEnabled; | 154 this.headerFooterCheckbox_.disabled = !isEnabled; |
138 this.fitToPageCheckbox_.disabled = !isEnabled; | 155 this.fitToPageCheckbox_.disabled = !isEnabled; |
139 this.duplexCheckbox_.disabled = !isEnabled; | 156 this.duplexCheckbox_.disabled = !isEnabled; |
140 this.cssBackgroundCheckbox_.disabled = !isEnabled; | 157 this.cssBackgroundCheckbox_.disabled = !isEnabled; |
141 }, | 158 }, |
142 | 159 |
143 /** @override */ | 160 /** @override */ |
144 enterDocument: function() { | 161 enterDocument: function() { |
145 print_preview.Component.prototype.enterDocument.call(this); | 162 print_preview.SettingsSection.prototype.enterDocument.call(this); |
146 fadeOutOption(this.getElement(), true); | |
147 this.tracker.add( | 163 this.tracker.add( |
148 this.headerFooterCheckbox_, | 164 this.headerFooterCheckbox_, |
149 'click', | 165 'click', |
150 this.onHeaderFooterCheckboxClick_.bind(this)); | 166 this.onHeaderFooterCheckboxClick_.bind(this)); |
151 this.tracker.add( | 167 this.tracker.add( |
152 this.fitToPageCheckbox_, | 168 this.fitToPageCheckbox_, |
153 'click', | 169 'click', |
154 this.onFitToPageCheckboxClick_.bind(this)); | 170 this.onFitToPageCheckboxClick_.bind(this)); |
155 this.tracker.add( | 171 this.tracker.add( |
156 this.duplexCheckbox_, | 172 this.duplexCheckbox_, |
(...skipping 24 matching lines...) Expand all Loading... |
181 print_preview.ticket_items.TicketItem.EventType.CHANGE, | 197 print_preview.ticket_items.TicketItem.EventType.CHANGE, |
182 this.onSelectionOnlyChange_.bind(this)); | 198 this.onSelectionOnlyChange_.bind(this)); |
183 this.tracker.add( | 199 this.tracker.add( |
184 this.headerFooterTicketItem_, | 200 this.headerFooterTicketItem_, |
185 print_preview.ticket_items.TicketItem.EventType.CHANGE, | 201 print_preview.ticket_items.TicketItem.EventType.CHANGE, |
186 this.onHeaderFooterChange_.bind(this)); | 202 this.onHeaderFooterChange_.bind(this)); |
187 }, | 203 }, |
188 | 204 |
189 /** @override */ | 205 /** @override */ |
190 exitDocument: function() { | 206 exitDocument: function() { |
191 print_preview.Component.prototype.exitDocument.call(this); | 207 print_preview.SettingsSection.prototype.exitDocument.call(this); |
192 this.headerFooterContainer_ = null; | 208 this.headerFooterContainer_ = null; |
193 this.headerFooterCheckbox_ = null; | 209 this.headerFooterCheckbox_ = null; |
194 this.fitToPageContainer_ = null; | 210 this.fitToPageContainer_ = null; |
195 this.fitToPageCheckbox_ = null; | 211 this.fitToPageCheckbox_ = null; |
196 this.duplexContainer_ = null; | 212 this.duplexContainer_ = null; |
197 this.duplexCheckbox_ = null; | 213 this.duplexCheckbox_ = null; |
198 this.cssBackgroundContainer_ = null; | 214 this.cssBackgroundContainer_ = null; |
199 this.cssBackgroundCheckbox_ = null; | 215 this.cssBackgroundCheckbox_ = null; |
200 this.selectionOnlyContainer_ = null; | 216 this.selectionOnlyContainer_ = null; |
201 this.selectionOnlyCheckbox_ = null; | 217 this.selectionOnlyCheckbox_ = null; |
(...skipping 16 matching lines...) Expand all Loading... |
218 this.cssBackgroundContainer_ = this.getElement().querySelector( | 234 this.cssBackgroundContainer_ = this.getElement().querySelector( |
219 '.css-background-container'); | 235 '.css-background-container'); |
220 this.cssBackgroundCheckbox_ = this.cssBackgroundContainer_.querySelector( | 236 this.cssBackgroundCheckbox_ = this.cssBackgroundContainer_.querySelector( |
221 '.css-background-checkbox'); | 237 '.css-background-checkbox'); |
222 this.selectionOnlyContainer_ = this.getElement().querySelector( | 238 this.selectionOnlyContainer_ = this.getElement().querySelector( |
223 '.selection-only-container'); | 239 '.selection-only-container'); |
224 this.selectionOnlyCheckbox_ = this.selectionOnlyContainer_.querySelector( | 240 this.selectionOnlyCheckbox_ = this.selectionOnlyContainer_.querySelector( |
225 '.selection-only-checkbox'); | 241 '.selection-only-checkbox'); |
226 }, | 242 }, |
227 | 243 |
228 /** | 244 /** @override */ |
229 * Updates the state of the entire other options settings area. | 245 updateUiStateInternal: function() { |
230 * @private | 246 if (this.isAvailable()) { |
231 */ | |
232 updateContainerState_: function() { | |
233 if (this.headerFooterTicketItem_.isCapabilityAvailable() || | |
234 this.fitToPageTicketItem_.isCapabilityAvailable() || | |
235 this.duplexTicketItem_.isCapabilityAvailable() || | |
236 this.cssBackgroundTicketItem_.isCapabilityAvailable() || | |
237 this.selectionOnlyTicketItem_.isCapabilityAvailable()) { | |
238 setIsVisible(this.headerFooterContainer_, | 247 setIsVisible(this.headerFooterContainer_, |
239 this.headerFooterTicketItem_.isCapabilityAvailable()); | 248 this.headerFooterTicketItem_.isCapabilityAvailable() && |
| 249 !this.collapseContent); |
240 setIsVisible(this.fitToPageContainer_, | 250 setIsVisible(this.fitToPageContainer_, |
241 this.fitToPageTicketItem_.isCapabilityAvailable()); | 251 this.fitToPageTicketItem_.isCapabilityAvailable() && |
| 252 !this.collapseContent); |
242 setIsVisible(this.duplexContainer_, | 253 setIsVisible(this.duplexContainer_, |
243 this.duplexTicketItem_.isCapabilityAvailable()); | 254 this.duplexTicketItem_.isCapabilityAvailable()); |
244 setIsVisible(this.cssBackgroundContainer_, | 255 setIsVisible(this.cssBackgroundContainer_, |
245 this.cssBackgroundTicketItem_.isCapabilityAvailable()); | 256 this.cssBackgroundTicketItem_.isCapabilityAvailable() && |
| 257 !this.collapseContent); |
246 setIsVisible(this.selectionOnlyContainer_, | 258 setIsVisible(this.selectionOnlyContainer_, |
247 this.selectionOnlyTicketItem_.isCapabilityAvailable()); | 259 this.selectionOnlyTicketItem_.isCapabilityAvailable() && |
248 fadeInOption(this.getElement()); | 260 !this.collapseContent); |
249 } else { | |
250 fadeOutOption(this.getElement()); | |
251 } | 261 } |
| 262 print_preview.SettingsSection.prototype.updateUiStateInternal.call(this); |
| 263 }, |
| 264 |
| 265 /** @override */ |
| 266 isSectionVisibleInternal: function() { |
| 267 return this.collapseContent ? |
| 268 this.duplexTicketItem_.isCapabilityAvailable() : this.isAvailable(); |
252 }, | 269 }, |
253 | 270 |
254 /** | 271 /** |
255 * Called when the header-footer checkbox is clicked. Updates the print | 272 * Called when the header-footer checkbox is clicked. Updates the print |
256 * ticket. | 273 * ticket. |
257 * @private | 274 * @private |
258 */ | 275 */ |
259 onHeaderFooterCheckboxClick_: function() { | 276 onHeaderFooterCheckboxClick_: function() { |
260 this.headerFooterTicketItem_.updateValue( | 277 this.headerFooterTicketItem_.updateValue( |
261 this.headerFooterCheckbox_.checked); | 278 this.headerFooterCheckbox_.checked); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 this.selectionOnlyCheckbox_.checked); | 315 this.selectionOnlyCheckbox_.checked); |
299 }, | 316 }, |
300 | 317 |
301 /** | 318 /** |
302 * Called when the duplex ticket item has changed. Updates the duplex | 319 * Called when the duplex ticket item has changed. Updates the duplex |
303 * checkbox. | 320 * checkbox. |
304 * @private | 321 * @private |
305 */ | 322 */ |
306 onDuplexChange_: function() { | 323 onDuplexChange_: function() { |
307 this.duplexCheckbox_.checked = this.duplexTicketItem_.getValue(); | 324 this.duplexCheckbox_.checked = this.duplexTicketItem_.getValue(); |
308 this.updateContainerState_(); | 325 this.updateUiStateInternal(); |
309 }, | 326 }, |
310 | 327 |
311 /** | 328 /** |
312 * Called when the fit-to-page ticket item has changed. Updates the | 329 * Called when the fit-to-page ticket item has changed. Updates the |
313 * fit-to-page checkbox. | 330 * fit-to-page checkbox. |
314 * @private | 331 * @private |
315 */ | 332 */ |
316 onFitToPageChange_: function() { | 333 onFitToPageChange_: function() { |
317 this.fitToPageCheckbox_.checked = this.fitToPageTicketItem_.getValue(); | 334 this.fitToPageCheckbox_.checked = this.fitToPageTicketItem_.getValue(); |
318 this.updateContainerState_(); | 335 this.updateUiStateInternal(); |
319 }, | 336 }, |
320 | 337 |
321 /** | 338 /** |
322 * Called when the CSS background ticket item has changed. Updates the | 339 * Called when the CSS background ticket item has changed. Updates the |
323 * CSS background checkbox. | 340 * CSS background checkbox. |
324 * @private | 341 * @private |
325 */ | 342 */ |
326 onCssBackgroundChange_: function() { | 343 onCssBackgroundChange_: function() { |
327 this.cssBackgroundCheckbox_.checked = | 344 this.cssBackgroundCheckbox_.checked = |
328 this.cssBackgroundTicketItem_.getValue(); | 345 this.cssBackgroundTicketItem_.getValue(); |
329 this.updateContainerState_(); | 346 this.updateUiStateInternal(); |
330 }, | 347 }, |
331 | 348 |
332 /** | 349 /** |
333 * Called when the print selection only ticket item has changed. Updates the | 350 * Called when the print selection only ticket item has changed. Updates the |
334 * CSS background checkbox. | 351 * CSS background checkbox. |
335 * @private | 352 * @private |
336 */ | 353 */ |
337 onSelectionOnlyChange_: function() { | 354 onSelectionOnlyChange_: function() { |
338 this.selectionOnlyCheckbox_.checked = | 355 this.selectionOnlyCheckbox_.checked = |
339 this.selectionOnlyTicketItem_.getValue(); | 356 this.selectionOnlyTicketItem_.getValue(); |
340 this.updateContainerState_(); | 357 this.updateUiStateInternal(); |
341 }, | 358 }, |
342 | 359 |
343 /** | 360 /** |
344 * Called when the header-footer ticket item has changed. Updates the | 361 * Called when the header-footer ticket item has changed. Updates the |
345 * header-footer checkbox. | 362 * header-footer checkbox. |
346 * @private | 363 * @private |
347 */ | 364 */ |
348 onHeaderFooterChange_: function() { | 365 onHeaderFooterChange_: function() { |
349 this.headerFooterCheckbox_.checked = | 366 this.headerFooterCheckbox_.checked = |
350 this.headerFooterTicketItem_.getValue(); | 367 this.headerFooterTicketItem_.getValue(); |
351 this.updateContainerState_(); | 368 this.updateUiStateInternal(); |
352 } | 369 } |
353 }; | 370 }; |
354 | 371 |
355 // Export | 372 // Export |
356 return { | 373 return { |
357 OtherOptionsSettings: OtherOptionsSettings | 374 OtherOptionsSettings: OtherOptionsSettings |
358 }; | 375 }; |
359 }); | 376 }); |
OLD | NEW |