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;
|
|
|
|
}
|