Index: chrome/browser/resources/print_preview/print_preview.js |
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js |
index ad9ba00aa872fa5771856dc1421f00f9a8ed9681..978f1f1252d5f2946ad6e11c7af6334452bd7dcc 100644 |
--- a/chrome/browser/resources/print_preview/print_preview.js |
+++ b/chrome/browser/resources/print_preview/print_preview.js |
@@ -53,27 +53,32 @@ var isPrintReadyMetafileReady = false; |
// True when preview tab is hidden. |
var isTabHidden = false; |
-// Object holding the print and cancel buttons. |
+// @type {print_preview.PrintHeader} Holds the print and cancel buttons. |
var printHeader; |
-// Object holding all the pages related settings. |
+// @type {print_preview.PageSettings} Holds all the pages related settings. |
var pageSettings; |
-// Object holding all the copies related settings. |
+// @type {print_preview.CopiesSettings} Holds all the copies related settings. |
var copiesSettings; |
-// Object holding all the layout related settings. |
+// @type {print_preview.LayoutSettings} Holds all the layout related settings. |
var layoutSettings; |
-// Object holding all the margin related settings. |
+// @type {print_preview.MarginSettings} Holds all the margin related settings. |
var marginSettings; |
-// Object holding all the header footer related settings. |
+// @type {print_preview.HeaderFooterSettings} Holds all the header footer |
+// related settings. |
var headerFooterSettings; |
-// Object holding all the color related settings. |
+// @type {print_preview.ColorSettings} Holds all the color related settings. |
var colorSettings; |
+// @type {print_preview.PreviewArea} Holds information related to the preview |
+// area (on the right). |
+var previewArea; |
+ |
// True if the user has click 'Advanced...' in order to open the system print |
// dialog. |
var showingSystemDialog = false; |
@@ -130,12 +135,14 @@ function onLoad() { |
marginSettings = print_preview.MarginSettings.getInstance(); |
headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); |
colorSettings = print_preview.ColorSettings.getInstance(); |
+ previewArea = print_preview.PreviewArea.getInstance(); |
pageSettings.addEventListeners(); |
copiesSettings.addEventListeners(); |
headerFooterSettings.addEventListeners(); |
layoutSettings.addEventListeners(); |
marginSettings.addEventListeners(); |
colorSettings.addEventListeners(); |
+ previewArea.addEventListeners(); |
$('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; |
showLoadingAnimation(); |
@@ -321,8 +328,8 @@ function finishedCloudPrinting() { |
function areSettingsValid() { |
var selectedPrinter = getSelectedPrinterName(); |
return pageSettings.isPageSelectionValid() && |
- (copiesSettings.isValid() || |
- selectedPrinter == PRINT_TO_PDF || |
+ marginSettings.areMarginSettingsValid() && |
+ (copiesSettings.isValid() || selectedPrinter == PRINT_TO_PDF || |
selectedPrinter == PRINT_WITH_CLOUD_PRINT); |
} |
@@ -504,6 +511,7 @@ function requestPrintPreview() { |
printSettings.save(); |
layoutSettings.updateState(); |
+ previewArea.resetState(); |
isPrintReadyMetafileReady = false; |
isFirstPageLoaded = false; |
@@ -760,7 +768,6 @@ function onPDFLoad() { |
if (previewModifiable) { |
setPluginPreviewPageCount(); |
} |
- $('pdf-viewer').fitToHeight(); |
cr.dispatchSimpleEvent(document, 'PDFLoaded'); |
isFirstPageLoaded = true; |
checkAndHideOverlayLayerIfValid(); |
@@ -792,8 +799,18 @@ function onDidGetPreviewPageCount(pageCount, isModifiable, previewResponseId) { |
cr.dispatchSimpleEvent(document, 'updateSummary'); |
} |
+/** |
+ * @param {printing::PageSizeMargins} pageLayout The default layout of the page |
+ * in points. |
+ */ |
function onDidGetDefaultPageLayout(pageLayout) { |
- // TODO(aayushkumar): Do something here! |
+ marginSettings.currentDefaultPageLayout = new print_preview.PageLayout( |
+ pageLayout.contentWidth, |
+ pageLayout.contentHeight, |
+ pageLayout.marginLeft, |
+ pageLayout.marginTop, |
+ pageLayout.marginRight, |
+ pageLayout.marginBottom); |
} |
/** |
@@ -969,21 +986,48 @@ function createPDFPlugin(srcDataIndex) { |
pdfViewer.setAttribute('aria-atomic', 'true'); |
$('mainview').appendChild(pdfViewer); |
pdfViewer.onload('onPDFLoad()'); |
+ pdfViewer.onScroll('onPreviewPositionChanged()'); |
+ pdfViewer.onPluginSizeChanged('onPreviewPositionChanged()'); |
pdfViewer.removePrintButton(); |
pdfViewer.grayscale(true); |
} |
/** |
+ * Called either when there is a scroll event or when the plugin size changes. |
+ */ |
+function onPreviewPositionChanged() { |
+ marginSettings.onPreviewPositionChanged(); |
+} |
+ |
+/** |
* @return {boolean} true if a compatible pdf plugin exists. |
*/ |
function checkCompatiblePluginExists() { |
- var dummyPlugin = $('dummy-viewer') |
- return !!(dummyPlugin.onload && |
- dummyPlugin.goToPage && |
- dummyPlugin.removePrintButton && |
- dummyPlugin.loadPreviewPage && |
- dummyPlugin.printPreviewPageCount && |
- dummyPlugin.resetPrintPreviewUrl); |
+ var dummyPlugin = $('dummy-viewer'); |
+ var pluginInterface = [ dummyPlugin.onload, |
+ dummyPlugin.goToPage, |
+ dummyPlugin.removePrintButton, |
+ dummyPlugin.loadPreviewPage, |
+ dummyPlugin.printPreviewPageCount, |
+ dummyPlugin.resetPrintPreviewUrl, |
+ dummyPlugin.onPluginSizeChanged, |
+ dummyPlugin.onScroll, |
+ dummyPlugin.pageXOffset, |
+ dummyPlugin.pageYOffset, |
+ dummyPlugin.setZoomLevel, |
+ dummyPlugin.setPageXOffset, |
+ dummyPlugin.setPageYOffset, |
+ dummyPlugin.getHorizontalScrollbarThickness, |
+ dummyPlugin.getVerticalScrollbarThickness, |
+ dummyPlugin.getPageLocationNormalized, |
+ dummyPlugin.getHeight, |
+ dummyPlugin.getWidth ]; |
+ |
+ for (var i = 0; i < pluginInterface.length; i++) { |
+ if (!pluginInterface[i]) |
+ return false; |
+ } |
+ return true; |
} |
/** |
@@ -1061,3 +1105,8 @@ window.onkeydown = onKeyDown; |
<include src="layout_settings.js"/> |
<include src="color_settings.js"/> |
<include src="margin_settings.js"/> |
+<include src="margin_textbox.js"/> |
+<include src="margin_line.js"/> |
+<include src="margin_utils.js"/> |
+<include src="margins_ui.js"/> |
+<include src="preview_area.js"/> |