aboutsummaryrefslogtreecommitdiff
path: root/pointless/viewer/stage.js
diff options
context:
space:
mode:
Diffstat (limited to 'pointless/viewer/stage.js')
-rw-r--r--pointless/viewer/stage.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/pointless/viewer/stage.js b/pointless/viewer/stage.js
new file mode 100644
index 0000000..fa984fe
--- /dev/null
+++ b/pointless/viewer/stage.js
@@ -0,0 +1,54 @@
1/*
2 * stage.js
3 * Part of Pointless Viewer, a Beamer presentation viewer
4 * Copyright 2018 Pacien TRAN-GIRARD
5 * License: GNU GPL v3
6 */
7
8"use strict";
9
10class Stage {
11 constructor(onReady, onNext, onPrevious) {
12 this.onNext = onNext;
13 this.onPrevious = onPrevious;
14 this.projector = window.open(window.location.href);
15 this.audienceScreen = null;
16 this.presenterScreen = null;
17
18 var self = this;
19 this.projector.addEventListener("load", function() {
20 self.audienceScreen = new Screen(self.projector, false);
21 self.presenterScreen = new Screen(window, true);
22 onReady();
23 });
24
25 this._registerEventHandler(window);
26 this._registerEventHandler(this.projector);
27 }
28
29 setPage(page) {
30 this.audienceScreen.setPage(page);
31 this.presenterScreen.setPage(page);
32 }
33
34 _registerEventHandler(window) {
35 var self = this;
36 window.addEventListener("keypress", function(event) {
37 self._onCommand(event);
38 })
39 }
40
41 _onCommand(keyboardEvent) {
42 switch (keyboardEvent.key) {
43 case "Enter":
44 case " ":
45 case "ArrowRight":
46 case "n":
47 return this.onNext();
48
49 case "ArrowLeft":
50 case "p":
51 return this.onPrevious();
52 }
53 }
54}