-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathmain.js
101 lines (89 loc) · 3.78 KB
/
main.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
/**
*
* Created by sdiemert on 15-07-10.
*/
define(function(require, exports, module) {
"use strict";
var Commands = app.getModule('command/Commands'),
CommandManager = app.getModule("command/CommandManager"),
MenuManager = app.getModule("menu/MenuManager"),
FileSystem = app.getModule("filesystem/FileSystem"),
ElementPickerDialog = app.getModule("dialogs/ElementPickerDialog"),
Dialogs = app.getModule("dialogs/Dialogs"),
TypeScriptCodeGenerator = require("TypeScriptCodeGenerator"),
TypeScriptConfigure = require("TypeScriptConfigure");
var OUTER_CMD = "tools.typescript",
CMD_GENERATE = "tools.typescript.generate",
CMD_ABOUT = "tools.typescript.about",
CMD_CONFIG = "tools.typescript.configure";
function generateTypeScript(base, path, options) {
var result = new $.Deferred();
console.log('base', base);
console.log('path', path);
console.log('options', options);
// TODO generate ts code here
return TypeScriptCodeGenerator.generate(base, path, options).then(result.resolve, result.reject);
// return result.resolve();
}
function openFolder(base, path, options, result) {
// If path is not assigned, popup Open Dialog to select a folder
console.log('open folder', 'path', path);
if (path === undefined) {
FileSystem.showOpenDialog(false, true, "Select a folder where generated codes to be located", null, null, function(err, files) {
if (!err) {
if (files.length > 0) {
path = files[0];
generateTypeScript(base, path, options).then(result.resolve, result.reject);
} else {
result.reject(FileSystem.USER_CANCELED);
}
} else {
result.reject(err);
}
});
} else {
generateTypeScript(base, path, options).then(result.resolve, result.reject);
}
}
/// openFolder
function handleGenerate(base, path, options) {
var result = new $.Deferred();
options = TypeScriptConfigure.getGenOptions();
console.log('base', base);
console.log('path', path);
console.log('options', options);
// window.alert("generated type script");
// If base is not assigned, popup ElementPicker
if (base === undefined) {
ElementPickerDialog.showDialog("Select a base model to generate codes", null, type.UMLPackage)
.done(function(buttonId, selected) {
console.log('ElementPickerDialog', buttonId, selected);
if (buttonId === Dialogs.DIALOG_BTN_OK && selected) {
base = selected;
openFolder(base, path, options, result);
} else {
result.reject();
}
});
} else {
openFolder(base, path, options);
}
}
/// handleGenerate
function handleConfigure() {
CommandManager.execute(Commands.FILE_PREFERENCES, TypeScriptConfigure.getId());
}
function handleAbout() {
window.alert("This is ...");
}
CommandManager.register("TypeScript", OUTER_CMD, CommandManager.doNothing);
CommandManager.register("Generate...", CMD_GENERATE, handleGenerate);
CommandManager.register("Configure...", CMD_CONFIG, handleConfigure);
CommandManager.register("About", CMD_ABOUT, handleAbout);
var menu = MenuManager.getMenu(Commands.TOOLS);
var tsMenu = menu.addMenuItem(OUTER_CMD);
tsMenu.addMenuItem(CMD_GENERATE);
tsMenu.addMenuItem(CMD_CONFIG);
tsMenu.addMenuDivider();
tsMenu.addMenuItem(CMD_ABOUT);
});