Chromium Code Reviews| 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(); |
|
dpapad
2011/06/28 02:25:30
Why remove the autofocus attribute from the html a
James Hawkins
2011/06/28 04:02:34
autofocus is somewhat crappy and focuses disabled
| |
| 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) { |
| 198 displayErrorMessageWithButton( | 228 displayErrorMessageWithButton( |
| 199 localStrings.getString('initiatorTabClosed'), | 229 localStrings.getString('initiatorTabClosed'), |
| 200 localStrings.getString('reopenPage'), | 230 localStrings.getString('reopenPage'), |
| 201 function() { window.location = initiatorTabURL; }); | 231 function() { window.location = initiatorTabURL; }); |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 653 | 683 |
| 654 if (hasPendingPrintFileRequest) | 684 if (hasPendingPrintFileRequest) |
| 655 printFile(); | 685 printFile(); |
| 656 } | 686 } |
| 657 | 687 |
| 658 /** | 688 /** |
| 659 * Create the PDF plugin or reload the existing one. | 689 * Create the PDF plugin or reload the existing one. |
| 660 * @param {string} previewUid Preview unique identifier. | 690 * @param {string} previewUid Preview unique identifier. |
| 661 */ | 691 */ |
| 662 function createPDFPlugin(previewUid) { | 692 function createPDFPlugin(previewUid) { |
| 663 // Enable the print button. | |
| 664 if (!$('printer-list').disabled) | |
| 665 $('print-button').disabled = false; | |
| 666 | |
| 667 var pdfViewer = $('pdf-viewer'); | 693 var pdfViewer = $('pdf-viewer'); |
| 668 if (pdfViewer) { | 694 if (pdfViewer) { |
| 669 // Need to call this before the reload(), where the plugin resets its | 695 // Need to call this before the reload(), where the plugin resets its |
| 670 // internal page count. | 696 // internal page count. |
| 671 pdfViewer.goToPage('0'); | 697 pdfViewer.goToPage('0'); |
| 672 | 698 |
| 673 pdfViewer.reload(); | 699 pdfViewer.reload(); |
| 674 pdfViewer.grayscale(!isColor()); | 700 pdfViewer.grayscale(!isColor()); |
| 675 return; | 701 return; |
| 676 } | 702 } |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 697 dummyPlugin.removePrintButton); | 723 dummyPlugin.removePrintButton); |
| 698 } | 724 } |
| 699 | 725 |
| 700 /** | 726 /** |
| 701 * Updates the state of print button depending on the user selection. | 727 * Updates the state of print button depending on the user selection. |
| 702 * The button is enabled only when the following conditions are true. | 728 * The button is enabled only when the following conditions are true. |
| 703 * 1) The selected page ranges are valid. | 729 * 1) The selected page ranges are valid. |
| 704 * 2) The number of copies is valid (if applicable). | 730 * 2) The number of copies is valid (if applicable). |
| 705 */ | 731 */ |
| 706 function updatePrintButtonState() { | 732 function updatePrintButtonState() { |
| 733 if (showingSystemDialog) | |
| 734 return; | |
| 735 | |
| 707 if (getSelectedPrinterName() == PRINT_TO_PDF) { | 736 if (getSelectedPrinterName() == PRINT_TO_PDF) { |
| 708 $('print-button').disabled = !isSelectedPagesValid(); | 737 $('print-button').disabled = !isSelectedPagesValid(); |
| 709 } else { | 738 } else { |
| 710 $('print-button').disabled = (!isNumberOfCopiesValid() || | 739 $('print-button').disabled = (!isNumberOfCopiesValid() || |
| 711 !isSelectedPagesValid()); | 740 !isSelectedPagesValid()); |
| 712 } | 741 } |
| 713 } | 742 } |
| 714 | 743 |
| 715 window.addEventListener('DOMContentLoaded', onLoad); | 744 window.addEventListener('DOMContentLoaded', onLoad); |
| 716 | 745 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 971 this.isLandscape = ''; | 1000 this.isLandscape = ''; |
| 972 } | 1001 } |
| 973 | 1002 |
| 974 /** | 1003 /** |
| 975 * Takes a snapshot of the print settings. | 1004 * Takes a snapshot of the print settings. |
| 976 */ | 1005 */ |
| 977 PrintSettings.prototype.save = function() { | 1006 PrintSettings.prototype.save = function() { |
| 978 this.deviceName = getSelectedPrinterName(); | 1007 this.deviceName = getSelectedPrinterName(); |
| 979 this.isLandscape = isLandscape(); | 1008 this.isLandscape = isLandscape(); |
| 980 } | 1009 } |
| OLD | NEW |