forked from UoYCS-plasma/GP2-Editor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
openproject.js
107 lines (100 loc) · 3.32 KB
/
openproject.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const btn = document.getElementById("openProject");
function createOpenButton(file, filePath) {
if (
file.slice(-5) == ".rule" ||
file.slice(-5) == ".host" ||
file.slice(-4) == ".gp2"
) {
textButton = document.createElement("p");
textButton.innerHTML = file + " (text)";
textButton.addEventListener("click", async () => {
openTextEditor(filePath + "/" + file);
});
document.getElementById("files").append(textButton);
if (file.slice(-5) == ".rule" || file.slice(-5) == ".host") {
button = document.createElement("p");
button.innerHTML = file + " (graph)";
button.addEventListener("click", async () => {
openEditor(filePath + "/" + file);
});
document.getElementById("files").append(button);
}
} else {
button = document.createElement("p");
button.innerHTML = file;
button.addEventListener("click", async () => {
openEditor(filePath + "/" + file);
});
document.getElementById("files").append(button);
}
}
function createUpButton(filePath) {
button = document.createElement("p");
button.innerHTML = "..";
paths = filePath.split("/");
x = "";
while (x == "") {
x = paths.pop();
}
newpath = "";
paths.forEach((path) => {
newpath = newpath + path + "/";
});
newpath = newpath.substring(0, newpath.length - 1);
button.addEventListener("click", async () => {
openFolder(newpath);
});
document.getElementById("files").appendChild(button);
}
async function openFolder(filePath) {
var files = await window.electronAPI.readDirectory(filePath);
var old = document.getElementById("fileOpener");
filesOld = document.getElementById("files");
while (filesOld.firstChild) {
filesOld.removeChild(filesOld.firstChild);
}
createUpButton(filePath);
files.forEach((item) => createOpenButton(item, filePath));
}
btn.addEventListener("click", async () => {
var filePath = await window.electronAPI.openFile();
openFolder(filePath);
});
async function loadFile(fileName, editor) {
fileText = await window.electronAPI.readFile(fileName);
editor.contentWindow.postMessage([fileName, fileText], "*");
}
function openEditor(file) {
if (file.slice(-5) == ".rule") {
editor = document.getElementById("rule");
editor.style.display = "block";
document.getElementById("rule").style.display = "block";
document.getElementById("graph").style.display = "none";
document.getElementById("texteditor").style.display = "none";
loadFile(file, editor);
} else if (file.slice(-5) == ".host") {
editor = document.getElementById("graph");
editor.style.display = "block";
document.getElementById("graph").style.display = "block";
document.getElementById("rule").style.display = "none";
document.getElementById("texteditor").style.display = "none";
document.getElementById("host").innerHTML = file;
loadFile(file, editor);
} else if (file.slice(-4) == ".gp2") {
document.getElementById("program").innerHTML = file;
} else {
openFolder(file);
}
}
function openTextEditor(file) {
document.getElementById("rule").style.display = "none";
document.getElementById("graph").style.display = "none";
document.getElementById("texteditor").style.display = "block";
if (file.slice(-5) == ".host") {
document.getElementById("host").innerHTML = file;
} else if (file.slice(-4) == ".gp2") {
document.getElementById("program").innerHTML = file;
}
editor = document.getElementById("texteditor");
loadFile(file, editor);
}