/* Copyright 2012 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; (function (root, factory) { if (typeof define === 'function' && define.amd) { define('pdfjs-web/secondary_toolbar', ['exports', 'pdfjs-web/ui_utils'], factory); } else if (typeof exports !== 'undefined') { factory(exports, require('./ui_utils.js')); } else { factory((root.pdfjsWebSecondaryToolbar = {}), root.pdfjsWebUIUtils); } }(this, function (exports, uiUtils) { var SCROLLBAR_PADDING = uiUtils.SCROLLBAR_PADDING; var app; // Avoiding circular reference, see _setApp function below. var PDFViewerApplication = null; // = app.PDFViewerApplication; var SecondaryToolbar = { opened: false, previousContainerHeight: null, newContainerHeight: null, initialize: function secondaryToolbarInitialize(options) { this.toolbar = options.toolbar; this.buttonContainer = this.toolbar.firstElementChild; // Define the toolbar buttons. this.toggleButton = options.toggleButton; this.presentationModeButton = options.presentationModeButton; this.openFile = options.openFile; this.print = options.print; this.download = options.download; this.viewBookmark = options.viewBookmark; this.firstPage = options.firstPage; this.lastPage = options.lastPage; this.pageRotateCw = options.pageRotateCw; this.pageRotateCcw = options.pageRotateCcw; this.documentPropertiesButton = options.documentPropertiesButton; // Attach the event listeners. var elements = [ // Button to toggle the visibility of the secondary toolbar: { element: this.toggleButton, handler: this.toggle }, // All items within the secondary toolbar // (except for toggleHandTool, hand_tool.js is responsible for it): { element: this.presentationModeButton, handler: this.presentationModeClick }, { element: this.openFile, handler: this.openFileClick }, { element: this.print, handler: this.printClick }, { element: this.download, handler: this.downloadClick }, { element: this.viewBookmark, handler: this.viewBookmarkClick }, { element: this.firstPage, handler: this.firstPageClick }, { element: this.lastPage, handler: this.lastPageClick }, { element: this.pageRotateCw, handler: this.pageRotateCwClick }, { element: this.pageRotateCcw, handler: this.pageRotateCcwClick }, { element: this.documentPropertiesButton, handler: this.documentPropertiesClick } ]; for (var item in elements) { var element = elements[item].element; if (element) { element.addEventListener('click', elements[item].handler.bind(this)); } } }, // Event handling functions. presentationModeClick: function secondaryToolbarPresentationModeClick(evt) { PDFViewerApplication.requestPresentationMode(); this.close(); }, openFileClick: function secondaryToolbarOpenFileClick(evt) { var openFileInputName = PDFViewerApplication.appConfig.openFileInputName; document.getElementById(openFileInputName).click(); this.close(); }, printClick: function secondaryToolbarPrintClick(evt) { window.print(); this.close(); }, downloadClick: function secondaryToolbarDownloadClick(evt) { PDFViewerApplication.download(); this.close(); }, viewBookmarkClick: function secondaryToolbarViewBookmarkClick(evt) { this.close(); }, firstPageClick: function secondaryToolbarFirstPageClick(evt) { PDFViewerApplication.page = 1; this.close(); }, lastPageClick: function secondaryToolbarLastPageClick(evt) { if (PDFViewerApplication.pdfDocument) { PDFViewerApplication.page = PDFViewerApplication.pagesCount; } this.close(); }, pageRotateCwClick: function secondaryToolbarPageRotateCwClick(evt) { PDFViewerApplication.rotatePages(90); }, pageRotateCcwClick: function secondaryToolbarPageRotateCcwClick(evt) { PDFViewerApplication.rotatePages(-90); }, documentPropertiesClick: function secondaryToolbarDocumentPropsClick(evt) { PDFViewerApplication.pdfDocumentProperties.open(); this.close(); }, // Misc. functions for interacting with the toolbar. setMaxHeight: function secondaryToolbarSetMaxHeight(container) { if (!container || !this.buttonContainer) { return; } this.newContainerHeight = container.clientHeight; if (this.previousContainerHeight === this.newContainerHeight) { return; } this.buttonContainer.setAttribute('style', 'max-height: ' + (this.newContainerHeight - SCROLLBAR_PADDING) + 'px;'); this.previousContainerHeight = this.newContainerHeight; }, open: function secondaryToolbarOpen() { if (this.opened) { return; } this.opened = true; this.toggleButton.classList.add('toggled'); this.toolbar.classList.remove('hidden'); }, close: function secondaryToolbarClose(target) { if (!this.opened) { return; } else if (target && !this.toolbar.contains(target)) { return; } this.opened = false; this.toolbar.classList.add('hidden'); this.toggleButton.classList.remove('toggled'); }, toggle: function secondaryToolbarToggle() { if (this.opened) { this.close(); } else { this.open(); } } }; function _setApp(app_) { app = app_; PDFViewerApplication = app.PDFViewerApplication; } exports.SecondaryToolbar = SecondaryToolbar; exports._setApp = _setApp; }));