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

Unified Diff: chrome/browser/resources/print_preview/preview_area.js

Issue 10108001: Refactor print preview web ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Resolve conflicts Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/print_preview/preview_area.js
diff --git a/chrome/browser/resources/print_preview/preview_area.js b/chrome/browser/resources/print_preview/preview_area.js
deleted file mode 100644
index ed5e92c69ea2cfdfdf28e7e1a82e8dbb9f0e4cfc..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/print_preview/preview_area.js
+++ /dev/null
@@ -1,299 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-cr.define('print_preview', function() {
- 'use strict';
-
- /**
- * Creates a PreviewArea object. It represents the area where the preview
- * document is displayed.
- * @constructor
- */
- function PreviewArea() {
- // The embedded pdf plugin object.
- this.pdfPlugin_ = null;
-
- // @type {HTMLDivElement} A layer on top of |this.pdfPlugin_| used for
- // displaying messages to the user.
- this.overlayLayer = $('overlay-layer');
- // @type {HTMLDivElement} Contains text displayed to the user followed by
- // three animated dots.
- this.customMessageWithDots_ = $('custom-message-with-dots');
- // @type {HTMLDivElement} Contains text displayed to the user.
- this.customMessage_ = $('custom-message');
- // @type {HTMLInputElement} Button associated with a displayed error
- // message.
- this.errorButton = $('error-button');
- // @type {HTMLDivElement} Contains three animated (dancing) dots.
- this.dancingDotsText = $('dancing-dots-text');
-
- // True if the pdf document is loaded in the preview area.
- this.pdfLoaded_ = false;
-
- // Contains the zoom level just before a new preview is requested so the
- // same zoom level can be restored.
- this.zoomLevel_ = null;
- // @type {{x: number, y: number}} Contains the page offset values just
- // before a new preview is requested so that the scroll amount can be
- // restored later.
- this.pageOffset_ = null;
- // @type {print_preview.Rect} A rectangle describing the postion of the
- // most visible page normalized with respect to the total height and width
- // of the plugin.
- this.pageLocationNormalized = null;
-
- // @type {EventTracker} Used to keep track of certain event listeners.
- this.eventTracker = new EventTracker();
-
- this.addEventListeners_();
- }
-
- cr.addSingletonGetter(PreviewArea);
-
- PreviewArea.prototype = {
- /**
- * The width of the plugin area in pixels, excluding any visible scrollbars,
- * @type {number}
- */
- get width() {
- return this.widthPercent * this.pdfPlugin_.offsetWidth;
- },
-
- /**
- * The height of the plugin area in pixels, excluding any visible
- * scrollbars.
- * @type {number}
- */
- get height() {
- return this.heightPercent * this.pdfPlugin_.offsetHeight;
- },
-
- /**
- * The width of the plugin area in percent, excluding any visible
- * scrollbars.
- * @type {number}
- */
- get widthPercent() {
- var width = this.pdfPlugin_.getWidth();
- var scrollbarWidth = this.pdfPlugin_.getVerticalScrollbarThickness();
- return (width - scrollbarWidth) / width;
- },
-
- /**
- * The height of the plugin area in percent, excluding any visible
- * scrollbars.
- * @type {number}
- */
- get heightPercent() {
- var height = this.pdfPlugin_.getHeight();
- var scrollbarHeight = this.pdfPlugin_.getHorizontalScrollbarThickness();
- return (height - scrollbarHeight) / height;
- },
-
- get pdfPlugin() {
- return this.pdfPlugin_;
- },
-
- get pdfLoaded() {
- return this.pdfLoaded_;
- },
-
- set pdfLoaded(pdfLoaded) {
- this.pdfLoaded_ = pdfLoaded;
- },
-
- /**
- * Initializes the PDF plugin and places it on the page.
- * @param {!string} srcURL The URL of the document to be loaded in the
- * plugin.
- * @private
- */
- createPDFPlugin_: function(srcURL) {
- this.pdfPlugin_ = document.createElement('embed');
- this.pdfPlugin_.setAttribute('id', 'pdf-viewer');
- this.pdfPlugin_.setAttribute(
- 'type', 'application/x-google-chrome-print-preview-pdf');
- this.pdfPlugin_.setAttribute('src', srcURL);
- this.pdfPlugin_.setAttribute('aria-live', 'polite');
- this.pdfPlugin_.setAttribute('aria-atomic', 'true');
- $('mainview').appendChild(this.pdfPlugin_);
-
- this.pdfPlugin_.onload('onPDFLoad()');
- this.pdfPlugin_.onScroll('onPreviewPositionChanged()');
- this.pdfPlugin_.onPluginSizeChanged('onPreviewPositionChanged()');
- this.pdfPlugin_.removePrintButton();
- this.pdfPlugin_.grayscale(true);
- },
-
- /**
- * Reloads the plugin with a new url.
- * @param {string} srcURL The URL to load in the plugin.
- * @private
- */
- reloadPDFPlugin_: function(srcURL) {
- // Need to call this before the reload(), where the plugin resets its
- // internal page count.
- this.pdfPlugin_.goToPage('0');
- this.pdfPlugin_.resetPrintPreviewUrl(srcURL);
- this.pdfPlugin_.reload();
- this.pdfPlugin_.grayscale(
- colorSettings.colorMode == print_preview.ColorSettings.GRAY);
- },
-
- /**
- * Creates the PDF plugin or reloads the existing one.
- * @param {number} srcDataIndex Preview data source index.
- */
- createOrReloadPDFPlugin: function(srcDataIndex) {
- var srcURL = getPageSrcURL(currentPreviewUid, srcDataIndex);
- this.pdfPlugin_ ? this.reloadPDFPlugin_(srcURL) :
- this.createPDFPlugin_(srcURL);
- },
-
- /**
- * Queries the plugin for the location of the most visible page and updates
- * |this.pageLocationNormalized|.
- */
- update: function() {
- if (!this.pdfLoaded_)
- return;
- var pluginLocation =
- this.pdfPlugin_.getPageLocationNormalized().split(';');
- this.pageLocationNormalized = new print_preview.Rect(
- parseFloat(pluginLocation[0]),
- parseFloat(pluginLocation[1]),
- parseFloat(pluginLocation[2]),
- parseFloat(pluginLocation[3]));
- },
-
- /**
- * Resets the state variables of |this|.
- */
- resetState: function() {
- if (this.pdfPlugin_ && previewModifiable) {
- this.zoomLevel_ = this.pdfPlugin_.getZoomLevel();
- this.pageOffset_ = {
- x: this.pdfPlugin_.pageXOffset(),
- y: this.pdfPlugin_.pageYOffset()
- };
- }
- this.pdfLoaded_ = false;
- },
-
- /**
- * Adds event listeners for various events.
- * @private
- */
- addEventListeners_: function() {
- document.addEventListener(customEvents.PDF_LOADED,
- this.onPDFLoaded_.bind(this));
- },
-
- /**
- * Listener executing when a |customEvents.PDF_LOADED| event occurs.
- * @private
- */
- onPDFLoaded_: function() {
- this.pdfPlugin_ = $('pdf-viewer');
- this.pdfLoaded_ = true;
- if (this.zoomLevel_ != null && this.pageOffset_ != null) {
- this.pdfPlugin_.setZoomLevel(this.zoomLevel_);
- this.pdfPlugin_.setPageXOffset(this.pageOffset_.x);
- this.pdfPlugin_.setPageYOffset(this.pageOffset_.y);
- } else {
- this.pdfPlugin_.fitToHeight();
- }
- },
-
- /**
- * Hides the |this.overlayLayer| and any messages currently displayed.
- */
- hideOverlayLayer: function() {
- this.eventTracker.add(this.overlayLayer, 'webkitTransitionEnd',
- this.hideOverlayLayerCleanup_.bind(this), false);
- if (this.pdfPlugin_)
- this.pdfPlugin_.classList.remove('invisible');
- this.overlayLayer.classList.add('invisible');
- },
-
- /**
- * Displays the "Preview loading..." animation.
- */
- showLoadingAnimation: function() {
- this.showCustomMessage(localStrings.getString('loading'));
- },
-
- /**
- * Necessary cleanup so that the dancing dots animation is not being
- * rendered in the background when not displayed.
- */
- hideOverlayLayerCleanup_: function() {
- this.customMessageWithDots_.hidden = true;
- this.eventTracker.remove(this.overlayLayer, 'webkitTransitionEnd');
- },
-
- /**
- * Displays |message| followed by three dancing dots animation.
- * @param {string} message The message to be displayed.
- */
- showCustomMessage: function(message) {
- this.customMessageWithDots_.innerHTML = message +
- this.dancingDotsText.innerHTML;
- this.customMessageWithDots_.hidden = false;
- if (this.pdfPlugin_)
- this.pdfPlugin_.classList.add('invisible');
- this.overlayLayer.classList.remove('invisible');
- },
-
- /**
- * Clears the custom message with dots animation.
- */
- clearCustomMessageWithDots: function() {
- this.customMessageWithDots_.innerHTML = '';
- this.customMessageWithDots_.hidden = true;
- },
-
- /**
- * Display an error message in the center of the preview area.
- * @param {string} errorMessage The error message to be displayed.
- */
- displayErrorMessageAndNotify: function(errorMessage) {
- this.overlayLayer.classList.remove('invisible');
- this.customMessage_.textContent = errorMessage;
- this.customMessage_.hidden = false;
- this.customMessageWithDots_.innerHTML = '';
- this.customMessageWithDots_.hidden = true;
- if (this.pdfPlugin_) {
- $('mainview').removeChild(this.pdfPlugin_);
- this.pdfPlugin_ = null;
- }
- cr.dispatchSimpleEvent(document, customEvents.PDF_GENERATION_ERROR);
- },
-
- /**
- * Display an error message in the center of the preview area followed by a
- * button.
- * @param {string} errorMessage The error message to be displayed.
- * @param {string} buttonText The text to be displayed within the button.
- * @param {string} buttonListener The listener to be executed when the
- * button is clicked.
- */
- displayErrorMessageWithButtonAndNotify: function(
- errorMessage, buttonText, buttonListener) {
- this.errorButton.disabled = false;
- this.errorButton.textContent = buttonText;
- this.errorButton.onclick = buttonListener;
- this.errorButton.hidden = false;
- $('system-dialog-throbber').hidden = true;
- $('native-print-dialog-throbber').hidden = true;
- if (cr.isMac)
- $('open-preview-app-throbber').hidden = true;
- this.displayErrorMessageAndNotify(errorMessage);
- }
- };
-
- return {
- PreviewArea: PreviewArea
- };
-});
« no previous file with comments | « chrome/browser/resources/print_preview/page_settings.js ('k') | chrome/browser/resources/print_preview/preview_generator.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698