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

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

Issue 7550022: Print Preview: Fixing behavior of event listeners. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding responseID to onDidPreviewPage Created 9 years, 4 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 // require: cr/ui/print_preview_cloud.js 5 // require: cr/ui/print_preview_cloud.js
6 6
7 var localStrings = new LocalStrings(); 7 var localStrings = new LocalStrings();
8 8
9 // If useCloudPrint is true we attempt to connect to cloud print 9 // If useCloudPrint is true we attempt to connect to cloud print
10 // and populate the list of printers with cloud print printers. 10 // and populate the list of printers with cloud print printers.
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 printHeader = print_preview.PrintHeader.getInstance(); 98 printHeader = print_preview.PrintHeader.getInstance();
99 pageSettings = print_preview.PageSettings.getInstance(); 99 pageSettings = print_preview.PageSettings.getInstance();
100 copiesSettings = print_preview.CopiesSettings.getInstance(); 100 copiesSettings = print_preview.CopiesSettings.getInstance();
101 layoutSettings = print_preview.LayoutSettings.getInstance(); 101 layoutSettings = print_preview.LayoutSettings.getInstance();
102 colorSettings = print_preview.ColorSettings.getInstance(); 102 colorSettings = print_preview.ColorSettings.getInstance();
103 printHeader.addEventListeners(); 103 printHeader.addEventListeners();
104 pageSettings.addEventListeners(); 104 pageSettings.addEventListeners();
105 copiesSettings.addEventListeners(); 105 copiesSettings.addEventListeners();
106 layoutSettings.addEventListeners(); 106 layoutSettings.addEventListeners();
107 colorSettings.addEventListeners(); 107 colorSettings.addEventListeners();
108 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities;
108 109
109 showLoadingAnimation(); 110 showLoadingAnimation();
110 chrome.send('getDefaultPrinter'); 111 chrome.send('getDefaultPrinter');
111 } 112 }
112 113
113 /** 114 /**
114 * Adds event listeners to the settings controls.
115 */
116 function addEventListeners() {
117 // Controls that require preview rendering.
118 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities;
119 }
120
121 /**
122 * Removes event listeners from the settings controls.
123 */
124 function removeEventListeners() {
125 if (pageSettings)
126 clearTimeout(pageSettings.timerId_);
127
128 // Controls that require preview rendering
129 $('printer-list').onchange = null;
130 }
131
132 /**
133 * Disables the input elements in the sidebar. 115 * Disables the input elements in the sidebar.
134 */ 116 */
135 function disableInputElementsInSidebar() { 117 function disableInputElementsInSidebar() {
136 var els = $('sidebar').querySelectorAll('input, button, select'); 118 var els = $('sidebar').querySelectorAll('input, button, select');
137 for (var i = 0; i < els.length; i++) 119 for (var i = 0; i < els.length; i++)
138 els[i].disabled = true; 120 els[i].disabled = true;
139 } 121 }
140 122
141 /** 123 /**
142 * Disables the controls in the sidebar, shows the throbber and instructs the 124 * Disables the controls in the sidebar, shows the throbber and instructs the
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 } else { 356 } else {
375 isTabHidden = true; 357 isTabHidden = true;
376 chrome.send('hidePreview'); 358 chrome.send('hidePreview');
377 } 359 }
378 return; 360 return;
379 } 361 }
380 362
381 if (printToPDF) { 363 if (printToPDF) {
382 sendPrintDocumentRequest(); 364 sendPrintDocumentRequest();
383 } else { 365 } else {
384 removeEventListeners();
385 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000); 366 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000);
386 } 367 }
387 } 368 }
388 369
389 /** 370 /**
390 * Asks the browser to print the pending preview PDF that just finished 371 * Asks the browser to print the pending preview PDF that just finished
391 * loading. 372 * loading.
392 */ 373 */
393 function requestToPrintPendingDocument() { 374 function requestToPrintPendingDocument() {
394 hasPendingPrintDocumentRequest = false; 375 hasPendingPrintDocumentRequest = false;
(...skipping 23 matching lines...) Expand all
418 cloudprint.getData(printer)]); 399 cloudprint.getData(printer)]);
419 chrome.send('print', [JSON.stringify(getSettings()), 400 chrome.send('print', [JSON.stringify(getSettings()),
420 cloudprint.getPrintTicketJSON(printer)]); 401 cloudprint.getPrintTicketJSON(printer)]);
421 } 402 }
422 403
423 /** 404 /**
424 * Asks the browser to generate a preview PDF based on current print settings. 405 * Asks the browser to generate a preview PDF based on current print settings.
425 */ 406 */
426 function requestPrintPreview() { 407 function requestPrintPreview() {
427 hasPendingPreviewRequest = true; 408 hasPendingPreviewRequest = true;
428 removeEventListeners();
429 printSettings.save(); 409 printSettings.save();
430 if (!isTabHidden) 410 if (!isTabHidden)
431 showLoadingAnimation(); 411 showLoadingAnimation();
432 412
433 var settings = getSettings(); 413 var settings = getSettings();
434 settings.requestID = generatePreviewRequestID(); 414 settings.requestID = generatePreviewRequestID();
415 console.log("requestPrintPreview " + settings.requestID);
435 chrome.send('getPreview', [JSON.stringify(settings)]); 416 chrome.send('getPreview', [JSON.stringify(settings)]);
436 } 417 }
437 418
438 /** 419 /**
439 * Called from PrintPreviewUI::OnFileSelectionCancelled to notify the print 420 * Called from PrintPreviewUI::OnFileSelectionCancelled to notify the print
440 * preview tab regarding the file selection cancel event. 421 * preview tab regarding the file selection cancel event.
441 */ 422 */
442 function fileSelectionCancelled() { 423 function fileSelectionCancelled() {
443 // TODO(thestig) re-enable controls here. 424 // TODO(thestig) re-enable controls here.
444 } 425 }
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
724 /** 705 /**
725 * Display an error message in the center of the preview area. 706 * Display an error message in the center of the preview area.
726 * @param {string} errorMessage The error message to be displayed. 707 * @param {string} errorMessage The error message to be displayed.
727 */ 708 */
728 function displayErrorMessage(errorMessage) { 709 function displayErrorMessage(errorMessage) {
729 $('print-button').disabled = true; 710 $('print-button').disabled = true;
730 $('overlay-layer').classList.remove('invisible'); 711 $('overlay-layer').classList.remove('invisible');
731 $('dancing-dots-text').classList.add('hidden'); 712 $('dancing-dots-text').classList.add('hidden');
732 $('error-text').innerHTML = errorMessage; 713 $('error-text').innerHTML = errorMessage;
733 $('error-text').classList.remove('hidden'); 714 $('error-text').classList.remove('hidden');
734 removeEventListeners();
735 var pdfViewer = $('pdf-viewer'); 715 var pdfViewer = $('pdf-viewer');
736 if (pdfViewer) 716 if (pdfViewer)
737 $('mainview').removeChild(pdfViewer); 717 $('mainview').removeChild(pdfViewer);
738 718
739 if (isTabHidden) 719 if (isTabHidden)
740 cancelPendingPrintRequest(); 720 cancelPendingPrintRequest();
741 } 721 }
742 722
743 /** 723 /**
744 * Display an error message in the center of the preview area followed by a 724 * Display an error message in the center of the preview area followed by a
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 pageSettings.previouslySelectedPages.length); 766 pageSettings.previouslySelectedPages.length);
787 } 767 }
788 768
789 /** 769 /**
790 * Update the page count and check the page range. 770 * Update the page count and check the page range.
791 * Called from PrintPreviewUI::OnDidGetPreviewPageCount(). 771 * Called from PrintPreviewUI::OnDidGetPreviewPageCount().
792 * @param {number} pageCount The number of pages. 772 * @param {number} pageCount The number of pages.
793 * @param {boolean} isModifiable Indicates whether the previewed document can be 773 * @param {boolean} isModifiable Indicates whether the previewed document can be
794 * modified. 774 * modified.
795 */ 775 */
796 function onDidGetPreviewPageCount(pageCount, isModifiable) { 776 function onDidGetPreviewPageCount(pageCount, isModifiable, previewResponseId) {
777 console.log("onDidGetPreviewPageCount " + previewResponseId);
778 if (!isExpectedPreviewResponse(previewResponseId))
779 return;
797 pageSettings.updateState(pageCount); 780 pageSettings.updateState(pageCount);
798 previewModifiable = isModifiable; 781 previewModifiable = isModifiable;
799 } 782 }
800 783
801 /** 784 /**
802 * Called when no pipelining previewed pages. 785 * Called when no pipelining previewed pages.
803 */ 786 */
804 function reloadPreviewPages(previewUid, previewResponseId) { 787 function reloadPreviewPages(previewUid, previewResponseId) {
805 if (!isExpectedPreviewResponse(previewResponseId)) 788 if (!isExpectedPreviewResponse(previewResponseId))
806 return; 789 return;
807 hasPendingPreviewRequest = false; 790 hasPendingPreviewRequest = false;
808 791
809 if (checkIfSettingsChangedAndRegeneratePreview()) 792 if (checkIfSettingsChangedAndRegeneratePreview())
810 return; 793 return;
811 cr.dispatchSimpleEvent(document, 'updateSummary'); 794 cr.dispatchSimpleEvent(document, 'updateSummary');
812 cr.dispatchSimpleEvent(document, 'updatePrintButton'); 795 cr.dispatchSimpleEvent(document, 'updatePrintButton');
813 addEventListeners();
814 hideLoadingAnimation(); 796 hideLoadingAnimation();
815 var pageSet = pageSettings.previouslySelectedPages; 797 var pageSet = pageSettings.previouslySelectedPages;
816 for (var i = 0; i < pageSet.length; i++) 798 for (var i = 0; i < pageSet.length; i++)
817 $('pdf-viewer').loadPreviewPage(getPageSrcURL(previewUid, pageSet[i]-1), i); 799 $('pdf-viewer').loadPreviewPage(getPageSrcURL(previewUid, pageSet[i]-1), i);
818 // TODO(dpapad): handle pending print file requests. 800 // TODO(dpapad): handle pending print file requests.
819 } 801 }
820 802
821 /** 803 /**
822 * Notification that a print preview page has been rendered. 804 * Notification that a print preview page has been rendered.
823 * Check if the settings have changed and request a regeneration if needed. 805 * Check if the settings have changed and request a regeneration if needed.
824 * Called from PrintPreviewUI::OnDidPreviewPage(). 806 * Called from PrintPreviewUI::OnDidPreviewPage().
825 * @param {number} pageNumber The page number, 0-based. 807 * @param {number} pageNumber The page number, 0-based.
826 */ 808 */
827 function onDidPreviewPage(pageNumber, previewUid) { 809 function onDidPreviewPage(pageNumber, previewUid, previewResponseId) {
810 console.log("onDidPreviewPage " + previewResponseId);
811 if (!isExpectedPreviewResponse(previewResponseId))
812 return;
828 // Refactor 813 // Refactor
829 if (!previewModifiable) 814 if (!previewModifiable)
830 return; 815 return;
831 816
832 var pageIndex = pageSettings.previouslySelectedPages.indexOf(pageNumber + 1); 817 var pageIndex = pageSettings.previouslySelectedPages.indexOf(pageNumber + 1);
833 818
834 if (checkIfSettingsChangedAndRegeneratePreview()) 819 if (checkIfSettingsChangedAndRegeneratePreview())
835 return; 820 return;
836 if (pageIndex == 0) 821 if (pageIndex == 0)
837 createPDFPlugin(previewUid); 822 createPDFPlugin(previewUid);
838 823
839 $('pdf-viewer').loadPreviewPage( 824 $('pdf-viewer').loadPreviewPage(
840 getPageSrcURL(previewUid, pageNumber), pageIndex); 825 getPageSrcURL(previewUid, pageNumber), pageIndex);
841 } 826 }
842 827
843 /** 828 /**
844 * Update the print preview when new preview data is available. 829 * Update the print preview when new preview data is available.
845 * Create the PDF plugin as needed. 830 * Create the PDF plugin as needed.
846 * Called from PrintPreviewUI::PreviewDataIsAvailable(). 831 * Called from PrintPreviewUI::PreviewDataIsAvailable().
847 * @param {string} jobTitle The print job title. 832 * @param {string} jobTitle The print job title.
848 * @param {boolean} modifiable If the preview is modifiable. 833 * @param {boolean} modifiable If the preview is modifiable.
849 * @param {string} previewUid Preview unique identifier. 834 * @param {string} previewUid Preview unique identifier.
850 * @param {number} previewResponseId The preview request id that resulted in 835 * @param {number} previewResponseId The preview request id that resulted in
851 * this response. 836 * this response.
852 */ 837 */
853 function updatePrintPreview(jobTitle, 838 function updatePrintPreview(jobTitle,
854 previewUid, 839 previewUid,
855 previewResponseId) { 840 previewResponseId) {
841 console.log("updatePrintPreview" + previewResponseId);
856 if (!isExpectedPreviewResponse(previewResponseId)) 842 if (!isExpectedPreviewResponse(previewResponseId))
857 return; 843 return;
858 hasPendingPreviewRequest = false; 844 hasPendingPreviewRequest = false;
859 845
860 if (checkIfSettingsChangedAndRegeneratePreview()) 846 if (checkIfSettingsChangedAndRegeneratePreview())
861 return; 847 return;
862 848
863 document.title = localStrings.getStringF('printPreviewTitleFormat', jobTitle); 849 document.title = localStrings.getStringF('printPreviewTitleFormat', jobTitle);
864 850
865 if (!previewModifiable) { 851 if (!previewModifiable) {
866 // If the preview is not modifiable the plugin has not been created yet. 852 // If the preview is not modifiable the plugin has not been created yet.
867 createPDFPlugin(previewUid); 853 createPDFPlugin(previewUid);
868 } 854 }
869 855
870 cr.dispatchSimpleEvent(document, 'updateSummary'); 856 cr.dispatchSimpleEvent(document, 'updateSummary');
871 cr.dispatchSimpleEvent(document, 'updatePrintButton'); 857 cr.dispatchSimpleEvent(document, 'updatePrintButton');
872 addEventListeners();
873 858
874 if (hasPendingPrintDocumentRequest) 859 if (hasPendingPrintDocumentRequest)
875 requestToPrintPendingDocument(); 860 requestToPrintPendingDocument();
876 } 861 }
877 862
878 /** 863 /**
879 * Check if any print settings changed and regenerate the preview if needed. 864 * Check if any print settings changed and regenerate the preview if needed.
880 * @return {boolean} true if a new preview is required. 865 * @return {boolean} true if a new preview is required.
881 */ 866 */
882 function checkIfSettingsChangedAndRegeneratePreview() { 867 function checkIfSettingsChangedAndRegeneratePreview() {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 } 944 }
960 945
961 /** 946 /**
962 * Takes a snapshot of the print settings. 947 * Takes a snapshot of the print settings.
963 */ 948 */
964 PrintSettings.prototype.save = function() { 949 PrintSettings.prototype.save = function() {
965 this.deviceName = getSelectedPrinterName(); 950 this.deviceName = getSelectedPrinterName();
966 this.isLandscape = layoutSettings.isLandscape(); 951 this.isLandscape = layoutSettings.isLandscape();
967 } 952 }
968 953
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698