UNPKG

@theia/core

Version:

Theia is a cloud & desktop IDE framework implemented in TypeScript.

81 lines 3.52 kB
"use strict"; // ***************************************************************************** // Copyright (C) 2024 TypeFox 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-only WITH Classpath-exception-2.0 // ***************************************************************************** Object.defineProperty(exports, "__esModule", { value: true }); exports.WidgetStatusBarService = exports.noopWidgetStatusBarContribution = exports.WidgetStatusBarContribution = void 0; const tslib_1 = require("tslib"); const inversify_1 = require("inversify"); const status_bar_1 = require("./status-bar"); const common_1 = require("../common"); exports.WidgetStatusBarContribution = Symbol('WidgetStatusBarContribution'); /** * Creates an empty {@link WidgetStatusBarContribution} that does nothing. * Useful for widgets that are not handled by any other contribution, for example: * * Settings widget * * Welcome widget * * Webview widget * * @param prototype Prototype to identify the kind of the widget. * @returns An empty {@link WidgetStatusBarContribution}. */ function noopWidgetStatusBarContribution(prototype) { return { canHandle(widget) { return widget instanceof prototype; }, activate: () => { }, deactivate: () => { } }; } exports.noopWidgetStatusBarContribution = noopWidgetStatusBarContribution; let WidgetStatusBarService = class WidgetStatusBarService { onStart(app) { app.shell.onDidChangeCurrentWidget(event => { if (event.newValue) { this.show(event.newValue); } }); } show(widget) { const contributions = this.contributionProvider.getContributions(); // If any contribution can handle the widget, activate it // If none can, keep everything as is if (contributions.some(contribution => contribution.canHandle(widget))) { for (const contribution of contributions) { // Deactivate all contributions contribution.deactivate(this.statusBar); if (contribution.canHandle(widget)) { // Selectively re-activate them contribution.activate(this.statusBar, widget); } } } } }; exports.WidgetStatusBarService = WidgetStatusBarService; tslib_1.__decorate([ (0, inversify_1.inject)(common_1.ContributionProvider), (0, inversify_1.named)(exports.WidgetStatusBarContribution), tslib_1.__metadata("design:type", Object) ], WidgetStatusBarService.prototype, "contributionProvider", void 0); tslib_1.__decorate([ (0, inversify_1.inject)(status_bar_1.StatusBar), tslib_1.__metadata("design:type", Object) ], WidgetStatusBarService.prototype, "statusBar", void 0); exports.WidgetStatusBarService = WidgetStatusBarService = tslib_1.__decorate([ (0, inversify_1.injectable)() ], WidgetStatusBarService); //# sourceMappingURL=widget-status-bar-service.js.map