/* * HelpPlacardController.js * Keynote HTML Player * * Created by Tungwei Cheng * Copyright (c) 2012-2013 Apple Inc. All rights reserved. */ var HelpPlacardController = Class.create({ initialize: function(domNode) { //root node for the slide number control this.domNode = domNode; this.width = 822; this.height = 603; var itemList = [ {key: " ", text: kHelpPlacardNavigationTitle, header:true}, {key: "return/enter   space   →   ↓   page down", text: kHelpPlacardAdvanceToNextBuild}, {key: "[   shift - page up   shift - ←", text: kHelpPlacardGoBackToPreviousBuild}, {key: "]   shift - →", text: kHelpPlacardAdvanceAndSkipBuild}, {key: "shift - page down   shift - ↓   +   =", text: kHelpPlacardAdvanceToNextSlide}, {key: "←   ↑   -   shift - ↑", text: kHelpPlacardGoBackToPreviousSlide}, {key: "home", text: kHelpPlacardGoToFirstSlide}, {key: "end", text: kHelpPlacardGoToLastSlide}, {key: "slide number + return/enter", text: kHelpPlacardGoToSpecificSlide}, {key: " ", text: kHelpPlacardOtherTitle, header: true}, {key: "?   /", text: kHelpPlacardShowOrHideKeyboardShortcuts}, {key: "s", text: kHelpPlacardShowOrHideTheCurrentSlideNumber}, {key: "esc   q", text: kHelpPlacardQuitPresentationMode} ]; this.helpPlacardTitleBar = new HelpPlacardTitleBar(); this.helpPlacardContentPanel = new HelpPlacardContentPanel(itemList); this.helpPlacardFooter = new HelpPlacardFooter(); this.domNode.appendChild(this.helpPlacardTitleBar.domNode); this.domNode.appendChild(this.helpPlacardContentPanel.domNode); this.domNode.appendChild(this.helpPlacardFooter.domNode); this.isShowing = false; }, handleClickEvent: function(event) { event = event || window.event; var target = event.target || event.srcElement; // stop event from propagating up if (this.isShowing) { if (browserPrefix === "ms") { event.cancelBubble = true; } else { event.stopPropagation(); } } this.hide(); }, setPosition: function(left, top) { this.domNode.style.left = left + "px"; this.domNode.style.top = top + "px" }, show: function() { this.isShowing = true; this.domNode.style.display = "block"; this.domNode.style.opacity = 1; }, hide: function() { this.isShowing = false; this.domNode.style.display = "none"; this.domNode.style.opacity = 0; }, registerDragEvents: function() { this.drag = this.dragging.bindAsEventListener(this); this.dragStop = this.stopDragging.bindAsEventListener(this); Event.observe(this.domNode, "mousedown", this.startDragging.bindAsEventListener(this)); }, startDragging: function(event) { this.startX = Event.pointerX(event); this.startY = Event.pointerY(event); this.left = parseInt(this.domNode.style.left); this.top = parseInt(this.domNode.style.top); Event.observe(document, "mousemove", this.drag); Event.observe(this.domNode, "mouseup", this.dragStop); }, dragging: function(event) { var x = Event.pointerX(event); var y = Event.pointerY(event); this.domNode.style.left = (x - this.startX + this.left) + "px"; this.domNode.style.top = (y - this.startY + this.top) + "px"; Event.stop(event); }, stopDragging: function(event) { Event.stopObserving(document, "mousemove", this.drag); Event.stopObserving(this.domNode, "mouseup", this.dragStop); Event.stop(event); } }); var HelpPlacardTitleBar = Class.create({ initialize: function() { this.domNode = document.createElement("div"); this.domNode.setAttribute("class", "helpPlacardTitleBar"); this.closeButton = document.createElement("div"); this.closeButton.setAttribute("class", "helpPlacardCloseButton"); this.title = document.createElement("div"); this.title.setAttribute("class", "helpPlacardTitle"); this.title.innerHTML = kHelpPlacardMainTitle; this.domNode.appendChild(this.closeButton); this.domNode.appendChild(this.title); } }); var HelpPlacardContentPanel = Class.create({ initialize: function(itemList) { this.domNode = document.createElement("div"); this.domNode.setAttribute("class", "helpPlacardContentPanel"); for (var i = 0, length = itemList.length; i < length; i++) { var item = itemList[i]; var div = document.createElement("div"); var leftDiv, rightDiv; if (item.header) { div.setAttribute("class", "helpPlacardHeader"); leftDiv = document.createElement("div"); leftDiv.setAttribute("class", "helpPlacardLeftHeaderItem"); leftDiv.innerHTML = item.text; div.appendChild(leftDiv); } else { div.setAttribute("class", "helpPlacardItem"); leftDiv = document.createElement("div"); leftDiv.setAttribute("class", "helpPlacardRightItem"); leftDiv.innerHTML = item.key; rightDiv = document.createElement("div"); rightDiv.setAttribute("class", "helpPlacardLeftItem"); rightDiv.innerHTML = item.text; div.appendChild(leftDiv); div.appendChild(rightDiv); } this.domNode.appendChild(div); } } }); var HelpPlacardFooter = Class.create({ initialize: function() { this.domNode = document.createElement("div"); this.domNode.setAttribute("class", "helpPlacardFooter"); var div = document.createElement("div"); div.innerHTML = "Acknowledgements"; div.setAttribute("class", "helpPlacardAcknowledgementsButton"); Event.observe(div, "click", this.handleClickEvent.bind(this)); this.domNode.appendChild(div); }, handleClickEvent: function(event) { event = event || window.event; // stop event from propagating up if (browserPrefix === "ms") { event.cancelBubble = true; } else { event.stopPropagation(); } window.open("Acknowledgements.pdf", "_Acknowledgements"); } });