Skip to content

Commit

Permalink
Merge pull request mozilla#5678 from timvandermeij/pdf_attachment_view
Browse files Browse the repository at this point in the history
Refactor the attachment code
  • Loading branch information
Snuffleupagus authored and speedplane committed Feb 24, 2015
2 parents 4f3b49c + 21d2c9e commit 0c95e0f
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 62 deletions.
54 changes: 0 additions & 54 deletions web/document_attachments_view.js

This file was deleted.

87 changes: 87 additions & 0 deletions web/pdf_attachment_view.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* 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.
*/
/* globals getFileName */

'use strict';

/**
* @typedef {Object} PDFAttachmentViewOptions
* @property {HTMLDivElement} container - The viewer element.
* @property {Array} attachments - An array of attachment objects.
* @property {DownloadManager} downloadManager - The download manager.
*/

/**
* @class
*/
var PDFAttachmentView = (function PDFAttachmentViewClosure() {
/**
* @constructs PDFAttachmentView
* @param {PDFAttachmentViewOptions} options
*/
function PDFAttachmentView(options) {
this.container = options.container;
this.attachments = options.attachments;
this.downloadManager = options.downloadManager;
}

PDFAttachmentView.prototype = {
reset: function PDFAttachmentView_reset() {
var container = this.container;
while (container.firstChild) {
container.removeChild(container.firstChild);
}
},

/**
* @private
*/
_bindLink: function PDFAttachmentView_bindLink(button, content, filename) {
button.onclick = function downloadFile(e) {
this.downloadManager.downloadData(content, filename, '');
return false;
}.bind(this);
},

render: function PDFAttachmentView_render() {
var attachments = this.attachments;

this.reset();

if (!attachments) {
return;
}

var names = Object.keys(attachments).sort(function(a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
for (var i = 0, len = names.length; i < len; i++) {
var item = attachments[names[i]];
var filename = getFileName(item.filename);
var div = document.createElement('div');
div.className = 'attachmentsItem';
var button = document.createElement('button');
this._bindLink(button, item.content, filename);
button.textContent = filename;
div.appendChild(button);
this.container.appendChild(div);
}
}
};

return PDFAttachmentView;
})();
2 changes: 1 addition & 1 deletion web/viewer.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
<script src="pdf_thumbnail_view.js"></script>
<script src="pdf_thumbnail_viewer.js"></script>
<script src="pdf_outline_view.js"></script>
<script src="document_attachments_view.js"></script>
<script src="pdf_attachment_view.js"></script>
<script src="pdf_find_bar.js"></script>
<script src="pdf_find_controller.js"></script>
<script src="pdf_history.js"></script>
Expand Down
15 changes: 8 additions & 7 deletions web/viewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
PDFHistory, Preferences, SidebarView, ViewHistory, Stats,
PDFThumbnailViewer, URL, noContextMenuHandler, SecondaryToolbar,
PasswordPrompt, PresentationMode, HandTool, Promise,
DocumentProperties, PDFOutlineView, DocumentAttachmentsView,
DocumentProperties, PDFOutlineView, PDFAttachmentView,
OverlayManager, PDFFindController, PDFFindBar, getVisibleElements,
watchScroll, PDFViewer, PDFRenderingQueue, PresentationModeState,
RenderingStates, DEFAULT_SCALE, UNKNOWN_SCALE,
Expand Down Expand Up @@ -87,6 +87,7 @@ var mozL10n = document.mozL10n || document.webL10n;
//#include pdf_viewer.js
//#include pdf_thumbnail_viewer.js
//#include pdf_outline_view.js
//#include pdf_attachment_view.js

var PDFViewerApplication = {
initialBookmark: document.location.hash.substring(1),
Expand Down Expand Up @@ -984,14 +985,16 @@ var PDFViewerApplication = {
}
});
pdfDocument.getAttachments().then(function(attachments) {
var attachmentsView = document.getElementById('attachmentsView');
self.attachments = new DocumentAttachmentsView({
var container = document.getElementById('attachmentsView');
self.attachments = new PDFAttachmentView({
container: container,
attachments: attachments,
attachmentsView: attachmentsView
downloadManager: new DownloadManager()
});
self.attachments.render();
document.getElementById('viewAttachments').disabled = !attachments;

if (!attachments && !attachmentsView.classList.contains('hidden')) {
if (!attachments && !container.classList.contains('hidden')) {
self.switchSidebarView('thumbs');
}
if (attachments &&
Expand Down Expand Up @@ -1392,8 +1395,6 @@ var PDFViewerApplication = {
window.PDFView = PDFViewerApplication; // obsolete name, using it as an alias
//#endif

//#include document_attachments_view.js

//#if CHROME
//(function rewriteUrlClosure() {
// // Run this code outside DOMContentLoaded to make sure that the URL
Expand Down

0 comments on commit 0c95e0f

Please sign in to comment.