Merge pull request #7207 from timvandermeij/hand-tool-class

Convert the hand tool to a class
This commit is contained in:
Tim van der Meij 2016-04-16 19:32:58 +02:00
commit a093d755b7
2 changed files with 64 additions and 35 deletions

View File

@ -225,11 +225,10 @@ var PDFViewerApplication = {
this.overlayManager = OverlayManager; this.overlayManager = OverlayManager;
HandTool.initialize({ this.handTool = new HandTool({
container: container, container: container,
toggleHandTool: document.getElementById('toggleHandTool') toggleHandTool: document.getElementById('toggleHandTool')
}); });
this.handTool = HandTool;
this.pdfDocumentProperties = new PDFDocumentProperties({ this.pdfDocumentProperties = new PDFDocumentProperties({
overlayName: 'documentPropertiesOverlay', overlayName: 'documentPropertiesOverlay',
@ -2148,7 +2147,7 @@ window.addEventListener('keydown', function keydown(evt) {
case 72: // 'h' case 72: // 'h'
if (!isViewerInPresentationMode) { if (!isViewerInPresentationMode) {
HandTool.toggle(); PDFViewerApplication.handTool.toggle();
} }
break; break;
case 82: // 'r' case 82: // 'r'

View File

@ -35,30 +35,49 @@ var GrabToPan = grabToPan.GrabToPan;
var Preferences = preferences.Preferences; var Preferences = preferences.Preferences;
var SecondaryToolbar = secondaryToolbar.SecondaryToolbar; var SecondaryToolbar = secondaryToolbar.SecondaryToolbar;
var HandTool = { /**
initialize: function handToolInitialize(options) { * @typedef {Object} HandToolOptions
var toggleHandTool = options.toggleHandTool; * @property {HTMLDivElement} container - The document container.
* @property {HTMLButtonElement} toggleHandTool - The button element for
* toggling the hand tool.
*/
/**
* @class
*/
var HandTool = (function HandToolClosure() {
/**
* @constructs HandTool
* @param {HandToolOptions} options
*/
function HandTool(options) {
this.container = options.container;
this.toggleHandTool = options.toggleHandTool;
this.wasActive = false;
this.handTool = new GrabToPan({ this.handTool = new GrabToPan({
element: options.container, element: this.container,
onActiveChanged: function(isActive) { onActiveChanged: function(isActive) {
if (!toggleHandTool) { if (!this.toggleHandTool) {
return; return;
} }
if (isActive) { if (isActive) {
toggleHandTool.title = this.toggleHandTool.title =
mozL10n.get('hand_tool_disable.title', null, 'Disable hand tool'); mozL10n.get('hand_tool_disable.title', null, 'Disable hand tool');
toggleHandTool.firstElementChild.textContent = this.toggleHandTool.firstElementChild.textContent =
mozL10n.get('hand_tool_disable_label', null, 'Disable hand tool'); mozL10n.get('hand_tool_disable_label', null, 'Disable hand tool');
} else { } else {
toggleHandTool.title = this.toggleHandTool.title =
mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool'); mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool');
toggleHandTool.firstElementChild.textContent = this.toggleHandTool.firstElementChild.textContent =
mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool'); mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool');
} }
} }.bind(this)
}); });
if (toggleHandTool) {
toggleHandTool.addEventListener('click', this.toggle.bind(this), false); if (this.toggleHandTool) {
this.toggleHandTool.addEventListener('click', this.toggle.bind(this));
window.addEventListener('localized', function (evt) { window.addEventListener('localized', function (evt) {
Preferences.get('enableHandToolOnLoad').then(function resolved(value) { Preferences.get('enableHandToolOnLoad').then(function resolved(value) {
@ -79,27 +98,38 @@ var HandTool = {
} }
}.bind(this)); }.bind(this));
} }
},
toggle: function handToolToggle() {
this.handTool.toggle();
SecondaryToolbar.close();
},
enterPresentationMode: function handToolEnterPresentationMode() {
if (this.handTool.active) {
this.wasActive = true;
this.handTool.deactivate();
}
},
exitPresentationMode: function handToolExitPresentationMode() {
if (this.wasActive) {
this.wasActive = null;
this.handTool.activate();
}
} }
};
HandTool.prototype = {
/**
* @return {boolean}
*/
get isActive() {
return !!this.handTool.active;
},
toggle: function HandTool_toggle() {
this.handTool.toggle();
SecondaryToolbar.close();
},
enterPresentationMode: function HandTool_enterPresentationMode() {
if (this.isActive) {
this.wasActive = true;
this.handTool.deactivate();
}
},
exitPresentationMode: function HandTool_exitPresentationMode() {
if (this.wasActive) {
this.wasActive = false;
this.handTool.activate();
}
}
};
return HandTool;
})();
exports.HandTool = HandTool; exports.HandTool = HandTool;
})); }));