Split list and editor logic

This commit is contained in:
Ian Gulliver
2019-06-20 20:52:58 +00:00
parent ceafd505a8
commit b31eff04aa

View File

@@ -18,7 +18,7 @@ class ListenUtils {
}
}
class Editor {
class List {
constructor(container) {
this.container_ = container;
}
@@ -105,6 +105,52 @@ class Editor {
elem.focus();
}
onKeyDown(e) {
switch (e.key) {
case 'd':
this.deleteSelected();
return;
case 'D':
this.deleteSelectedAndAfter();
return;
case 'j':
case 'ArrowDown':
this.selectNext();
e.preventDefault();
return;
case 'k':
case 'ArrowUp':
this.selectPrev();
e.preventDefault();
return;
case 'PageUp':
this.selectPrevPage();
e.preventDefault();
return;
case 'PageDown':
this.selectNextPage();
e.preventDefault();
return;
case 'Home':
this.selectFirst();
e.preventDefault();
return;
case 'End':
this.selectLast();
e.preventDefault();
return;
}
}
}
class Editor extends List {
addNodeAfter() {
Node.addAfter(this.container_, this.getSelected());
}
@@ -120,69 +166,31 @@ class Editor {
addGroupBefore() {
Group.addBefore(this.container_, this.getSelected());
}
onKeyDown(e) {
switch (e.key) {
case 'd':
this.deleteSelected();
break;
case 'D':
this.deleteSelectedAndAfter();
break;
case 'g':
this.addGroupAfter();
e.preventDefault();
break;
return;
case 'G':
this.addGroupBefore();
e.preventDefault();
break;
case 'j':
case 'ArrowDown':
this.selectNext();
e.preventDefault();
break;
case 'k':
case 'ArrowUp':
this.selectPrev();
e.preventDefault();
break;
return;
case 'n':
this.addNodeAfter();
e.preventDefault();
break;
return;
case 'N':
this.addNodeBefore();
e.preventDefault();
break;
case 'PageUp':
this.selectPrevPage();
e.preventDefault();
break;
case 'PageDown':
this.selectNextPage();
e.preventDefault();
break;
case 'Home':
this.selectFirst();
e.preventDefault();
break;
case 'End':
this.selectLast();
e.preventDefault();
break;
return;
}
super.onKeyDown(e);
}
}
@@ -375,4 +383,4 @@ class Group extends EditorEntryBase {
}
let editor = new Editor(document.getElementById('definition'));
document.addEventListener('keydown', e => { editor.onKeyDown(e); });
document.addEventListener('keydown', e => { editor.onKeyDown(e); });