nope/resources/ui/graph/defaults/default.hotkeys.ts

108 lines
3.0 KiB
TypeScript
Raw Normal View History

2020-10-25 20:14:51 +00:00
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2020-03-31 18:06:27
2020-10-29 18:20:42 +00:00
* @modify date 2020-10-29 17:38:16
2020-10-25 20:14:51 +00:00
* @desc [description]
*/
2020-10-29 18:20:42 +00:00
import { IHotKeyAction } from '../../layout/layout';
2020-10-25 20:14:51 +00:00
2020-10-29 18:20:42 +00:00
export function defaultHotkeys<D>() {
2020-10-25 20:14:51 +00:00
2020-10-29 18:20:42 +00:00
function selectElements(data) {
2020-10-25 20:14:51 +00:00
let selected: string[] = data.network.network.getSelectedNodes();
if (selected.length === 0) {
2020-10-29 18:20:42 +00:00
const node = data.network.network.getNodeAt(data.layout.currentMousePosition);
2020-10-25 20:14:51 +00:00
selected = node ? [node] : [];
}
if (selected.length === 0) {
2020-10-29 18:20:42 +00:00
const node = data.network.network.getEdgeAt(data.layout.currentMousePosition);
2020-10-25 20:14:51 +00:00
selected = node ? [node] : [];
}
return selected;
}
2020-10-29 18:20:42 +00:00
const hotkeys: IHotKeyAction<any>[] = [
2020-10-25 20:14:51 +00:00
{
key: 'ShiftLeft',
2020-10-29 18:20:42 +00:00
async onPress(data) {
try {
while (data.layout.pressedKey === 'ShiftLeft') {
await data.network.userAddEdge();
}
} catch (error) {
data.network.disableEditMode();
2020-10-25 20:14:51 +00:00
}
},
2020-10-29 18:20:42 +00:00
async onRelease(data){
data.network.disableEditMode();
2020-10-25 20:14:51 +00:00
}
2020-10-29 18:20:42 +00:00
},
{
key: 'ControlLeft',
async onPress(data) {
try {
while (data.layout.pressedKey === 'ControlLeft') {
await data.network.userAddNode();
}
} catch (error) {
data.network.disableEditMode();
}
},
async onRelease(data){
data.network.disableEditMode();
}
},
2020-10-25 20:14:51 +00:00
{
key: 'Delete',
onPress(data) {
let selected: string[] = selectElements(data);
data.network.network.deleteSelected(selected);
}
},
{
key: 'space',
onPress(data) {
let selected: string[] = selectElements(data);
for (const id of selected) {
if (typeof data.network.network.clusters[id] === 'function') {
data.network.network.clusters[id]();
} else {
// clusterNode(id);
data.network.network.unselectAll();
}
}
}
},
{
key: 'Esc',
onPress(data){
data.network.network.disableEditMode();
}
},
{
key: 'KeyR',
onPress(data){
data.network.network.redraw();
}
},
{
key: 'KeyE',
onPress(data){
data.network.network.enableEditMode();
}
},
{
key: 'KeyF',
onPress(data){
data.network.fit();
}
2020-10-29 18:20:42 +00:00
}
2020-10-25 20:14:51 +00:00
]
return hotkeys;
}