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

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

Issue 7891016: Print Preview: Adding UI for margin settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing comments Created 9 years, 2 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 // Object holding all the margin related settings. 65 // Object holding all the margin related settings.
66 var marginSettings; 66 var marginSettings;
67 67
68 // Object holding all the header footer related settings. 68 // Object holding all the header footer related settings.
69 var headerFooterSettings; 69 var headerFooterSettings;
70 70
71 // Object holding all the color related settings. 71 // Object holding all the color related settings.
72 var colorSettings; 72 var colorSettings;
73 73
74 var previewArea;
Evan Stade 2011/10/05 03:05:23 docs
dpapad 2011/10/05 16:39:49 Done. Also updated the doc of the remaining object
75
74 // True if the user has click 'Advanced...' in order to open the system print 76 // True if the user has click 'Advanced...' in order to open the system print
75 // dialog. 77 // dialog.
76 var showingSystemDialog = false; 78 var showingSystemDialog = false;
77 79
78 // The range of options in the printer dropdown controlled by cloud print. 80 // The range of options in the printer dropdown controlled by cloud print.
79 var firstCloudPrintOptionPos = 0; 81 var firstCloudPrintOptionPos = 0;
80 var lastCloudPrintOptionPos = firstCloudPrintOptionPos; 82 var lastCloudPrintOptionPos = firstCloudPrintOptionPos;
81 83
82 // Store the current previewUid. 84 // Store the current previewUid.
83 var currentPreviewUid = ''; 85 var currentPreviewUid = '';
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 120
119 $('printer-list').disabled = true; 121 $('printer-list').disabled = true;
120 122
121 printHeader = print_preview.PrintHeader.getInstance(); 123 printHeader = print_preview.PrintHeader.getInstance();
122 pageSettings = print_preview.PageSettings.getInstance(); 124 pageSettings = print_preview.PageSettings.getInstance();
123 copiesSettings = print_preview.CopiesSettings.getInstance(); 125 copiesSettings = print_preview.CopiesSettings.getInstance();
124 layoutSettings = print_preview.LayoutSettings.getInstance(); 126 layoutSettings = print_preview.LayoutSettings.getInstance();
125 marginSettings = print_preview.MarginSettings.getInstance(); 127 marginSettings = print_preview.MarginSettings.getInstance();
126 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); 128 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance();
127 colorSettings = print_preview.ColorSettings.getInstance(); 129 colorSettings = print_preview.ColorSettings.getInstance();
130 previewArea = print_preview.PreviewArea.getInstance();
128 printHeader.addEventListeners(); 131 printHeader.addEventListeners();
129 pageSettings.addEventListeners(); 132 pageSettings.addEventListeners();
130 copiesSettings.addEventListeners(); 133 copiesSettings.addEventListeners();
131 headerFooterSettings.addEventListeners(); 134 headerFooterSettings.addEventListeners();
132 layoutSettings.addEventListeners(); 135 layoutSettings.addEventListeners();
133 marginSettings.addEventListeners(); 136 marginSettings.addEventListeners();
134 colorSettings.addEventListeners(); 137 colorSettings.addEventListeners();
138 previewArea.addEventListeners();
135 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; 139 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities;
136 140
137 showLoadingAnimation(); 141 showLoadingAnimation();
138 chrome.send('getInitiatorTabTitle'); 142 chrome.send('getInitiatorTabTitle');
139 chrome.send('getDefaultPrinter'); 143 chrome.send('getDefaultPrinter');
140 } 144 }
141 145
142 /** 146 /**
143 * Disables the input elements in the sidebar. 147 * Disables the input elements in the sidebar.
144 */ 148 */
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 window.location = cloudprint.getBaseURL(); 309 window.location = cloudprint.getBaseURL();
306 } 310 }
307 311
308 /** 312 /**
309 * Checks whether the specified settings are valid. 313 * Checks whether the specified settings are valid.
310 * 314 *
311 * @return {boolean} true if settings are valid, false if not. 315 * @return {boolean} true if settings are valid, false if not.
312 */ 316 */
313 function areSettingsValid() { 317 function areSettingsValid() {
314 var selectedPrinter = getSelectedPrinterName(); 318 var selectedPrinter = getSelectedPrinterName();
315 return pageSettings.isPageSelectionValid() && 319 return pageSettings.isPageSelectionValid()
316 (copiesSettings.isValid() || 320 && marginSettings.areMarginSettingsValid() &&
Evan Stade 2011/10/05 03:05:23 operator on end of line
dpapad 2011/10/05 16:39:49 Done.
317 selectedPrinter == PRINT_TO_PDF || 321 (copiesSettings.isValid() || selectedPrinter == PRINT_TO_PDF ||
318 selectedPrinter == PRINT_WITH_CLOUD_PRINT); 322 selectedPrinter == PRINT_WITH_CLOUD_PRINT);
319 } 323 }
320 324
321 /** 325 /**
322 * Creates an object based on the values in the printer settings. 326 * Creates an object based on the values in the printer settings.
323 * 327 *
324 * @return {Object} Object containing print job settings. 328 * @return {Object} Object containing print job settings.
325 */ 329 */
326 function getSettings() { 330 function getSettings() {
327 var deviceName = getSelectedPrinterName(); 331 var deviceName = getSelectedPrinterName();
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 loadSelectedPages(); 493 loadSelectedPages();
490 generateDraftData = false; 494 generateDraftData = false;
491 } else { 495 } else {
492 hasPendingPreviewRequest = true; 496 hasPendingPreviewRequest = true;
493 generateDraftData = true; 497 generateDraftData = true;
494 pageSettings.updatePageSelection(); 498 pageSettings.updatePageSelection();
495 } 499 }
496 500
497 printSettings.save(); 501 printSettings.save();
498 layoutSettings.updateState(); 502 layoutSettings.updateState();
503 previewArea.resetState();
499 isPrintReadyMetafileReady = false; 504 isPrintReadyMetafileReady = false;
500 isFirstPageLoaded = false; 505 isFirstPageLoaded = false;
501 506
502 var totalPageCount = pageSettings.totalPageCount; 507 var totalPageCount = pageSettings.totalPageCount;
503 if (!previewModifiable && totalPageCount > 0) 508 if (!previewModifiable && totalPageCount > 0)
504 generateDraftData = false; 509 generateDraftData = false;
505 510
506 var pageCount = totalPageCount != undefined ? totalPageCount : -1; 511 var pageCount = totalPageCount != undefined ? totalPageCount : -1;
507 chrome.send('getPreview', [JSON.stringify(getSettingsWithRequestID()), 512 chrome.send('getPreview', [JSON.stringify(getSettingsWithRequestID()),
508 pageCount, 513 pageCount,
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 var option = createDestinationListOption(optionText, 671 var option = createDestinationListOption(optionText,
667 optionValue, 672 optionValue,
668 isDefault, 673 isDefault,
669 isDisabled, 674 isDisabled,
670 isSeparator); 675 isSeparator);
671 var printerList = $('printer-list'); 676 var printerList = $('printer-list');
672 var before = printerList[position]; 677 var before = printerList[position];
673 printerList.add(option, before); 678 printerList.add(option, before);
674 return option; 679 return option;
675 } 680 }
681
676 /** 682 /**
677 * Sets the color mode for the PDF plugin. 683 * Sets the color mode for the PDF plugin.
678 * Called from PrintPreviewHandler::ProcessColorSetting(). 684 * Called from PrintPreviewHandler::ProcessColorSetting().
679 * @param {boolean} color is true if the PDF plugin should display in color. 685 * @param {boolean} color is true if the PDF plugin should display in color.
680 */ 686 */
681 function setColor(color) { 687 function setColor(color) {
682 var pdfViewer = $('pdf-viewer'); 688 var pdfViewer = $('pdf-viewer');
683 if (!pdfViewer) { 689 if (!pdfViewer) {
684 return; 690 return;
685 } 691 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 displayErrorMessage(localStrings.getString('invalidPrinterSettings')); 753 displayErrorMessage(localStrings.getString('invalidPrinterSettings'));
748 } 754 }
749 755
750 /** 756 /**
751 * Called when the PDF plugin loads its document. 757 * Called when the PDF plugin loads its document.
752 */ 758 */
753 function onPDFLoad() { 759 function onPDFLoad() {
754 if (previewModifiable) { 760 if (previewModifiable) {
755 setPluginPreviewPageCount(); 761 setPluginPreviewPageCount();
756 } 762 }
757 $('pdf-viewer').fitToHeight();
758 cr.dispatchSimpleEvent(document, 'PDFLoaded'); 763 cr.dispatchSimpleEvent(document, 'PDFLoaded');
759 isFirstPageLoaded = true; 764 isFirstPageLoaded = true;
760 checkAndHideOverlayLayerIfValid(); 765 checkAndHideOverlayLayerIfValid();
761 sendPrintDocumentRequestIfNeeded(); 766 sendPrintDocumentRequestIfNeeded();
762 } 767 }
763 768
764 function setPluginPreviewPageCount() { 769 function setPluginPreviewPageCount() {
765 $('pdf-viewer').printPreviewPageCount( 770 $('pdf-viewer').printPreviewPageCount(
766 pageSettings.previouslySelectedPages.length); 771 pageSettings.previouslySelectedPages.length);
767 } 772 }
(...skipping 11 matching lines...) Expand all
779 if (!isExpectedPreviewResponse(previewResponseId)) 784 if (!isExpectedPreviewResponse(previewResponseId))
780 return; 785 return;
781 pageSettings.updateState(pageCount); 786 pageSettings.updateState(pageCount);
782 previewModifiable = isModifiable; 787 previewModifiable = isModifiable;
783 if (!previewModifiable && pageSettings.requestPrintPreviewIfNeeded()) 788 if (!previewModifiable && pageSettings.requestPrintPreviewIfNeeded())
784 return; 789 return;
785 790
786 cr.dispatchSimpleEvent(document, 'updateSummary'); 791 cr.dispatchSimpleEvent(document, 'updateSummary');
787 } 792 }
788 793
794 /**
795 * @param {printing::PageSizeMargins} pageLayout The default layout of the page
796 * in points.
797 */
789 function onDidGetDefaultPageLayout(pageLayout) { 798 function onDidGetDefaultPageLayout(pageLayout) {
790 // TODO(aayushkumar): Do something here! 799 marginSettings.currentDefaultPageLayout = new print_preview.PageLayout(
800 pageLayout.contentWidth,
801 pageLayout.contentHeight,
802 pageLayout.marginLeft,
803 pageLayout.marginTop,
804 pageLayout.marginRight,
805 pageLayout.marginBottom);
791 } 806 }
792 807
793 /** 808 /**
794 * This function sends a request to hide the overlay layer only if there is no 809 * This function sends a request to hide the overlay layer only if there is no
795 * pending print document request and we are not waiting for the print ready 810 * pending print document request and we are not waiting for the print ready
796 * metafile. 811 * metafile.
797 */ 812 */
798 function checkAndHideOverlayLayerIfValid() { 813 function checkAndHideOverlayLayerIfValid() {
799 var selectedPrinter = getSelectedPrinterName(); 814 var selectedPrinter = getSelectedPrinterName();
800 var printToDialog = selectedPrinter == PRINT_TO_PDF || 815 var printToDialog = selectedPrinter == PRINT_TO_PDF ||
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 971
957 pdfViewer = document.createElement('embed'); 972 pdfViewer = document.createElement('embed');
958 pdfViewer.setAttribute('id', 'pdf-viewer'); 973 pdfViewer.setAttribute('id', 'pdf-viewer');
959 pdfViewer.setAttribute('type', 974 pdfViewer.setAttribute('type',
960 'application/x-google-chrome-print-preview-pdf'); 975 'application/x-google-chrome-print-preview-pdf');
961 pdfViewer.setAttribute('src', srcURL); 976 pdfViewer.setAttribute('src', srcURL);
962 pdfViewer.setAttribute('aria-live', 'polite'); 977 pdfViewer.setAttribute('aria-live', 'polite');
963 pdfViewer.setAttribute('aria-atomic', 'true'); 978 pdfViewer.setAttribute('aria-atomic', 'true');
964 $('mainview').appendChild(pdfViewer); 979 $('mainview').appendChild(pdfViewer);
965 pdfViewer.onload('onPDFLoad()'); 980 pdfViewer.onload('onPDFLoad()');
981 pdfViewer.onScroll('onPreviewPositionChanged()');
982 pdfViewer.onPluginSizeChanged('onPreviewPositionChanged()');
966 pdfViewer.removePrintButton(); 983 pdfViewer.removePrintButton();
967 pdfViewer.grayscale(true); 984 pdfViewer.grayscale(true);
968 } 985 }
969 986
970 /** 987 /**
988 * Called either when there is a scroll event or when the plugin size changes.
989 */
990 function onPreviewPositionChanged() {
991 marginSettings.onPreviewPositionChanged();
992 }
993
994 /**
971 * @return {boolean} true if a compatible pdf plugin exists. 995 * @return {boolean} true if a compatible pdf plugin exists.
972 */ 996 */
973 function checkCompatiblePluginExists() { 997 function checkCompatiblePluginExists() {
974 var dummyPlugin = $('dummy-viewer') 998 var dummyPlugin = $('dummy-viewer');
975 return !!(dummyPlugin.onload && 999 var pluginInterface = [ dummyPlugin.onload,
976 dummyPlugin.goToPage && 1000 dummyPlugin.goToPage,
977 dummyPlugin.removePrintButton && 1001 dummyPlugin.removePrintButton,
978 dummyPlugin.loadPreviewPage && 1002 dummyPlugin.loadPreviewPage,
979 dummyPlugin.printPreviewPageCount && 1003 dummyPlugin.printPreviewPageCount,
980 dummyPlugin.resetPrintPreviewUrl); 1004 dummyPlugin.resetPrintPreviewUrl,
1005 dummyPlugin.onPluginSizeChanged,
1006 dummyPlugin.onScroll,
1007 dummyPlugin.pageXOffset,
1008 dummyPlugin.pageYOffset,
1009 dummyPlugin.setZoomLevel,
1010 dummyPlugin.setPageXOffset,
1011 dummyPlugin.setPageYOffset,
1012 dummyPlugin.getHorizontalScrollbarThickness,
1013 dummyPlugin.getVerticalScrollbarThickness,
1014 dummyPlugin.getPageLocationNormalized,
1015 dummyPlugin.getHeight,
1016 dummyPlugin.getWidth ];
1017
1018 for (var i = 0; i < pluginInterface.length; i++) {
1019 if (!pluginInterface[i])
1020 return false;
1021 }
1022 return true;
981 } 1023 }
982 1024
983 window.addEventListener('DOMContentLoaded', onLoad); 1025 window.addEventListener('DOMContentLoaded', onLoad);
984 1026
985 /** 1027 /**
986 * Sets the default values and sends a request to regenerate preview data. 1028 * Sets the default values and sends a request to regenerate preview data.
987 * Resets the margin options only if |resetMargins| is true. 1029 * Resets the margin options only if |resetMargins| is true.
988 */ 1030 */
989 function setDefaultValuesAndRegeneratePreview(resetMargins) { 1031 function setDefaultValuesAndRegeneratePreview(resetMargins) {
990 if (resetMargins) 1032 if (resetMargins)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1028 <include src="print_preview_animations.js"/> 1070 <include src="print_preview_animations.js"/>
1029 <include src="print_preview_cloud.js"/> 1071 <include src="print_preview_cloud.js"/>
1030 <include src="print_preview_utils.js"/> 1072 <include src="print_preview_utils.js"/>
1031 <include src="print_header.js"/> 1073 <include src="print_header.js"/>
1032 <include src="page_settings.js"/> 1074 <include src="page_settings.js"/>
1033 <include src="copies_settings.js"/> 1075 <include src="copies_settings.js"/>
1034 <include src="header_footer_settings.js"/> 1076 <include src="header_footer_settings.js"/>
1035 <include src="layout_settings.js"/> 1077 <include src="layout_settings.js"/>
1036 <include src="color_settings.js"/> 1078 <include src="color_settings.js"/>
1037 <include src="margin_settings.js"/> 1079 <include src="margin_settings.js"/>
1080 <include src="margin_textbox.js"/>
1081 <include src="margin_line.js"/>
1082 <include src="margin_utils.js"/>
1083 <include src="margins_ui.js"/>
1084 <include src="preview_area.js"/>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698