Index: chrome/browser/resources/print_preview/page_settings.js |
diff --git a/chrome/browser/resources/print_preview/page_settings.js b/chrome/browser/resources/print_preview/page_settings.js |
deleted file mode 100644 |
index b03306c1ecddf97184f285eee62a2321258c4675..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/print_preview/page_settings.js |
+++ /dev/null |
@@ -1,378 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-cr.define('print_preview', function() { |
- 'use strict'; |
- |
- /** |
- * Creates a PageSettings object. This object encapsulates all settings and |
- * logic related to page selection. |
- * @constructor |
- */ |
- function PageSettings() { |
- this.allPagesRadioButton_ = $('all-pages'); |
- this.selectedPagesRadioButton_ = $('print-pages'); |
- this.selectedPagesTextfield_ = $('individual-pages'); |
- this.selectedPagesHint_ = $('individual-pages-hint'); |
- |
- // Timer id of |this.selectedPagesTextfield|. It is used to reset the timer |
- // whenever needed. |
- this.timerId_; |
- |
- // Contains the previously selected pages (pages requested by last |
- // preview request). It is used in |
- // |this.onSelectedPagesMayHaveChanged_()| to make sure that a new preview |
- // is not requested more often than necessary. |
- this.previouslySelectedPages_ = []; |
- |
- // The total page count of the previewed document regardless of which pages |
- // the user has selected. |
- this.totalPageCount_ = undefined; |
- this.addEventListeners_(); |
- } |
- |
- cr.addSingletonGetter(PageSettings); |
- |
- PageSettings.prototype = { |
- /** |
- * The text that is currently in |this.selectedPagesTextfield|. |
- * @type {string} |
- */ |
- get selectedPagesText() { |
- return this.selectedPagesTextfield_.value; |
- }, |
- |
- /** |
- * The radio button corresponding to "all pages selected". |
- * @type {HTMLInputElement} |
- */ |
- get allPagesRadioButton() { |
- return this.allPagesRadioButton_; |
- }, |
- |
- /** |
- * The radio button corresponding to "specific pages selected". |
- * @type {HTMLInputElement} |
- */ |
- get selectedPagesRadioButton() { |
- return this.selectedPagesRadioButton_; |
- }, |
- |
- /** |
- * The textfield containing page ranges as specified by the user. |
- * @type {HTMLInputElement} |
- */ |
- get selectedPagesTextfield() { |
- return this.selectedPagesTextfield_; |
- }, |
- |
- /** |
- * The span element containing the hint shown to the user when page |
- * selection is not valid. |
- * @type {HTMLElement} |
- */ |
- get selectedPagesHint() { |
- return this.selectedPagesHint_; |
- }, |
- |
- /** |
- * The total page count of the previewed document regardless of which pages |
- * the user has selected. If the total count is not known this value must |
- * be undefined. |
- * @type {number} |
- */ |
- get totalPageCount() { |
- return this.totalPageCount_; |
- }, |
- |
- /** |
- * @param {number} count The number to assing to |this.totalPageCount_|. |
- */ |
- set totalPageCount(count) { |
- this.totalPageCount_ = count; |
- }, |
- |
- /** |
- * Returns the selected pages in ascending order without any duplicates. |
- * |
- * @return {Array.<number>} The selected pages. |
- */ |
- get selectedPagesSet() { |
- var selectedPagesText = this.selectedPagesText; |
- |
- if (this.allPagesRadioButton.checked || selectedPagesText.length == 0) |
- selectedPagesText = '1-' + this.totalPageCount_; |
- |
- var pageList = pageRangeTextToPageList(selectedPagesText, |
- this.totalPageCount_); |
- return pageListToPageSet(pageList); |
- }, |
- |
- /** |
- * Returns the previously selected pages in ascending order without any |
- * duplicates. |
- * |
- * @return {Array.<number>} The previously selected pages. |
- */ |
- get previouslySelectedPages() { |
- return this.previouslySelectedPages_; |
- }, |
- |
- /** |
- * Returns an array of objects describing the selected page ranges. See |
- * documentation of pageSetToPageRanges() for more details. |
- * @return {Array.<{from: number, to: number}>} An array of page range |
- * objects. |
- */ |
- get selectedPageRanges() { |
- return pageSetToPageRanges(this.selectedPagesSet); |
- }, |
- |
- /** |
- * Invalidates |this.totalPageCount_| to indicate that the total number of |
- * pages is not known. |
- * @private |
- */ |
- invalidateTotalPageCount_: function() { |
- this.totalPageCount_ = undefined; |
- }, |
- |
- /** |
- * Invlidates |this.previouslySelectedPages_| to indicate that this value |
- * does no longer apply. |
- * @private |
- */ |
- invalidatePreviouslySelectedPages_: function() { |
- this.previouslySelectedPages_.length = 0; |
- }, |
- |
- /** |
- * Resets all the state variables of this object and hides |
- * |this.selectedPagesHint|. |
- */ |
- resetState: function() { |
- this.selectedPagesTextfield.classList.remove('invalid'); |
- fadeOutElement(this.selectedPagesHint_); |
- this.invalidateTotalPageCount_(); |
- this.invalidatePreviouslySelectedPages_(); |
- }, |
- |
- /** |
- * Updates |this.totalPageCount_| and |this.previouslySelectedPages_|, |
- * only if they have been previously invalidated. |
- * @param {number} newTotalPageCount The new total page count. |
- */ |
- updateState: function(newTotalPageCount) { |
- if (!this.totalPageCount_) |
- this.totalPageCount_ = newTotalPageCount; |
- |
- if (this.previouslySelectedPages_.length == 0) { |
- for (var i = 0; i < this.totalPageCount_; i++) |
- this.previouslySelectedPages_.push(i + 1); |
- } |
- |
- if (!this.isPageSelectionValid()) |
- this.onSelectedPagesTextfieldChanged(); |
- }, |
- |
- /** |
- * Updates |this.previouslySelectedPages_| with the currently selected |
- * pages. |
- */ |
- updatePageSelection: function() { |
- this.previouslySelectedPages_ = this.selectedPagesSet; |
- }, |
- |
- /** |
- * @private |
- * @return {boolean} true if currently selected pages differ from |
- * |this.previouslySelectesPages_|. |
- */ |
- hasPageSelectionChanged_: function() { |
- return !areArraysEqual(this.previouslySelectedPages_, |
- this.selectedPagesSet); |
- }, |
- |
- /** |
- * Checks if the page selection has changed and is valid. |
- * @return {boolean} true if the page selection is changed and is valid. |
- */ |
- hasPageSelectionChangedAndIsValid: function() { |
- return this.isPageSelectionValid() && this.hasPageSelectionChanged_(); |
- }, |
- |
- /** |
- * Validates the contents of |this.selectedPagesTextfield|. |
- * |
- * @return {boolean} true if the text is valid. |
- */ |
- isPageSelectionValid: function() { |
- if (this.allPagesRadioButton_.checked || |
- this.selectedPagesText.length == 0) { |
- return true; |
- } |
- return isPageRangeTextValid(this.selectedPagesText, this.totalPageCount_); |
- }, |
- |
- /** |
- * Checks all page selection related settings and requests a new print |
- * previw if needed. |
- * @return {boolean} true if a new preview was requested. |
- */ |
- requestPrintPreviewIfNeeded: function() { |
- if (this.hasPageSelectionChangedAndIsValid()) { |
- this.updatePageSelection(); |
- requestPrintPreview(); |
- return true; |
- } |
- if (!this.isPageSelectionValid()) |
- this.onSelectedPagesTextfieldChanged(); |
- return false; |
- }, |
- |
- /** |
- * Validates the selected pages and updates the hint accordingly. |
- * @private |
- */ |
- validateSelectedPages_: function() { |
- if (this.isPageSelectionValid()) { |
- this.selectedPagesTextfield.classList.remove('invalid'); |
- fadeOutElement(this.selectedPagesHint_); |
- this.selectedPagesHint.setAttribute('aria-hidden', 'true'); |
- } else { |
- this.selectedPagesTextfield.classList.add('invalid'); |
- this.selectedPagesHint.classList.remove('suggestion'); |
- this.selectedPagesHint.setAttribute('aria-hidden', 'false'); |
- this.selectedPagesHint.innerHTML = |
- localStrings.getStringF('pageRangeInstruction', |
- localStrings.getString( |
- 'examplePageRangeText')); |
- fadeInElement(this.selectedPagesHint); |
- } |
- }, |
- |
- /** |
- * Executes whenever a blur event occurs on |this.selectedPagesTextfield| |
- * or when the timer expires. It takes care of |
- * 1) showing/hiding warnings/suggestions |
- * 2) updating print button/summary |
- */ |
- onSelectedPagesTextfieldChanged: function() { |
- this.validateSelectedPages_(); |
- cr.dispatchSimpleEvent(document, customEvents.UPDATE_SUMMARY); |
- cr.dispatchSimpleEvent(document, customEvents.UPDATE_PRINT_BUTTON); |
- }, |
- |
- /** |
- * When the user stops typing in |this.selectedPagesTextfield| or clicks on |
- * |allPagesRadioButton|, a new print preview is requested, only if |
- * 1) The input is compeletely valid (it can be parsed in its entirety). |
- * 2) The newly selected pages differ from |this.previouslySelectedPages_|. |
- * @private |
- */ |
- onSelectedPagesMayHaveChanged_: function() { |
- if (this.selectedPagesRadioButton_.checked) |
- this.onSelectedPagesTextfieldChanged(); |
- |
- // Toggling between "all pages"/"some pages" radio buttons while having an |
- // invalid entry in the page selection textfield still requires updating |
- // the print summary and print button. |
- if (!this.isPageSelectionValid() || !this.hasPageSelectionChanged_()) { |
- cr.dispatchSimpleEvent(document, customEvents.UPDATE_SUMMARY); |
- cr.dispatchSimpleEvent(document, customEvents.UPDATE_PRINT_BUTTON); |
- return; |
- } |
- requestPrintPreview(); |
- }, |
- |
- /** |
- * Whenever |this.selectedPagesTextfield| gains focus we add a timer to |
- * detect when the user stops typing in order to update the print preview. |
- * @private |
- */ |
- addTimerToSelectedPagesTextfield_: function() { |
- this.timerId_ = window.setTimeout( |
- this.onSelectedPagesMayHaveChanged_.bind(this), 1000); |
- }, |
- |
- /** |
- * As the user types in |this.selectedPagesTextfield|, we need to reset |
- * this timer, since the page ranges are still being edited. |
- * @private |
- */ |
- resetSelectedPagesTextfieldTimer_: function() { |
- clearTimeout(this.timerId_); |
- this.addTimerToSelectedPagesTextfield_(); |
- }, |
- |
- /** |
- * Handles the blur event of |this.selectedPagesTextfield|. Un-checks |
- * |this.selectedPagesRadioButton| if the input field is empty. |
- * @private |
- */ |
- onSelectedPagesTextfieldBlur_: function() { |
- clearTimeout(this.timerId_); |
- if (!this.selectedPagesText.length) { |
- this.allPagesRadioButton_.checked = true; |
- this.validateSelectedPages_(); |
- } |
- this.onSelectedPagesMayHaveChanged_(); |
- }, |
- |
- /** |
- * Gives focus to |this.selectedPagesTextfield| when |
- * |this.selectedPagesRadioButton| is clicked. |
- * @private |
- */ |
- onSelectedPagesRadioButtonChecked_: function() { |
- this.selectedPagesTextfield_.focus(); |
- }, |
- |
- /** |
- * Listener executing when an input event occurs in |
- * |this.selectedPagesTextfield|. Ensures that |
- * |this.selectedPagesTextfield| is non-empty before checking |
- * |this.selectedPagesRadioButton|. |
- * @private |
- */ |
- onSelectedPagesTextfieldInput_: function() { |
- if (this.selectedPagesText.length) |
- this.selectedPagesRadioButton.checked = true; |
- this.resetSelectedPagesTextfieldTimer_(); |
- }, |
- |
- /** |
- * Listener executing whenever a keyup events occurs in the pages textfield. |
- * @param {!KeyboardEvent} e The event that triggered this listener. |
- * @private |
- */ |
- onKeyUp_: function(e) { |
- if (e.keyIdentifier == 'Enter') |
- printHeader.onPrintRequested(); |
- }, |
- |
- /** |
- * Adding listeners to all pages related controls. The listeners take care |
- * of altering their behavior depending on |hasPendingPreviewRequest|. |
- * @private |
- */ |
- addEventListeners_: function() { |
- this.allPagesRadioButton.onclick = |
- this.onSelectedPagesMayHaveChanged_.bind(this); |
- this.selectedPagesRadioButton.onclick = |
- this.onSelectedPagesMayHaveChanged_.bind(this); |
- this.selectedPagesTextfield.oninput = |
- this.onSelectedPagesTextfieldInput_.bind(this); |
- this.selectedPagesTextfield.onfocus = |
- this.addTimerToSelectedPagesTextfield_.bind(this); |
- this.selectedPagesTextfield.onblur = |
- this.onSelectedPagesTextfieldBlur_.bind(this); |
- this.selectedPagesTextfield.onkeyup = this.onKeyUp_.bind(this); |
- } |
- }; |
- |
- return { |
- PageSettings: PageSettings |
- }; |
-}); |