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

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

Issue 8345025: Print Preview: Adding support for localized margin units and format. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Localizing units used for margins. Created 9 years, 2 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 'strict'; 6 'strict';
7 7
8 function MarginTextbox(groupName) { 8 function MarginTextbox(groupName) {
9 var box = document.createElement('input'); 9 var box = document.createElement('input');
10 box.__proto__ = MarginTextbox.prototype; 10 box.__proto__ = MarginTextbox.prototype;
(...skipping 25 matching lines...) Expand all
36 MarginTextbox.prototype = { 36 MarginTextbox.prototype = {
37 __proto__: HTMLInputElement.prototype, 37 __proto__: HTMLInputElement.prototype,
38 38
39 /** 39 /**
40 * @type {number} The margin value currently in the textbox. 40 * @type {number} The margin value currently in the textbox.
41 */ 41 */
42 get margin() { 42 get margin() {
43 return print_preview.extractMarginValue(this.value); 43 return print_preview.extractMarginValue(this.value);
44 }, 44 },
45 45
46 setValue_: function(newValueInPoints) {
47 this.value = print_preview.convertPointsToUserLocaleUnitsText(
48 newValueInPoints);
49 },
50
46 /** 51 /**
47 * Updates the state of |this|. 52 * Updates the state of |this|.
48 * @param {number} value The margin value in points. 53 * @param {number} value The margin value in points.
49 * @param {number} valueLimit The upper allowed value for the margin. 54 * @param {number} valueLimit The upper allowed value for the margin.
50 * @param {boolean} keepDisplayedValue True if the currently displayed value 55 * @param {boolean} keepDisplayedValue True if the currently displayed value
51 * should not be updated. 56 * should not be updated.
52 */ 57 */
53 update: function(value, valueLimit, keepDisplayedValue) { 58 update: function(value, valueLimit, keepDisplayedValue) {
54 this.lastValidValueInPoints = value; 59 this.lastValidValueInPoints = value;
55 if (!keepDisplayedValue) { 60 if (!keepDisplayedValue)
56 this.value = print_preview.convertPointsToInchesText( 61 this.setValue_(this.lastValidValueInPoints);
57 this.lastValidValueInPoints);
58 }
59 62
60 this.valueLimit = valueLimit; 63 this.valueLimit = valueLimit;
61 this.validate(); 64 this.validate();
62 }, 65 },
63 66
64 /** 67 /**
65 * Updates |this| while dragging is in progress. 68 * Updates |this| while dragging is in progress.
66 * @param {number} dragDeltaInPoints The difference in points between the 69 * @param {number} dragDeltaInPoints The difference in points between the
67 * margin value before dragging started and now. 70 * margin value before dragging started and now.
68 */ 71 */
69 updateWhileDragging: function(dragDeltaInPoints) { 72 updateWhileDragging: function(dragDeltaInPoints) {
70 var validity = this.validateDelta(dragDeltaInPoints); 73 var validity = this.validateDelta(dragDeltaInPoints);
71 74
72 if (validity == print_preview.marginValidationStates.WITHIN_RANGE) { 75 if (validity == print_preview.marginValidationStates.WITHIN_RANGE)
73 this.value = print_preview.convertPointsToInchesText( 76 this.setValue_(this.lastValidValueInPoints + dragDeltaInPoints);
74 this.lastValidValueInPoints + dragDeltaInPoints); 77 else if (validity == print_preview.marginValidationStates.TOO_SMALL)
75 } else if (validity == print_preview.marginValidationStates.TOO_SMALL) { 78 this.setValue_(0);
76 this.value = print_preview.convertPointsToInchesText(0); 79 else if (validity == print_preview.marginValidationStates.TOO_BIG)
77 } else if (validity == print_preview.marginValidationStates.TOO_BIG) { 80 this.setValue_(this.valueLimit);
78 this.value = print_preview.convertPointsToInchesText(this.valueLimit);
79 }
80 81
81 this.validate(); 82 this.validate();
82 this.updateColor(); 83 this.updateColor();
83 }, 84 },
84 85
85 /** 86 /**
86 * @param {number} dragDeltaInPoints The difference in points between the 87 * @param {number} dragDeltaInPoints The difference in points between the
87 * margin value before dragging started and now. 88 * margin value before dragging started and now.
88 * @return {number} An appropriate value from enum |marginValidationStates|. 89 * @return {number} An appropriate value from enum |marginValidationStates|.
89 */ 90 */
90 validateDelta: function(dragDeltaInPoints) { 91 validateDelta: function(dragDeltaInPoints) {
91 var newValue = this.lastValidValueInPoints + dragDeltaInPoints; 92 var newValue = this.lastValidValueInPoints + dragDeltaInPoints;
92 return print_preview.validateMarginValue(newValue, this.valueLimit); 93 return print_preview.validateMarginValue(newValue, this.valueLimit);
93 }, 94 },
94 95
95 /** 96 /**
96 * Updates |this.isValid|. 97 * Updates |this.isValid|.
97 */ 98 */
98 validate: function() { 99 validate: function() {
99 this.isValid = 100 this.isValid =
100 print_preview.validateMarginText(this.value, this.valueLimit) == 101 print_preview.validateMarginText(this.value, this.valueLimit) ==
101 print_preview.marginValidationStates.WITHIN_RANGE; 102 print_preview.marginValidationStates.WITHIN_RANGE;
102 if (this.isValid)
103 this.value = print_preview.convertInchesToInchesText(this.margin);
104 }, 103 },
105 104
106 /** 105 /**
107 * Updates the background color depending on |isValid| by adding/removing 106 * Updates the background color depending on |isValid| by adding/removing
108 * the appropriate CSS class. 107 * the appropriate CSS class.
109 * @param {boolean} isValid True if the margin is valid. 108 * @param {boolean} isValid True if the margin is valid.
110 */ 109 */
111 updateColor: function() { 110 updateColor: function() {
112 this.isValid ? this.classList.remove('invalid') : 111 this.isValid ? this.classList.remove('invalid') :
113 this.classList.add('invalid'); 112 this.classList.add('invalid');
(...skipping 18 matching lines...) Expand all
132 }, 131 },
133 132
134 /** 133 /**
135 * Executes whenever a blur event occurs. 134 * Executes whenever a blur event occurs.
136 * @private 135 * @private
137 */ 136 */
138 onBlur_: function() { 137 onBlur_: function() {
139 clearTimeout(this.timerId_); 138 clearTimeout(this.timerId_);
140 this.validate(); 139 this.validate();
141 if (!this.isValid) { 140 if (!this.isValid) {
142 this.value = print_preview.convertPointsToInchesText( 141 this.setValue_(this.lastValidValueInPoints);
143 this.lastValidValueInPoints);
144 this.validate(); 142 this.validate();
145 } 143 }
146 144
147 this.updateColor(); 145 this.updateColor();
148 cr.dispatchSimpleEvent(document, 'updateSummary'); 146 cr.dispatchSimpleEvent(document, 'updateSummary');
149 cr.dispatchSimpleEvent(document, 'updatePrintButton'); 147 cr.dispatchSimpleEvent(document, 'updatePrintButton');
150 cr.dispatchSimpleEvent(this, 'MarginsMayHaveChanged'); 148 cr.dispatchSimpleEvent(this, 'MarginsMayHaveChanged');
151 }, 149 },
152 150
153 /** 151 /**
154 * Executes whenever a keypressed event occurs. Note: Only the "Enter" key 152 * Executes whenever a keypressed event occurs. Note: Only the "Enter" key
155 * event is handled. The "Escape" key does not result in such event, 153 * event is handled. The "Escape" key does not result in such event,
156 * therefore it is handled by |this.onKeyUp_|. 154 * therefore it is handled by |this.onKeyUp_|.
157 * @param {KeyboardEvent} e The event that triggered this listener. 155 * @param {KeyboardEvent} e The event that triggered this listener.
158 * @private 156 * @private
159 */ 157 */
160 onKeyPressed_: function(e) { 158 onKeyPressed_: function(e) {
161 if (e.keyCode == MarginTextbox.ENTER_KEYCODE) 159 if (e.keyCode == MarginTextbox.ENTER_KEYCODE)
162 this.blur(); 160 this.blur();
163 }, 161 },
164 162
165 /** 163 /**
166 * Executes whenever a keyup event occurs. Note: Only the "Escape" 164 * Executes whenever a keyup event occurs. Note: Only the "Escape"
167 * key event is handled. 165 * key event is handled.
168 * @param {KeyboardEvent} e The event that triggered this listener. 166 * @param {KeyboardEvent} e The event that triggered this listener.
169 * @private 167 * @private
170 */ 168 */
171 onKeyUp_: function(e) { 169 onKeyUp_: function(e) {
172 if (e.keyCode == MarginTextbox.ESCAPE_KEYCODE) { 170 if (e.keyCode == MarginTextbox.ESCAPE_KEYCODE) {
173 this.value = print_preview.convertPointsToInchesText( 171 this.setValue_(this.lastValidValueInPoints);
174 this.lastValidValueInPoints);
175 this.validate(); 172 this.validate();
176 this.updateColor(); 173 this.updateColor();
177 cr.dispatchSimpleEvent(document, 'updateSummary'); 174 cr.dispatchSimpleEvent(document, 'updateSummary');
178 cr.dispatchSimpleEvent(document, 'updatePrintButton'); 175 cr.dispatchSimpleEvent(document, 'updatePrintButton');
179 } 176 }
180 }, 177 },
181 178
182 /** 179 /**
183 * Resetting the timer used to detect when the user stops typing in order 180 * Resetting the timer used to detect when the user stops typing in order
184 * to update the print preview. 181 * to update the print preview.
(...skipping 19 matching lines...) Expand all
204 return; 201 return;
205 cr.dispatchSimpleEvent(this, 'MarginsMayHaveChanged'); 202 cr.dispatchSimpleEvent(this, 'MarginsMayHaveChanged');
206 } 203 }
207 204
208 }; 205 };
209 206
210 return { 207 return {
211 MarginTextbox: MarginTextbox 208 MarginTextbox: MarginTextbox
212 }; 209 };
213 }); 210 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698