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

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

Issue 477133004: Printe Preview: add 'More/less options' button and make non-essential sections collapsible (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Print Preview UI tests adjusted. Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
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 4
5 cr.define('print_preview', function() { 5 cr.define('print_preview', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * Encapsulates all settings and logic related to the media size selection UI. 9 * Encapsulates all settings and logic related to the media size selection UI.
10 * @param {!print_preview.ticket_items.MediaSize} ticketItem Used to read and 10 * @param {!print_preview.ticket_items.MediaSize} ticketItem Used to read and
11 * write the media size ticket item. 11 * write the media size ticket item.
12 * @constructor 12 * @constructor
13 * @extends {print_preview.Component} 13 * @extends {print_preview.SettingsSection}
14 */ 14 */
15 function MediaSizeSettings(ticketItem) { 15 function MediaSizeSettings(ticketItem) {
16 print_preview.Component.call(this); 16 print_preview.SettingsSection.call(this);
17 17
18 /** @private {!print_preview.ticket_items.MediaSize} */ 18 /** @private {!print_preview.ticket_items.MediaSize} */
19 this.ticketItem_ = ticketItem; 19 this.ticketItem_ = ticketItem;
20 }; 20 };
21 21
22 MediaSizeSettings.prototype = { 22 MediaSizeSettings.prototype = {
23 __proto__: print_preview.Component.prototype, 23 __proto__: print_preview.SettingsSection.prototype,
24 24
25 /** @param {boolean} isEnabled Whether this component is enabled. */ 25 /** @override */
26 isAvailable: function() {
27 return this.ticketItem_.isCapabilityAvailable();
28 },
29
30 /** @override */
31 hasCollapsibleContent: function() {
32 return this.isAvailable();
33 },
34
35 /** @override */
26 set isEnabled(isEnabled) { 36 set isEnabled(isEnabled) {
27 this.select_.disabled = !isEnabled; 37 this.select_.disabled = !isEnabled;
28 }, 38 },
29 39
30 /** @override */ 40 /** @override */
31 enterDocument: function() { 41 enterDocument: function() {
32 print_preview.Component.prototype.enterDocument.call(this); 42 print_preview.SettingsSection.prototype.enterDocument.call(this);
33 fadeOutOption(this.getElement(), true);
34 this.tracker.add(this.select_, 'change', this.onSelectChange_.bind(this)); 43 this.tracker.add(this.select_, 'change', this.onSelectChange_.bind(this));
35 this.tracker.add( 44 this.tracker.add(
36 this.ticketItem_, 45 this.ticketItem_,
37 print_preview.ticket_items.TicketItem.EventType.CHANGE, 46 print_preview.ticket_items.TicketItem.EventType.CHANGE,
38 this.onTicketItemChange_.bind(this)); 47 this.onTicketItemChange_.bind(this));
39 }, 48 },
40 49
41 /** 50 /**
42 * @return {HTMLSelectElement} Select element containing media size options. 51 * @return {HTMLSelectElement} Select element containing media size options.
43 * @private 52 * @private
44 */ 53 */
45 get select_() { 54 get select_() {
46 return this.getElement().getElementsByClassName( 55 return this.getElement().getElementsByClassName(
47 'media-size-settings-select')[0]; 56 'media-size-settings-select')[0];
48 }, 57 },
49 58
50 /** 59 /**
51 * Makes sure the content of the select element matches the capabilities of 60 * Makes sure the content of the select element matches the capabilities of
52 * the destination. 61 * the destination.
53 * @private 62 * @private
54 */ 63 */
55 updateSelect_: function() { 64 updateSelect_: function() {
56 var select = this.select_; 65 var select = this.select_;
57 if (!this.ticketItem_.isCapabilityAvailable()) { 66 if (!this.isAvailable()) {
58 select.innerHTML = ''; 67 select.innerHTML = '';
59 return; 68 return;
60 } 69 }
61 // Should the select content be updated? 70 // Should the select content be updated?
62 var sameContent = 71 var sameContent =
63 this.ticketItem_.capability.option.length == select.length && 72 this.ticketItem_.capability.option.length == select.length &&
64 this.ticketItem_.capability.option.every(function(option, index) { 73 this.ticketItem_.capability.option.every(function(option, index) {
65 return select.options[index].value == JSON.stringify(option); 74 return select.options[index].value == JSON.stringify(option);
66 }); 75 });
67 var indexToSelect = select.selectedIndex; 76 var indexToSelect = select.selectedIndex;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 var mediaSize = JSON.parse(select.options[select.selectedIndex].value); 127 var mediaSize = JSON.parse(select.options[select.selectedIndex].value);
119 this.ticketItem_.updateValue(mediaSize); 128 this.ticketItem_.updateValue(mediaSize);
120 }, 129 },
121 130
122 /** 131 /**
123 * Called when the print ticket store changes. Selects the corresponding 132 * Called when the print ticket store changes. Selects the corresponding
124 * select option. 133 * select option.
125 * @private 134 * @private
126 */ 135 */
127 onTicketItemChange_: function() { 136 onTicketItemChange_: function() {
128 if (this.ticketItem_.isCapabilityAvailable()) { 137 this.updateSelect_();
129 this.updateSelect_(); 138 this.updateUiStateInternal();
130 fadeInOption(this.getElement());
131 } else {
132 fadeOutOption(this.getElement());
133 }
134 } 139 }
135 }; 140 };
136 141
137 // Export 142 // Export
138 return { 143 return {
139 MediaSizeSettings: MediaSizeSettings 144 MediaSizeSettings: MediaSizeSettings
140 }; 145 };
141 }); 146 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698