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
3 // found in the LICENSE file.
5 cr.define('print_preview', function() {
9 * Creates a MarginSettings object. This object encapsulates all settings and
10 * logic related to the margins mode.
11 * @param {!print_preview.ticket_items.MarginsType} marginsTypeTicketItem Used
12 * to read and write the margins type ticket item.
14 * @extends {print_preview.Component}
16 function MarginSettings(marginsTypeTicketItem) {
17 print_preview.Component.call(this);
20 * Used to read and write the margins type ticket item.
21 * @type {!print_preview.ticket_items.MarginsType}
24 this.marginsTypeTicketItem_ = marginsTypeTicketItem;
28 * CSS classes used by the margin settings component.
32 MarginSettings.Classes_ = {
33 SELECT: 'margin-settings-select'
36 MarginSettings.prototype = {
37 __proto__: print_preview.Component.prototype,
39 /** @param {boolean} isEnabled Whether this component is enabled. */
40 set isEnabled(isEnabled) {
41 this.select_.disabled = !isEnabled;
45 enterDocument: function() {
46 print_preview.Component.prototype.enterDocument.call(this);
48 this.select_, 'change', this.onSelectChange_.bind(this));
50 this.marginsTypeTicketItem_,
51 print_preview.ticket_items.TicketItem.EventType.CHANGE,
52 this.onMarginsTypeTicketItemChange_.bind(this));
56 * @return {HTMLSelectElement} Select element containing the margin options.
60 return this.getElement().getElementsByClassName(
61 MarginSettings.Classes_.SELECT)[0];
65 * Called when the select element is changed. Updates the print ticket
69 onSelectChange_: function() {
70 var select = this.select_;
72 /** @type {!print_preview.ticket_items.MarginsType.Value} */ (
73 select.selectedIndex);
74 this.marginsTypeTicketItem_.updateValue(marginsType);
78 * Called when the print ticket store changes. Selects the corresponding
82 onMarginsTypeTicketItemChange_: function() {
83 if (this.marginsTypeTicketItem_.isCapabilityAvailable()) {
84 var select = this.select_;
85 var marginsType = this.marginsTypeTicketItem_.getValue();
86 var selectedMarginsType =
87 /** @type {!print_preview.ticket_items.MarginsType.Value} */ (
88 select.selectedIndex);
89 if (marginsType != selectedMarginsType) {
90 select.options[selectedMarginsType].selected = false;
91 select.options[marginsType].selected = true;
93 fadeInOption(this.getElement());
95 fadeOutOption(this.getElement());
102 MarginSettings: MarginSettings