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

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

Issue 8428005: Print Preview: Making margin selection sticky (part 1/2). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Using the correct enum type instead of int Created 9 years, 1 month 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 Margins object that holds four margin values. The units in which 9 * Creates a Margins object that holds four margin values. The units in which
10 * the values are expressed can be any numeric value. 10 * the values are expressed can be any numeric value.
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 // @type {EventTracker} Used to keep track of certain event listeners. 144 // @type {EventTracker} Used to keep track of certain event listeners.
145 this.eventTracker_ = new EventTracker(); 145 this.eventTracker_ = new EventTracker();
146 146
147 this.addEventListeners_(); 147 this.addEventListeners_();
148 } 148 }
149 149
150 // Number of points per inch. 150 // Number of points per inch.
151 MarginSettings.POINTS_PER_INCH = 72; 151 MarginSettings.POINTS_PER_INCH = 72;
152 // Minimum allowed distance in points between top-bottom, left-right margins. 152 // Minimum allowed distance in points between top-bottom, left-right margins.
153 MarginSettings.MINIMUM_MARGINS_DISTANCE = 36; 153 MarginSettings.MINIMUM_MARGINS_DISTANCE = 36;
154 // Margin list values. 154 // Margin list values. Matches enum MarginType in
155 // printing/print_job_constants.h.
155 MarginSettings.MARGINS_VALUE_DEFAULT = 0; 156 MarginSettings.MARGINS_VALUE_DEFAULT = 0;
156 MarginSettings.MARGINS_VALUE_NO_MARGINS = 1; 157 MarginSettings.MARGINS_VALUE_NO_MARGINS = 1;
157 MarginSettings.MARGINS_VALUE_CUSTOM = 2; 158 MarginSettings.MARGINS_VALUE_MINIMUM = 2;
158 MarginSettings.MARGINS_VALUE_MINIMUM = 3; 159 MarginSettings.MARGINS_VALUE_CUSTOM = 3;
159 // Default Margins option index. 160
160 MarginSettings.DEFAULT_MARGINS_OPTION_INDEX = 0; 161 // Indices in the dropdown correspoding to margins type.
162 MarginSettings.OPTION_INDEX_DEFAULT = 0;
163 MarginSettings.OPTION_INDEX_NO_MARGINS = 1;
164 MarginSettings.OPTION_INDEX_MINIMUM = 2;
165 MarginSettings.OPTION_INDEX_CUSTOM = 3;
166
161 // Group name corresponding to the top margin. 167 // Group name corresponding to the top margin.
162 MarginSettings.TOP_GROUP = 'top'; 168 MarginSettings.TOP_GROUP = 'top';
163 // Group name corresponding to the left margin. 169 // Group name corresponding to the left margin.
164 MarginSettings.LEFT_GROUP = 'left'; 170 MarginSettings.LEFT_GROUP = 'left';
165 // Group name corresponding to the right margin. 171 // Group name corresponding to the right margin.
166 MarginSettings.RIGHT_GROUP = 'right'; 172 MarginSettings.RIGHT_GROUP = 'right';
167 // Group name corresponding to the bottom margin. 173 // Group name corresponding to the bottom margin.
168 MarginSettings.BOTTOM_GROUP = 'bottom'; 174 MarginSettings.BOTTOM_GROUP = 'bottom';
169 175
170 /** 176 /**
171 * Extracts the number formatting and measurement system for the current 177 * Extracts the number formatting and measurement system for the current
172 * locale. 178 * locale.
173 * @param {string} numberFormat Is the formatted version of a sample number, 179 * @param {string} numberFormat Is the formatted version of a sample number,
174 * sent from the backend. 180 * sent from the backend.
175 * @oaram {number} measurementSystem 0 for SI (aka metric system), 1 for the 181 * @oaram {number} measurementSystem 0 for SI (aka metric system), 1 for the
176 * system used in the US. Note: Mathces UMeasurementSystem enum in 182 * system used in the US. Note: Mathces UMeasurementSystem enum in
177 * third_party/icu/public/i18n/unicode/ulocdata.h. 183 * third_party/icu/public/i18n/unicode/ulocdata.h.
178 */ 184 */
179 MarginSettings.setNumberFormatAndMeasurementSystem = function( 185 MarginSettings.setNumberFormatAndMeasurementSystem = function(
180 numberFormat, measurementSystem) { 186 numberFormat, measurementSystem) {
181 var regex = /^(\d+)(\.|\,)(\d+)(\.|\,)(\d+)$/; 187 var regex = /^(\d+)(\.|\,)(\d+)(\.|\,)(\d+)$/;
182 var matches = numberFormat.match(regex); 188 var matches = numberFormat.match(regex);
183 MarginSettings.thousandsPoint = matches[2]; 189 MarginSettings.thousandsPoint = matches[2];
184 MarginSettings.decimalPoint = matches[4]; 190 MarginSettings.decimalPoint = matches[4];
185 MarginSettings.useMetricSystem = measurementSystem == 0; 191 MarginSettings.useMetricSystem = measurementSystem == 0;
186 }; 192 };
187 193
194 /**
195 * @type {Object} Maps margin type values to indices within the drop-down
196 * margin list.
197 */
198 MarginSettings.valueToIndex = {};
kmadhusu 2011/11/01 17:17:57 Is there any specific reason to create this object
dpapad 2011/11/01 17:29:14 It happens to be the same, but this is not a const
199 MarginSettings.valueToIndex[MarginSettings.MARGINS_VALUE_DEFAULT] =
200 MarginSettings.OPTION_INDEX_DEFAULT;
201 MarginSettings.valueToIndex[MarginSettings.MARGINS_VALUE_NO_MARGINS] =
202 MarginSettings.OPTION_INDEX_NO_MARGINS;
203 MarginSettings.valueToIndex[MarginSettings.MARGINS_VALUE_MINIMUM] =
204 MarginSettings.OPTION_INDEX_MINIMUM;
205 MarginSettings.valueToIndex[MarginSettings.MARGINS_VALUE_CUSTOM] =
206 MarginSettings.OPTION_INDEX_CUSTOM;
207
188 cr.addSingletonGetter(MarginSettings); 208 cr.addSingletonGetter(MarginSettings);
189 209
190 MarginSettings.prototype = { 210 MarginSettings.prototype = {
191 /** 211 /**
192 * Returns a dictionary of the four custom margin values. 212 * Returns a dictionary of the four custom margin values.
193 * @return {object} 213 * @return {object}
194 */ 214 */
195 get customMargins() { 215 get customMargins() {
196 var margins = {}; 216 var margins = {};
197 margins.marginLeft = this.customMargins_.left; 217 margins.marginLeft = this.customMargins_.left;
198 margins.marginTop = this.customMargins_.top; 218 margins.marginTop = this.customMargins_.top;
199 margins.marginRight = this.customMargins_.right; 219 margins.marginRight = this.customMargins_.right;
200 margins.marginBottom = this.customMargins_.bottom; 220 margins.marginBottom = this.customMargins_.bottom;
201 return margins; 221 return margins;
202 }, 222 },
203 223
204 /** 224 /**
205 * @return {number} The value of the selected margin option. 225 * @return {number} The value of the selected margin option.
206 */ 226 */
207 get selectedMarginsValue() { 227 get selectedMarginsValue() {
208 var val = this.marginList_.options[this.marginList_.selectedIndex].value; 228 var val = this.marginList_.options[this.marginList_.selectedIndex].value;
209 return parseInt(val, 10); 229 return parseInt(val, 10);
210 }, 230 },
211 231
212 /** 232 /**
233 * @param {number} The index to be selected within |this.marginList_|.
234 */
235 set selectedMarginsIndex(index) {
236 this.marginList_.selectedIndex = index;
237 },
238
239 /**
213 * @return {number} The total width of the plugin in points. 240 * @return {number} The total width of the plugin in points.
214 */ 241 */
215 get totalWidthInPoints() { 242 get totalWidthInPoints() {
216 var pageInformation = previewArea.pageLocationNormalized; 243 var pageInformation = previewArea.pageLocationNormalized;
217 return this.pageWidth_ / pageInformation.width; 244 return this.pageWidth_ / pageInformation.width;
218 }, 245 },
219 246
220 /** 247 /**
221 * @return {number} The total height of the plugin in points. 248 * @return {number} The total height of the plugin in points.
222 */ 249 */
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 }, 616 },
590 617
591 /** 618 /**
592 * If custom margins is the currently selected option then change to the 619 * If custom margins is the currently selected option then change to the
593 * default margins option. 620 * default margins option.
594 * @private 621 * @private
595 */ 622 */
596 resetMarginsIfNeeded: function() { 623 resetMarginsIfNeeded: function() {
597 if (this.isCustomMarginsSelected()) { 624 if (this.isCustomMarginsSelected()) {
598 this.marginList_.options[ 625 this.marginList_.options[
599 MarginSettings.DEFAULT_MARGINS_OPTION_INDEX].selected = true; 626 MarginSettings.OPTION_INDEX_DEFAULT].selected = true;
600 this.removeCustomMarginEventListeners_(); 627 this.removeCustomMarginEventListeners_();
601 this.forceDisplayingMarginLines_ = true; 628 this.forceDisplayingMarginLines_ = true;
602 this.lastSelectedOption_ = MarginSettings.MARGINS_VALUE_DEFAULT; 629 this.lastSelectedOption_ = MarginSettings.MARGINS_VALUE_DEFAULT;
603 } 630 }
604 }, 631 },
605 632
606 /** 633 /**
607 * Executes when a |customEvents.PDF_LOADED| event occurs. 634 * Executes when a |customEvents.PDF_LOADED| event occurs.
608 * @private 635 * @private
609 */ 636 */
610 onPDFLoaded_: function() { 637 onPDFLoaded_: function() {
611 if (!previewModifiable) 638 if (!previewModifiable)
612 fadeOutOption(this.marginsOption_); 639 fadeOutOption(this.marginsOption_);
613 } 640 }
614 }; 641 };
615 642
616 return { 643 return {
617 MarginSettings: MarginSettings, 644 MarginSettings: MarginSettings,
618 PageLayout: PageLayout, 645 PageLayout: PageLayout,
619 setNumberFormatAndMeasurementSystem: 646 setNumberFormatAndMeasurementSystem:
620 MarginSettings.setNumberFormatAndMeasurementSystem, 647 MarginSettings.setNumberFormatAndMeasurementSystem,
621 }; 648 };
622 }); 649 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698