| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| cr.define('print_preview', function() { |
| 'use strict'; |
| |
| /** |
| * Creates a LayoutSettings object. This object encapsulates all settings and |
| * logic related to layout mode (portrait/landscape). |
| * @param {!print_preview.ticket_items.Landscape} landscapeTicketItem Used to |
| * get the layout written to the print ticket. |
| * @constructor |
| * @extends {print_preview.SettingsSection} |
| */ |
| function LayoutSettings(landscapeTicketItem) { |
| print_preview.SettingsSection.call(this); |
| |
| /** |
| * Used to get the layout written to the print ticket. |
| * @type {!print_preview.ticket_items.Landscape} |
| * @private |
| */ |
| this.landscapeTicketItem_ = landscapeTicketItem; |
| }; |
| |
| LayoutSettings.prototype = { |
| __proto__: print_preview.SettingsSection.prototype, |
| |
| /** @override */ |
| isAvailable: function() { |
| return this.landscapeTicketItem_.isCapabilityAvailable(); |
| }, |
| |
| /** @override */ |
| hasCollapsibleContent: function() { |
| return false; |
| }, |
| |
| /** @override */ |
| set isEnabled(isEnabled) { |
| this.select_.disabled = !isEnabled; |
| }, |
| |
| /** @override */ |
| enterDocument: function() { |
| print_preview.SettingsSection.prototype.enterDocument.call(this); |
| this.tracker.add( |
| this.select_, 'change', this.onSelectChange_.bind(this)); |
| this.tracker.add( |
| this.landscapeTicketItem_, |
| print_preview.ticket_items.TicketItem.EventType.CHANGE, |
| this.onLandscapeTicketItemChange_.bind(this)); |
| }, |
| |
| /** |
| * Called when the select element is changed. Updates the print ticket |
| * layout selection. |
| * @private |
| */ |
| onSelectChange_: function() { |
| var select = this.select_; |
| var isLandscape = |
| select.options[select.selectedIndex].value == 'landscape'; |
| this.landscapeTicketItem_.updateValue(isLandscape); |
| }, |
| |
| /** |
| * @return {HTMLSelectElement} Select element containing the layout options. |
| * @private |
| */ |
| get select_() { |
| return this.getChildElement('.layout-settings-select'); |
| }, |
| |
| /** |
| * Called when the print ticket store changes state. Updates the state of |
| * the radio buttons and hides the setting if necessary. |
| * @private |
| */ |
| onLandscapeTicketItemChange_: function() { |
| if (this.isAvailable()) { |
| var select = this.select_; |
| var valueToSelect = |
| this.landscapeTicketItem_.getValue() ? 'landscape' : 'portrait'; |
| for (var i = 0; i < select.options.length; i++) { |
| if (select.options[i].value == valueToSelect) { |
| select.selectedIndex = i; |
| break; |
| } |
| } |
| } |
| this.updateUiStateInternal(); |
| } |
| }; |
| |
| // Export |
| return { |
| LayoutSettings: LayoutSettings |
| }; |
| }); |