| OLD | NEW |
| 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 var localStrings = new LocalStrings(); | 5 var localStrings = new LocalStrings(); |
| 6 | 6 |
| 7 // The total page count of the previewed document regardless of which pages the | 7 // The total page count of the previewed document regardless of which pages the |
| 8 // user has selected. | 8 // user has selected. |
| 9 var totalPageCount; | 9 var totalPageCount; |
| 10 | 10 |
| 11 // The previously selected pages by the user. It is used in | 11 // The previously selected pages by the user. It is used in |
| 12 // onPageSelectionMayHaveChanged() to make sure that a new preview is not | 12 // onPageSelectionMayHaveChanged() to make sure that a new preview is not |
| 13 // requested more often than necessary. | 13 // requested more often than necessary. |
| 14 var previouslySelectedPages = []; | 14 var previouslySelectedPages = []; |
| 15 | 15 |
| 16 // Timer id of the page range textfield. It is used to reset the timer whenever | 16 // Timer id of the page range text field. It is used to reset the timer whenever |
| 17 // needed. | 17 // needed. |
| 18 var timerId; | 18 var timerId; |
| 19 | 19 |
| 20 // Store the last selected printer index. | 20 // Store the last selected printer index. |
| 21 var lastSelectedPrinterIndex = 0; | 21 var lastSelectedPrinterIndex = 0; |
| 22 | 22 |
| 23 // Used to disable some printing options when the preview is not modifiable. | 23 // Used to disable some printing options when the preview is not modifiable. |
| 24 var previewModifiable = false; | 24 var previewModifiable = false; |
| 25 | 25 |
| 26 // Destination list special value constants. | 26 // Destination list special value constants. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 // True when preview tab has some error. | 42 // True when preview tab has some error. |
| 43 var hasError = false; | 43 var hasError = false; |
| 44 | 44 |
| 45 // True when preview tab is hidden. | 45 // True when preview tab is hidden. |
| 46 var isTabHidden = false; | 46 var isTabHidden = false; |
| 47 | 47 |
| 48 // True when draft preview data is requested for preview. | 48 // True when draft preview data is requested for preview. |
| 49 var draftDocument = true; | 49 var draftDocument = true; |
| 50 | 50 |
| 51 // True if the user has click 'Advanced...' in order to open the system print |
| 52 // dialog. |
| 53 var showingSystemDialog = false; |
| 54 |
| 51 /** | 55 /** |
| 52 * Window onload handler, sets up the page and starts print preview by getting | 56 * Window onload handler, sets up the page and starts print preview by getting |
| 53 * the printer list. | 57 * the printer list. |
| 54 */ | 58 */ |
| 55 function onLoad() { | 59 function onLoad() { |
| 56 cr.enablePlatformSpecificCSSRules(); | 60 cr.enablePlatformSpecificCSSRules(); |
| 57 | 61 |
| 58 $('cancel-button').addEventListener('click', handleCancelButtonClick); | 62 $('cancel-button').addEventListener('click', handleCancelButtonClick); |
| 59 | 63 |
| 60 if (!checkCompatiblePluginExists()) { | 64 if (!checkCompatiblePluginExists()) { |
| 65 disableInputElementsInSidebar(); |
| 61 displayErrorMessageWithButton(localStrings.getString('noPlugin'), | 66 displayErrorMessageWithButton(localStrings.getString('noPlugin'), |
| 62 localStrings.getString('launchNativeDialog'), | 67 localStrings.getString('launchNativeDialog'), |
| 63 showSystemDialog); | 68 launchNativePrintDialog); |
| 64 $('mainview').parentElement.removeChild($('dummy-viewer')); | 69 $('mainview').parentElement.removeChild($('dummy-viewer')); |
| 65 return; | 70 return; |
| 66 } | 71 } |
| 67 | 72 |
| 68 $('system-dialog-link').addEventListener('click', showSystemDialog); | 73 $('print-button').focus(); |
| 74 $('system-dialog-link').addEventListener('click', onSystemDialogLinkClicked); |
| 69 $('mainview').parentElement.removeChild($('dummy-viewer')); | 75 $('mainview').parentElement.removeChild($('dummy-viewer')); |
| 70 | 76 |
| 71 $('printer-list').disabled = true; | 77 $('printer-list').disabled = true; |
| 72 $('print-button').onclick = printFile; | 78 $('print-button').onclick = printFile; |
| 73 | 79 |
| 74 setDefaultHandlersForPagesAndCopiesControls(); | 80 setDefaultHandlersForPagesAndCopiesControls(); |
| 75 showLoadingAnimation(); | 81 showLoadingAnimation(); |
| 76 chrome.send('getDefaultPrinter'); | 82 chrome.send('getDefaultPrinter'); |
| 77 } | 83 } |
| 78 | 84 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 */ | 168 */ |
| 163 function removeEventListeners() { | 169 function removeEventListeners() { |
| 164 clearTimeout(timerId); | 170 clearTimeout(timerId); |
| 165 setDefaultHandlersForPagesAndCopiesControls(); | 171 setDefaultHandlersForPagesAndCopiesControls(); |
| 166 | 172 |
| 167 // Controls that require preview rendering | 173 // Controls that require preview rendering |
| 168 $('landscape').onclick = null; | 174 $('landscape').onclick = null; |
| 169 $('portrait').onclick = null; | 175 $('portrait').onclick = null; |
| 170 $('printer-list').onchange = null; | 176 $('printer-list').onchange = null; |
| 171 | 177 |
| 172 // Controls that dont require preview rendering. | 178 // Controls that don't require preview rendering. |
| 173 $('two-sided').onclick = null; | 179 $('two-sided').onclick = null; |
| 174 $('color').onclick = null; | 180 $('color').onclick = null; |
| 175 $('bw').onclick = null; | 181 $('bw').onclick = null; |
| 176 } | 182 } |
| 177 | 183 |
| 178 /** | 184 /** |
| 185 * Disables the input elements in the sidebar. |
| 186 */ |
| 187 function disableInputElementsInSidebar() { |
| 188 var els = $('sidebar').querySelectorAll('input, button, select'); |
| 189 for (var i = 0; i < els.length; i++) |
| 190 els[i].disabled = true; |
| 191 } |
| 192 |
| 193 /** |
| 179 * Asks the browser to close the preview tab. | 194 * Asks the browser to close the preview tab. |
| 180 */ | 195 */ |
| 181 function handleCancelButtonClick() { | 196 function handleCancelButtonClick() { |
| 182 chrome.send('closePrintPreviewTab'); | 197 chrome.send('closePrintPreviewTab'); |
| 183 } | 198 } |
| 184 | 199 |
| 185 /** | 200 /** |
| 186 * Asks the browser to show the native print dialog for printing. | 201 * Disables the controls in the sidebar, shows the throbber and instructs the |
| 202 * backend to open the native print dialog. |
| 187 */ | 203 */ |
| 188 function showSystemDialog() { | 204 function onSystemDialogLinkClicked() { |
| 205 showingSystemDialog = true; |
| 206 disableInputElementsInSidebar(); |
| 207 $('system-dialog-throbber').classList.remove('hidden'); |
| 189 chrome.send('showSystemDialog'); | 208 chrome.send('showSystemDialog'); |
| 190 } | 209 } |
| 191 | 210 |
| 211 /** |
| 212 * Similar to onSystemDialogLinkClicked(), but specific to the |
| 213 * 'Launch native print dialog' UI. |
| 214 */ |
| 215 function launchNativePrintDialog() { |
| 216 showingSystemDialog = true; |
| 217 $('error-button').disabled = true; |
| 218 $('native-print-dialog-throbber').classList.remove('hidden'); |
| 219 chrome.send('showSystemDialog'); |
| 220 } |
| 221 |
| 192 /** | 222 /** |
| 193 * Disables the controls which need the initiator tab to generate preview | 223 * Disables the controls which need the initiator tab to generate preview |
| 194 * data. This function is called when the initiator tab is closed. | 224 * data. This function is called when the initiator tab is closed. |
| 195 * @param {string} initiatorTabURL The URL of the initiator tab. | 225 * @param {string} initiatorTabURL The URL of the initiator tab. |
| 196 */ | 226 */ |
| 197 function onInitiatorTabClosed(initiatorTabURL) { | 227 function onInitiatorTabClosed(initiatorTabURL) { |
| 228 disableInputElementsInSidebar(); |
| 198 displayErrorMessageWithButton( | 229 displayErrorMessageWithButton( |
| 199 localStrings.getString('initiatorTabClosed'), | 230 localStrings.getString('initiatorTabClosed'), |
| 200 localStrings.getString('reopenPage'), | 231 localStrings.getString('reopenPage'), |
| 201 function() { window.location = initiatorTabURL; }); | 232 function() { window.location = initiatorTabURL; }); |
| 202 } | 233 } |
| 203 | 234 |
| 204 /** | 235 /** |
| 205 * Gets the selected printer capabilities and updates the controls accordingly. | 236 * Gets the selected printer capabilities and updates the controls accordingly. |
| 206 */ | 237 */ |
| 207 function updateControlsWithSelectedPrinterCapabilities() { | 238 function updateControlsWithSelectedPrinterCapabilities() { |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 561 * Display an error message in the center of the preview area followed by a | 592 * Display an error message in the center of the preview area followed by a |
| 562 * button. | 593 * button. |
| 563 * @param {string} errorMessage The error message to be displayed. | 594 * @param {string} errorMessage The error message to be displayed. |
| 564 * @param {string} buttonText The text to be displayed within the button. | 595 * @param {string} buttonText The text to be displayed within the button. |
| 565 * @param {string} buttonListener The listener to be executed when the button is | 596 * @param {string} buttonListener The listener to be executed when the button is |
| 566 * clicked. | 597 * clicked. |
| 567 */ | 598 */ |
| 568 function displayErrorMessageWithButton( | 599 function displayErrorMessageWithButton( |
| 569 errorMessage, buttonText, buttonListener) { | 600 errorMessage, buttonText, buttonListener) { |
| 570 var errorButton = $('error-button'); | 601 var errorButton = $('error-button'); |
| 602 errorButton.disabled = false; |
| 571 errorButton.textContent = buttonText; | 603 errorButton.textContent = buttonText; |
| 572 errorButton.onclick = buttonListener; | 604 errorButton.onclick = buttonListener; |
| 573 errorButton.classList.remove('hidden'); | 605 errorButton.classList.remove('hidden'); |
| 606 $('system-dialog-throbber').classList.add('hidden'); |
| 607 $('native-print-dialog-throbber').classList.add('hidden'); |
| 574 displayErrorMessage(errorMessage); | 608 displayErrorMessage(errorMessage); |
| 575 } | 609 } |
| 576 | 610 |
| 577 /** | 611 /** |
| 578 * Display an error message when print preview fails. | 612 * Display an error message when print preview fails. |
| 579 * Called from PrintPreviewMessageHandler::OnPrintPreviewFailed(). | 613 * Called from PrintPreviewMessageHandler::OnPrintPreviewFailed(). |
| 580 */ | 614 */ |
| 581 function printPreviewFailed() { | 615 function printPreviewFailed() { |
| 582 displayErrorMessage(localStrings.getString('previewFailed')); | 616 displayErrorMessage(localStrings.getString('previewFailed')); |
| 583 } | 617 } |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 | 687 |
| 654 if (hasPendingPrintFileRequest) | 688 if (hasPendingPrintFileRequest) |
| 655 printFile(); | 689 printFile(); |
| 656 } | 690 } |
| 657 | 691 |
| 658 /** | 692 /** |
| 659 * Create the PDF plugin or reload the existing one. | 693 * Create the PDF plugin or reload the existing one. |
| 660 * @param {string} previewUid Preview unique identifier. | 694 * @param {string} previewUid Preview unique identifier. |
| 661 */ | 695 */ |
| 662 function createPDFPlugin(previewUid) { | 696 function createPDFPlugin(previewUid) { |
| 663 // Enable the print button. | |
| 664 if (!$('printer-list').disabled) | |
| 665 $('print-button').disabled = false; | |
| 666 | |
| 667 var pdfViewer = $('pdf-viewer'); | 697 var pdfViewer = $('pdf-viewer'); |
| 668 if (pdfViewer) { | 698 if (pdfViewer) { |
| 669 // Need to call this before the reload(), where the plugin resets its | 699 // Need to call this before the reload(), where the plugin resets its |
| 670 // internal page count. | 700 // internal page count. |
| 671 pdfViewer.goToPage('0'); | 701 pdfViewer.goToPage('0'); |
| 672 | 702 |
| 673 pdfViewer.reload(); | 703 pdfViewer.reload(); |
| 674 pdfViewer.grayscale(!isColor()); | 704 pdfViewer.grayscale(!isColor()); |
| 675 return; | 705 return; |
| 676 } | 706 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 698 dummyPlugin.removePrintButton); | 728 dummyPlugin.removePrintButton); |
| 699 } | 729 } |
| 700 | 730 |
| 701 /** | 731 /** |
| 702 * Updates the state of print button depending on the user selection. | 732 * Updates the state of print button depending on the user selection. |
| 703 * The button is enabled only when the following conditions are true. | 733 * The button is enabled only when the following conditions are true. |
| 704 * 1) The selected page ranges are valid. | 734 * 1) The selected page ranges are valid. |
| 705 * 2) The number of copies is valid (if applicable). | 735 * 2) The number of copies is valid (if applicable). |
| 706 */ | 736 */ |
| 707 function updatePrintButtonState() { | 737 function updatePrintButtonState() { |
| 738 if (showingSystemDialog) |
| 739 return; |
| 740 |
| 708 if (getSelectedPrinterName() == PRINT_TO_PDF) { | 741 if (getSelectedPrinterName() == PRINT_TO_PDF) { |
| 709 $('print-button').disabled = !isSelectedPagesValid(); | 742 $('print-button').disabled = !isSelectedPagesValid(); |
| 710 } else { | 743 } else { |
| 711 $('print-button').disabled = (!isNumberOfCopiesValid() || | 744 $('print-button').disabled = (!isNumberOfCopiesValid() || |
| 712 !isSelectedPagesValid()); | 745 !isSelectedPagesValid()); |
| 713 } | 746 } |
| 714 } | 747 } |
| 715 | 748 |
| 716 window.addEventListener('DOMContentLoaded', onLoad); | 749 window.addEventListener('DOMContentLoaded', onLoad); |
| 717 | 750 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 972 this.isLandscape = ''; | 1005 this.isLandscape = ''; |
| 973 } | 1006 } |
| 974 | 1007 |
| 975 /** | 1008 /** |
| 976 * Takes a snapshot of the print settings. | 1009 * Takes a snapshot of the print settings. |
| 977 */ | 1010 */ |
| 978 PrintSettings.prototype.save = function() { | 1011 PrintSettings.prototype.save = function() { |
| 979 this.deviceName = getSelectedPrinterName(); | 1012 this.deviceName = getSelectedPrinterName(); |
| 980 this.isLandscape = isLandscape(); | 1013 this.isLandscape = isLandscape(); |
| 981 } | 1014 } |
| OLD | NEW |