theia-sprotty
Version:
Glue code for sprotty diagrams in a Theia IDE
168 lines • 7.85 kB
JavaScript
;
/*
* Copyright (C) 2017 TypeFox and others.
*
* Licensed under the Apache License, Version 2.0 (the "License") you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*/
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
var lib_1 = require("sprotty/lib");
var diagram_widget_1 = require("./diagram-widget");
var diagram_manager_1 = require("./diagram-manager");
var inversify_1 = require("inversify");
var common_1 = require("@theia/core/lib/common");
var browser_1 = require("@theia/core/lib/browser");
var browser_2 = require("@theia/editor/lib/browser");
var DiagramCommands;
(function (DiagramCommands) {
DiagramCommands.CENTER = 'diagram:center';
DiagramCommands.FIT = 'diagram:fit';
DiagramCommands.EXPORT = 'diagram:export';
DiagramCommands.SELECT_ALL = 'diagram.selectAll';
DiagramCommands.OPEN_IN_DIAGRAM = 'diagram.open';
DiagramCommands.DELETE = 'diagram.delete';
})(DiagramCommands = exports.DiagramCommands || (exports.DiagramCommands = {}));
var DiagramMenus;
(function (DiagramMenus) {
DiagramMenus.DIAGRAM = common_1.MAIN_MENU_BAR.concat("3_diagram");
})(DiagramMenus = exports.DiagramMenus || (exports.DiagramMenus = {}));
var DiagramMenuContribution = /** @class */ (function () {
function DiagramMenuContribution() {
}
DiagramMenuContribution.prototype.registerMenus = function (registry) {
registry.registerSubmenu(DiagramMenus.DIAGRAM, "Diagram");
registry.registerMenuAction(DiagramMenus.DIAGRAM, {
commandId: DiagramCommands.CENTER
});
registry.registerMenuAction(DiagramMenus.DIAGRAM, {
commandId: DiagramCommands.FIT
});
registry.registerMenuAction(DiagramMenus.DIAGRAM, {
commandId: DiagramCommands.EXPORT
});
registry.registerMenuAction(browser_2.EDITOR_CONTEXT_MENU, {
commandId: DiagramCommands.OPEN_IN_DIAGRAM
});
};
DiagramMenuContribution = __decorate([
inversify_1.injectable()
], DiagramMenuContribution);
return DiagramMenuContribution;
}());
exports.DiagramMenuContribution = DiagramMenuContribution;
var DiagramCommandHandler = /** @class */ (function () {
function DiagramCommandHandler(shell, doExecute) {
this.shell = shell;
this.doExecute = doExecute;
}
DiagramCommandHandler.prototype.execute = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
return this.isEnabled()
? this.doExecute(this.shell.currentWidget)
: undefined;
};
DiagramCommandHandler.prototype.isEnabled = function () {
return this.shell.currentWidget instanceof diagram_widget_1.DiagramWidget;
};
return DiagramCommandHandler;
}());
exports.DiagramCommandHandler = DiagramCommandHandler;
var OpenInDiagramHandler = /** @class */ (function () {
function OpenInDiagramHandler(editorManager, openerService) {
this.editorManager = editorManager;
this.openerService = openerService;
}
OpenInDiagramHandler.prototype.execute = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var editor = this.editorManager.currentEditor;
if (editor !== undefined) {
var uri_1 = editor.editor.uri;
var openers = this.openerService.getOpeners(uri_1);
openers.then(function (openers) {
var opener = openers.find(function (opener) { return opener instanceof diagram_manager_1.DiagramManagerImpl; });
if (opener !== undefined)
opener.open(uri_1);
});
}
};
return OpenInDiagramHandler;
}());
exports.OpenInDiagramHandler = OpenInDiagramHandler;
var DiagramCommandContribution = /** @class */ (function () {
function DiagramCommandContribution(shell, editorManager, openerService) {
this.shell = shell;
this.editorManager = editorManager;
this.openerService = openerService;
}
DiagramCommandContribution.prototype.registerCommands = function (registry) {
registry.registerCommand({
id: DiagramCommands.CENTER,
label: 'Center'
});
registry.registerCommand({
id: DiagramCommands.FIT,
label: 'Fit to screen'
});
registry.registerCommand({
id: DiagramCommands.EXPORT,
label: 'Export'
});
registry.registerCommand({
id: DiagramCommands.SELECT_ALL,
label: 'Select all'
});
registry.registerCommand({
id: DiagramCommands.OPEN_IN_DIAGRAM,
label: 'Open in diagram'
});
registry.registerHandler(DiagramCommands.CENTER, new DiagramCommandHandler(this.shell, function (widget) {
return widget.actionDispatcher.dispatch(new lib_1.CenterAction([]));
}));
registry.registerHandler(DiagramCommands.FIT, new DiagramCommandHandler(this.shell, function (widget) {
return widget.actionDispatcher.dispatch(new lib_1.FitToScreenAction([]));
}));
registry.registerHandler(DiagramCommands.EXPORT, new DiagramCommandHandler(this.shell, function (widget) {
return widget.actionDispatcher.dispatch(new lib_1.RequestExportSvgAction());
}));
registry.registerHandler(DiagramCommands.SELECT_ALL, new DiagramCommandHandler(this.shell, function (widget) {
var action = new lib_1.SelectAllAction(true);
widget.actionDispatcher.dispatch(action);
}));
registry.registerHandler(DiagramCommands.OPEN_IN_DIAGRAM, new OpenInDiagramHandler(this.editorManager, this.openerService));
registry.registerHandler(browser_1.CommonCommands.UNDO.id, new DiagramCommandHandler(this.shell, function (widget) {
return widget.actionDispatcher.dispatch(new lib_1.UndoAction());
}));
registry.registerHandler(browser_1.CommonCommands.REDO.id, new DiagramCommandHandler(this.shell, function (widget) {
return widget.actionDispatcher.dispatch(new lib_1.RedoAction());
}));
};
DiagramCommandContribution = __decorate([
inversify_1.injectable(),
__param(0, inversify_1.inject(browser_1.ApplicationShell)),
__param(1, inversify_1.inject(browser_2.EditorManager)),
__param(2, inversify_1.inject(browser_1.OpenerService)),
__metadata("design:paramtypes", [browser_1.ApplicationShell,
browser_2.EditorManager, Object])
], DiagramCommandContribution);
return DiagramCommandContribution;
}());
exports.DiagramCommandContribution = DiagramCommandContribution;
//# sourceMappingURL=diagram-commands.js.map