diff options
Diffstat (limited to 'pointless/viewer/stage.js')
-rw-r--r-- | pointless/viewer/stage.js | 54 |
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 | |||
10 | class 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 | } | ||