Move event handler definitions
This commit is contained in:
parent
13874e962b
commit
359eabb26e
@ -45,6 +45,110 @@ class Display {
|
|||||||
this.displayGenerator = new DisplayGenerator();
|
this.displayGenerator = new DisplayGenerator();
|
||||||
this.windowScroll = new WindowScroll();
|
this.windowScroll = new WindowScroll();
|
||||||
|
|
||||||
|
this._onKeyDownHandlers = new Map([
|
||||||
|
['Escape', () => {
|
||||||
|
this.onSearchClear();
|
||||||
|
return true;
|
||||||
|
}],
|
||||||
|
['PageUp', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(this.index - 3, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['PageDown', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(this.index + 3, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['End', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(this.definitions.length - 1, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['Home', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(0, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['ArrowUp', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(this.index - 1, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['ArrowDown', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.entryScrollIntoView(this.index + 1, null, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['B', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.sourceTermView();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['F', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.nextTermView();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['E', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.noteTryAdd('term-kanji');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['K', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.noteTryAdd('kanji');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['R', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.noteTryAdd('term-kana');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['P', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
const index = this.index;
|
||||||
|
if (index < 0 || index >= this.definitions.length) { return; }
|
||||||
|
|
||||||
|
const entry = this.getEntry(index);
|
||||||
|
if (entry !== null && entry.dataset.type === 'term') {
|
||||||
|
this.audioPlay(this.definitions[index], this.firstExpressionIndex, index);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}],
|
||||||
|
['V', (e) => {
|
||||||
|
if (e.altKey) {
|
||||||
|
this.noteTryView();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}]
|
||||||
|
]);
|
||||||
|
|
||||||
this.setInteractive(true);
|
this.setInteractive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,9 +319,9 @@ class Display {
|
|||||||
|
|
||||||
onKeyDown(e) {
|
onKeyDown(e) {
|
||||||
const key = Display.getKeyFromEvent(e);
|
const key = Display.getKeyFromEvent(e);
|
||||||
const handler = Display._onKeyDownHandlers.get(key);
|
const handler = this._onKeyDownHandlers.get(key);
|
||||||
if (typeof handler === 'function') {
|
if (typeof handler === 'function') {
|
||||||
if (handler(this, e)) {
|
if (handler(e)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -814,120 +918,3 @@ class Display {
|
|||||||
return (typeof key === 'string' ? (key.length === 1 ? key.toUpperCase() : key) : '');
|
return (typeof key === 'string' ? (key.length === 1 ? key.toUpperCase() : key) : '');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Display._onKeyDownHandlers = new Map([
|
|
||||||
['Escape', (self) => {
|
|
||||||
self.onSearchClear();
|
|
||||||
return true;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['PageUp', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(self.index - 3, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['PageDown', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(self.index + 3, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['End', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(self.definitions.length - 1, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['Home', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(0, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['ArrowUp', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(self.index - 1, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['ArrowDown', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.entryScrollIntoView(self.index + 1, null, true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['B', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.sourceTermView();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['F', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.nextTermView();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['E', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.noteTryAdd('term-kanji');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['K', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.noteTryAdd('kanji');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['R', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.noteTryAdd('term-kana');
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['P', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
const index = self.index;
|
|
||||||
if (index < 0 || index >= self.definitions.length) { return; }
|
|
||||||
|
|
||||||
const entry = self.getEntry(index);
|
|
||||||
if (entry !== null && entry.dataset.type === 'term') {
|
|
||||||
self.audioPlay(self.definitions[index], self.firstExpressionIndex, index);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}],
|
|
||||||
|
|
||||||
['V', (self, e) => {
|
|
||||||
if (e.altKey) {
|
|
||||||
self.noteTryView();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}]
|
|
||||||
]);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user