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;
HandTool.initialize({
this.handTool = new HandTool({
container: container,
toggleHandTool: document.getElementById('toggleHandTool')
});
this.handTool = HandTool;
this.pdfDocumentProperties = new PDFDocumentProperties({
overlayName: 'documentPropertiesOverlay',
@ -2148,7 +2147,7 @@ window.addEventListener('keydown', function keydown(evt) {
case 72: // 'h'
if (!isViewerInPresentationMode) {
HandTool.toggle();
PDFViewerApplication.handTool.toggle();
}
break;
case 82: // 'r'

View File

@ -35,30 +35,49 @@ var GrabToPan = grabToPan.GrabToPan;
var Preferences = preferences.Preferences;
var SecondaryToolbar = secondaryToolbar.SecondaryToolbar;
var HandTool = {
initialize: function handToolInitialize(options) {
var toggleHandTool = options.toggleHandTool;
/**
* @typedef {Object} HandToolOptions
* @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({
element: options.container,
element: this.container,
onActiveChanged: function(isActive) {
if (!toggleHandTool) {
if (!this.toggleHandTool) {
return;
}
if (isActive) {
toggleHandTool.title =
this.toggleHandTool.title =
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');
} else {
toggleHandTool.title =
this.toggleHandTool.title =
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');
}
}
}.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) {
Preferences.get('enableHandToolOnLoad').then(function resolved(value) {
@ -79,27 +98,38 @@ var HandTool = {
}
}.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;
}));