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

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

Issue 7550022: Print Preview: Fixing behavior of event listeners. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing comments Created 9 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 * @constructor 11 * @constructor
12 */ 12 */
13 function LayoutSettings() { 13 function LayoutSettings() {
14 this.layoutOption_ = $('layout-option'); 14 this.layoutOption_ = $('layout-option');
15 this.portraitRadioButton_ = $('portrait'); 15 this.portraitRadioButton_ = $('portrait');
16 this.landscapeRadioButton_ = $('landscape'); 16 this.landscapeRadioButton_ = $('landscape');
17 this.wasLandscape_ = false;
18 this.updateState();
17 } 19 }
18 20
19 cr.addSingletonGetter(LayoutSettings); 21 cr.addSingletonGetter(LayoutSettings);
20 22
21 LayoutSettings.prototype = { 23 LayoutSettings.prototype = {
22 /** 24 /**
23 * The radio button corresponding to the portrait option. 25 * The radio button corresponding to the portrait option.
24 * @type {HTMLInputElement} 26 * @type {HTMLInputElement}
25 */ 27 */
26 get portraitRadioButton() { 28 get portraitRadioButton() {
(...skipping 10 matching lines...) Expand all
37 39
38 /** 40 /**
39 * @return {boolean} true if |this.landscapeRadioButton_| is checked, false 41 * @return {boolean} true if |this.landscapeRadioButton_| is checked, false
40 * if not. 42 * if not.
41 */ 43 */
42 isLandscape: function() { 44 isLandscape: function() {
43 return this.landscapeRadioButton_.checked; 45 return this.landscapeRadioButton_.checked;
44 }, 46 },
45 47
46 /** 48 /**
49 * @return {boolean} true if the chosen layout mode has changed since last
50 * time the state was updated.
51 */
52 hasChanged_ : function() {
53 return this.isLandscape() != this.wasLandscape_;
54 },
55
56 /**
57 * Saves the currently selected layout mode. Used in |this.hasChanged_|.
58 */
59 updateState : function() {
60 this.wasLandscape_ = this.isLandscape();
61 },
62
63 /**
47 * Adding listeners to all layout related controls. The listeners take care 64 * Adding listeners to all layout related controls. The listeners take care
48 * of altering their behavior depending on |hasPendingPreviewRequest|. 65 * of altering their behavior depending on |hasPendingPreviewRequest|.
49 */ 66 */
50 addEventListeners: function() { 67 addEventListeners: function() {
51 this.landscapeRadioButton_.onclick = function() { 68 this.landscapeRadioButton_.onclick = this.onLayoutButtonClick_.bind(this);
52 if (!hasPendingPreviewRequest) 69 this.portraitRadioButton_.onclick = this.onLayoutButtonClick_.bind(this);
53 this.onLayoutButtonClick_();
54 }.bind(this);
55 this.portraitRadioButton_.onclick = function() {
56 if (!hasPendingPreviewRequest)
57 this.onLayoutButtonClick_();
58 }.bind(this);
59 document.addEventListener('PDFLoaded', this.onPDFLoaded_.bind(this)); 70 document.addEventListener('PDFLoaded', this.onPDFLoaded_.bind(this));
60 document.addEventListener('printerCapabilitiesUpdated', 71 document.addEventListener('printerCapabilitiesUpdated',
61 this.onPrinterCapabilitiesUpdated_.bind(this)); 72 this.onPrinterCapabilitiesUpdated_.bind(this));
62 }, 73 },
63 74
64 /** 75 /**
65 * Listener triggered when a printerCapabilitiesUpdated event occurs. 76 * Listener triggered when a printerCapabilitiesUpdated event occurs.
66 * @private 77 * @private
67 */ 78 */
68 onPrinterCapabilitiesUpdated_: function(e) { 79 onPrinterCapabilitiesUpdated_: function(e) {
69 if (e.printerCapabilities.disableLandscapeOption) 80 if (e.printerCapabilities.disableLandscapeOption)
70 this.fadeInOut_(e.printerCapabilities.disableLandscapeOption); 81 this.fadeInOut_(e.printerCapabilities.disableLandscapeOption);
71 }, 82 },
72 83
73 /** 84 /**
74 * Listener executing when |this.landscapeRadioButton_| or 85 * Listener executing when |this.landscapeRadioButton_| or
75 * |this.portraitRadioButton_| is clicked. 86 * |this.portraitRadioButton_| is clicked.
76 * @private 87 * @private
77 */ 88 */
78 onLayoutButtonClick_: function() { 89 onLayoutButtonClick_: function() {
79 // If the chosen layout is same as before, nothing needs to be done. 90 // If the chosen layout is same as before, nothing needs to be done.
80 if (printSettings.isLandscape == this.isLandscape()) 91 if (this.hasChanged_())
81 return; 92 setDefaultValuesAndRegeneratePreview();
82 setDefaultValuesAndRegeneratePreview();
83 }, 93 },
84 94
85 /** 95 /**
86 * Listener executing when a PDFLoaded event occurs. 96 * Listener executing when a PDFLoaded event occurs.
87 * @private 97 * @private
88 */ 98 */
89 onPDFLoaded_: function() { 99 onPDFLoaded_: function() {
90 if (!previewModifiable) 100 this.fadeInOut_(!previewModifiable);
91 fadeOutElement(this.layoutOption_);
92 }, 101 },
93 102
94 /** 103 /**
95 * @param {boolean} fadeOut True if |this.layoutOption_| should be faded 104 * @param {boolean} fadeOut True if |this.layoutOption_| should be faded
96 * out, false if it should be faded in. 105 * out, false if it should be faded in.
97 * @private 106 * @private
98 */ 107 */
99 fadeInOut_: function(fadeOut) { 108 fadeInOut_: function(fadeOut) {
100 fadeOut ? fadeOutElement(this.layoutOption_) : 109 fadeOut ? fadeOutElement(this.layoutOption_) :
101 fadeInElement(this.layoutOption_); 110 fadeInElement(this.layoutOption_);
102 } 111 }
103 }; 112 };
104 113
105 return { 114 return {
106 LayoutSettings: LayoutSettings, 115 LayoutSettings: LayoutSettings,
107 }; 116 };
108 }); 117 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/print_preview/color_settings.js ('k') | chrome/browser/resources/print_preview/page_settings.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698