From 5cd6dddeee91fbc5ed1d235a9591edbb016c3dbe Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 13 May 2014 12:08:39 +0200 Subject: [PATCH] Convert the existing overlays to use the OverlayManager --- web/document_properties.js | 40 +++++++---------------- web/password_prompt.js | 67 +++++++++++++++----------------------- web/secondary_toolbar.js | 2 +- web/viewer.html | 3 +- web/viewer.js | 27 +++++++-------- 5 files changed, 54 insertions(+), 85 deletions(-) diff --git a/web/document_properties.js b/web/document_properties.js index 25fbc8e61..e0161fefe 100644 --- a/web/document_properties.js +++ b/web/document_properties.js @@ -14,15 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals PDFView, Promise, mozL10n, getPDFFileNameFromURL */ +/* globals PDFView, Promise, mozL10n, getPDFFileNameFromURL, OverlayManager */ 'use strict'; var DocumentProperties = { - overlayContainer: null, + overlayName: null, fileName: '', fileSize: '', - visible: false, // Document property fields (in the viewer). fileNameField: null, @@ -39,7 +38,7 @@ var DocumentProperties = { pageCountField: null, initialize: function documentPropertiesInitialize(options) { - this.overlayContainer = options.overlayContainer; + this.overlayName = options.overlayName; // Set the document property fields. this.fileNameField = options.fileNameField; @@ -57,24 +56,18 @@ var DocumentProperties = { // Bind the event listener for the Close button. if (options.closeButton) { - options.closeButton.addEventListener('click', this.hide.bind(this)); + options.closeButton.addEventListener('click', this.close.bind(this)); } this.dataAvailablePromise = new Promise(function (resolve) { this.resolveDataAvailable = resolve; }.bind(this)); - // Bind the event listener for the Esc key (to close the dialog). - window.addEventListener('keydown', - function (e) { - if (e.keyCode === 27) { // Esc key - this.hide(); - } - }.bind(this)); + OverlayManager.register(this.overlayName, this.close.bind(this)); }, getProperties: function documentPropertiesGetProperties() { - if (!this.visible) { + if (!OverlayManager.active) { // If the dialog was closed before dataAvailablePromise was resolved, // don't bother updating the properties. return; @@ -136,26 +129,15 @@ var DocumentProperties = { } }, - show: function documentPropertiesShow() { - if (this.visible) { - return; - } - this.visible = true; - this.overlayContainer.classList.remove('hidden'); - this.overlayContainer.lastElementChild.classList.remove('hidden'); - - this.dataAvailablePromise.then(function () { + open: function documentPropertiesOpen() { + Promise.all([OverlayManager.open(this.overlayName), + this.dataAvailablePromise]).then(function () { this.getProperties(); }.bind(this)); }, - hide: function documentPropertiesClose() { - if (!this.visible) { - return; - } - this.visible = false; - this.overlayContainer.classList.add('hidden'); - this.overlayContainer.lastElementChild.classList.add('hidden'); + close: function documentPropertiesClose() { + OverlayManager.close(this.overlayName); }, parseDate: function documentPropertiesParseDate(inputDate) { diff --git a/web/password_prompt.js b/web/password_prompt.js index 498fb2d7f..2717c8686 100644 --- a/web/password_prompt.js +++ b/web/password_prompt.js @@ -14,22 +14,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals PDFJS, mozL10n */ +/* globals PDFJS, mozL10n, OverlayManager */ 'use strict'; var PasswordPrompt = { - visible: false, + overlayName: null, updatePassword: null, reason: null, - overlayContainer: null, passwordField: null, passwordText: null, passwordSubmit: null, passwordCancel: null, initialize: function secondaryToolbarInitialize(options) { - this.overlayContainer = options.overlayContainer; + this.overlayName = options.overlayName; this.passwordField = options.passwordField; this.passwordText = options.passwordText; this.passwordSubmit = options.passwordSubmit; @@ -39,57 +38,43 @@ var PasswordPrompt = { this.passwordSubmit.addEventListener('click', this.verifyPassword.bind(this)); - this.passwordCancel.addEventListener('click', this.hide.bind(this)); + this.passwordCancel.addEventListener('click', this.close.bind(this)); - this.passwordField.addEventListener('keydown', - function (e) { - if (e.keyCode === 13) { // Enter key - this.verifyPassword(); - } - }.bind(this)); + this.passwordField.addEventListener('keydown', function (e) { + if (e.keyCode === 13) { // Enter key + this.verifyPassword(); + } + }.bind(this)); - window.addEventListener('keydown', - function (e) { - if (e.keyCode === 27) { // Esc key - this.hide(); - } - }.bind(this)); + OverlayManager.register(this.overlayName, this.close.bind(this), true); }, - show: function passwordPromptShow() { - if (this.visible) { - return; - } - this.visible = true; - this.overlayContainer.classList.remove('hidden'); - this.overlayContainer.firstElementChild.classList.remove('hidden'); - this.passwordField.focus(); + open: function passwordPromptOpen() { + OverlayManager.open(this.overlayName).then(function () { + this.passwordField.focus(); - var promptString = mozL10n.get('password_label', null, - 'Enter the password to open this PDF file.'); + var promptString = mozL10n.get('password_label', null, + 'Enter the password to open this PDF file.'); - if (this.reason === PDFJS.PasswordResponses.INCORRECT_PASSWORD) { - promptString = mozL10n.get('password_invalid', null, - 'Invalid password. Please try again.'); - } + if (this.reason === PDFJS.PasswordResponses.INCORRECT_PASSWORD) { + promptString = mozL10n.get('password_invalid', null, + 'Invalid password. Please try again.'); + } - this.passwordText.textContent = promptString; + this.passwordText.textContent = promptString; + }.bind(this)); }, - hide: function passwordPromptClose() { - if (!this.visible) { - return; - } - this.visible = false; - this.passwordField.value = ''; - this.overlayContainer.classList.add('hidden'); - this.overlayContainer.firstElementChild.classList.add('hidden'); + close: function passwordPromptClose() { + OverlayManager.close(this.overlayName).then(function () { + this.passwordField.value = ''; + }.bind(this)); }, verifyPassword: function passwordPromptVerifyPassword() { var password = this.passwordField.value; if (password && password.length > 0) { - this.hide(); + this.close(); return this.updatePassword(password); } } diff --git a/web/secondary_toolbar.js b/web/secondary_toolbar.js index a3d7563ac..2775016d6 100644 --- a/web/secondary_toolbar.js +++ b/web/secondary_toolbar.js @@ -114,7 +114,7 @@ var SecondaryToolbar = { }, documentPropertiesClick: function secondaryToolbarDocumentPropsClick(evt) { - this.documentProperties.show(); + this.documentProperties.open(); this.close(); }, diff --git a/web/viewer.html b/web/viewer.html index 39c05a220..00b303f9d 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -77,10 +77,11 @@ http://sourceforge.net/adobe/cmap/wiki/License/ - + + diff --git a/web/viewer.js b/web/viewer.js index 6d92ad048..04129cac4 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -20,7 +20,7 @@ Preferences, SidebarView, ViewHistory, PageView, ThumbnailView, URL, noContextMenuHandler, SecondaryToolbar, PasswordPrompt, PresentationMode, HandTool, Promise, DocumentProperties, - DocumentOutlineView, DocumentAttachmentsView */ + DocumentOutlineView, DocumentAttachmentsView, OverlayManager */ 'use strict'; @@ -100,9 +100,10 @@ var currentPageNumber = 1; //#include pdf_find_controller.js //#include pdf_history.js //#include secondary_toolbar.js -//#include password_prompt.js //#include presentation_mode.js //#include hand_tool.js +//#include overlay_manager.js +//#include password_prompt.js //#include document_properties.js var PDFView = { @@ -183,14 +184,6 @@ var PDFView = { documentPropertiesButton: document.getElementById('documentProperties') }); - PasswordPrompt.initialize({ - overlayContainer: document.getElementById('overlayContainer'), - passwordField: document.getElementById('password'), - passwordText: document.getElementById('passwordText'), - passwordSubmit: document.getElementById('passwordSubmit'), - passwordCancel: document.getElementById('passwordCancel') - }); - PresentationMode.initialize({ container: container, secondaryToolbar: SecondaryToolbar, @@ -200,8 +193,16 @@ var PDFView = { pageRotateCcw: document.getElementById('contextPageRotateCcw') }); + PasswordPrompt.initialize({ + overlayName: 'passwordOverlay', + passwordField: document.getElementById('password'), + passwordText: document.getElementById('passwordText'), + passwordSubmit: document.getElementById('passwordSubmit'), + passwordCancel: document.getElementById('passwordCancel') + }); + DocumentProperties.initialize({ - overlayContainer: document.getElementById('overlayContainer'), + overlayName: 'documentPropertiesOverlay', closeButton: document.getElementById('documentPropertiesClose'), fileNameField: document.getElementById('fileNameField'), fileSizeField: document.getElementById('fileSizeField'), @@ -626,7 +627,7 @@ var PDFView = { var passwordNeeded = function passwordNeeded(updatePassword, reason) { PasswordPrompt.updatePassword = updatePassword; PasswordPrompt.reason = reason; - PasswordPrompt.show(); + PasswordPrompt.open(); }; function getDocumentProgress(progressData) { @@ -2165,7 +2166,7 @@ window.addEventListener('click', function click(evt) { }, false); window.addEventListener('keydown', function keydown(evt) { - if (PasswordPrompt.visible) { + if (OverlayManager.active) { return; }