Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: chrome/browser/resources/print_preview/settings/layout_settings.js

Issue 535073005: Convert Print Preview layout and color radio buttons to select elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adapt browser_tests to the controls change. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 * Creates a LayoutSettings object. This object encapsulates all settings and 9 * Creates a LayoutSettings object. This object encapsulates all settings and
10 * logic related to layout mode (portrait/landscape). 10 * logic related to layout mode (portrait/landscape).
11 * @param {!print_preview.ticket_items.Landscape} landscapeTicketItem Used to 11 * @param {!print_preview.ticket_items.Landscape} landscapeTicketItem Used to
12 * get the layout written to the print ticket. 12 * get the layout written to the print ticket.
13 * @constructor 13 * @constructor
14 * @extends {print_preview.SettingsSection} 14 * @extends {print_preview.SettingsSection}
15 */ 15 */
16 function LayoutSettings(landscapeTicketItem) { 16 function LayoutSettings(landscapeTicketItem) {
17 print_preview.SettingsSection.call(this); 17 print_preview.SettingsSection.call(this);
18 18
19 /** 19 /**
20 * Used to get the layout written to the print ticket. 20 * Used to get the layout written to the print ticket.
21 * @type {!print_preview.ticket_items.Landscape} 21 * @type {!print_preview.ticket_items.Landscape}
22 * @private 22 * @private
23 */ 23 */
24 this.landscapeTicketItem_ = landscapeTicketItem; 24 this.landscapeTicketItem_ = landscapeTicketItem;
25 }; 25 };
26 26
27 /**
28 * CSS classes used by the layout settings.
29 * @enum {string}
30 * @private
31 */
32 LayoutSettings.Classes_ = {
33 LANDSCAPE_RADIO: 'layout-settings-landscape-radio',
34 PORTRAIT_RADIO: 'layout-settings-portrait-radio'
35 };
36
37 LayoutSettings.prototype = { 27 LayoutSettings.prototype = {
38 __proto__: print_preview.SettingsSection.prototype, 28 __proto__: print_preview.SettingsSection.prototype,
39 29
40 /** @override */ 30 /** @override */
41 isAvailable: function() { 31 isAvailable: function() {
42 return this.landscapeTicketItem_.isCapabilityAvailable(); 32 return this.landscapeTicketItem_.isCapabilityAvailable();
43 }, 33 },
44 34
45 /** @override */ 35 /** @override */
46 hasCollapsibleContent: function() { 36 hasCollapsibleContent: function() {
47 return false; 37 return false;
48 }, 38 },
49 39
50 /** @override */ 40 /** @override */
51 set isEnabled(isEnabled) { 41 set isEnabled(isEnabled) {
52 this.landscapeRadioButton_.disabled = !isEnabled; 42 this.select_.disabled = !isEnabled;
53 this.portraitRadioButton_.disabled = !isEnabled;
54 }, 43 },
55 44
56 /** @override */ 45 /** @override */
57 enterDocument: function() { 46 enterDocument: function() {
58 print_preview.SettingsSection.prototype.enterDocument.call(this); 47 print_preview.SettingsSection.prototype.enterDocument.call(this);
59 this.tracker.add( 48 this.tracker.add(
60 this.portraitRadioButton_, 49 this.select_, 'change', this.onSelectChange_.bind(this));
61 'click',
62 this.onLayoutButtonClick_.bind(this));
63 this.tracker.add(
64 this.landscapeRadioButton_,
65 'click',
66 this.onLayoutButtonClick_.bind(this));
67 this.tracker.add( 50 this.tracker.add(
68 this.landscapeTicketItem_, 51 this.landscapeTicketItem_,
69 print_preview.ticket_items.TicketItem.EventType.CHANGE, 52 print_preview.ticket_items.TicketItem.EventType.CHANGE,
70 this.onLandscapeTicketItemChange_.bind(this)); 53 this.onLandscapeTicketItemChange_.bind(this));
71 }, 54 },
72 55
73 /** 56 /**
74 * @return {HTMLInputElement} The portrait orientation radio button. 57 * Called when the select element is changed. Updates the print ticket
58 * layout selection.
75 * @private 59 * @private
76 */ 60 */
77 get portraitRadioButton_() { 61 onSelectChange_: function() {
78 return this.getElement().getElementsByClassName( 62 var select = this.select_;
79 LayoutSettings.Classes_.PORTRAIT_RADIO)[0]; 63 var isLandscape =
64 select.options[select.selectedIndex].value == 'landscape';
65 this.landscapeTicketItem_.updateValue(isLandscape);
80 }, 66 },
81 67
82 /** 68 /**
83 * @return {HTMLInputElement} The landscape orientation radio button. 69 * @return {HTMLSelectElement} Select element containing the layout options.
84 * @private 70 * @private
85 */ 71 */
86 get landscapeRadioButton_() { 72 get select_() {
87 return this.getElement().getElementsByClassName( 73 return this.getChildElement('.layout-settings-select');
88 LayoutSettings.Classes_.LANDSCAPE_RADIO)[0];
89 }, 74 },
90 75
91 /** 76 /**
92 * Called when one of the radio buttons is clicked. Updates the print ticket
93 * store.
94 * @private
95 */
96 onLayoutButtonClick_: function() {
97 this.landscapeTicketItem_.updateValue(this.landscapeRadioButton_.checked);
98 },
99
100 /**
101 * Called when the print ticket store changes state. Updates the state of 77 * Called when the print ticket store changes state. Updates the state of
102 * the radio buttons and hides the setting if necessary. 78 * the radio buttons and hides the setting if necessary.
103 * @private 79 * @private
104 */ 80 */
105 onLandscapeTicketItemChange_: function() { 81 onLandscapeTicketItemChange_: function() {
106 if (this.isAvailable()) { 82 if (this.isAvailable()) {
107 var isLandscapeEnabled = this.landscapeTicketItem_.getValue(); 83 var select = this.select_;
108 this.portraitRadioButton_.checked = !isLandscapeEnabled; 84 var valueToSelect =
109 this.landscapeRadioButton_.checked = isLandscapeEnabled; 85 this.landscapeTicketItem_.getValue() ? 'landscape' : 'portrait';
86 for (var i = 0; i < select.options.length; i++) {
87 if (select.options[i].value == valueToSelect) {
88 select.selectedIndex = i;
89 break;
90 }
91 }
110 } 92 }
111 this.updateUiStateInternal(); 93 this.updateUiStateInternal();
112 } 94 }
113 }; 95 };
114 96
115 // Export 97 // Export
116 return { 98 return {
117 LayoutSettings: LayoutSettings 99 LayoutSettings: LayoutSettings
118 }; 100 };
119 }); 101 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/print_preview/settings/layout_settings.html ('k') | chrome/test/data/webui/print_preview.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698