UNPKG

@eclipse-glsp/theia-integration

Version:

Glue code to integrate GLSP clients into Eclipse Theia

121 lines 6.71 kB
"use strict"; 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DiagramServiceProvider = void 0; /******************************************************************************** * Copyright (c) 2019-2023 EclipseSource and others. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0 which is available at * http://www.eclipse.org/legal/epl-2.0. * * This Source Code may also be made available under the following Secondary * Licenses when the conditions for such availability set forth in the Eclipse * Public License v. 2.0 are satisfied: GNU General Public License, version 2 * with the GNU Classpath Exception which is available at * https://www.gnu.org/software/classpath/license.html. * * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ const core_1 = require("@theia/core"); const inversify_1 = require("@theia/core/shared/inversify"); const diagram_widget_factory_1 = require("./diagram/diagram-widget-factory"); const glsp_diagram_configuration_1 = require("./diagram/glsp-diagram-configuration"); const glsp_client_contribution_1 = require("./glsp-client-contribution"); /** * Provides lookup methods to diagram specific services (i.e. services that are associated with * a specific diagram language implementation) via the `diagramType` and/or `contributionId` */ let DiagramServiceProvider = class DiagramServiceProvider { /** * Retrieve the {@link DiagramWidgetFactory} that is configured for the given diagramType. * @param diagramType The diagramType of the target widget factory. * @throws An error if no `DiagramWidgetFactory` could be found for the given diagram type * @returns the corresponding `DiagramWidgetFactory` */ getDiagramWidgetFactory(diagramType) { const result = this.findDiagramWidgetFactory(diagramType); if (!result) { throw new Error(`No GLSPDiagramWidgetFactory is registered for diagramType: ${diagramType}!`); } return result; } /** * Look up the {@link DiagramWidgetFactory} that is configured for the given diagramType(if any). * @param diagramType The diagramType of the target widget factory. * @returns the corresponding `DiagramWidgetFactory` or `undefined` if no widget factory is configured for the given type */ findDiagramWidgetFactory(diagramType) { return this.widgetFactoryContributions.getContributions().find(contribution => contribution.diagramType === diagramType); } /** * Retrieve the {@link DiagramConfiguration} that is configured for the given diagramType. * @param diagramType The diagramType of the target diagram configuration. * @throws An error if no `DiagramConfiguration` could be found for the given diagram type * @returns the corresponding `DiagramConfiguration` */ getDiagramConfiguration(diagramType) { const result = this.findDiagramConfiguration(diagramType); if (!result) { throw new Error(`No DiagramConfiguration is registered for diagramType: ${diagramType}!`); } return result; } /** * Look up the {@link DiagramWidgetFactory} that is configured for the given diagramType(if any). * @param diagramType The diagramType of the target diagram configuration. * @returns the corresponding `DiagramConfiguration` or `undefined` if no diagram configuration is configured for the given type */ findDiagramConfiguration(diagramType) { return this.diagramConfigurationContribution.getContributions().find(contribution => contribution.diagramType === diagramType); } /** * Retrieve the {@link DiagramConfiguration} that is configured for the given contributionId. * @param contributionId The id of the target contribution. * @throws An error if no `GLSPClientContribution` could be found for the given diagram type * @returns the corresponding `GLSPClientContribution` */ getGLSPClientContribution(contributionId) { const result = this.findGLSPClientContribution(contributionId); if (!result) { throw new Error(`No GLSPClientContribution is registered for diagramType: ${contributionId}!`); } return result; } /** * Look up the {@link GLSPClientContribution} that is configured for the given contribution Id (if any). * @param contributionId The contributionId of the target contribution * @returns the corresponding `GLSPClientContribution` or `undefined` if no client contribution is configured for the given type */ findGLSPClientContribution(contributionId) { return this.glspClientContributions.getContributions().find(contribution => contribution.id === contributionId); } }; exports.DiagramServiceProvider = DiagramServiceProvider; __decorate([ (0, inversify_1.inject)(core_1.ContributionProvider), (0, inversify_1.named)(glsp_client_contribution_1.GLSPClientContribution), __metadata("design:type", Object) ], DiagramServiceProvider.prototype, "glspClientContributions", void 0); __decorate([ (0, inversify_1.inject)(core_1.ContributionProvider), (0, inversify_1.named)(diagram_widget_factory_1.DiagramWidgetFactory), __metadata("design:type", Object) ], DiagramServiceProvider.prototype, "widgetFactoryContributions", void 0); __decorate([ (0, inversify_1.inject)(core_1.ContributionProvider), (0, inversify_1.named)(glsp_diagram_configuration_1.DiagramConfiguration), __metadata("design:type", Object) ], DiagramServiceProvider.prototype, "diagramConfigurationContribution", void 0); exports.DiagramServiceProvider = DiagramServiceProvider = __decorate([ (0, inversify_1.injectable)() ], DiagramServiceProvider); //# sourceMappingURL=diagram-service-provider.js.map