Path: blob/main/src/vs/editor/contrib/readOnlyMessage/browser/contribution.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { MarkdownString } from '../../../../base/common/htmlContent.js';6import { Disposable } from '../../../../base/common/lifecycle.js';7import { ICodeEditor } from '../../../browser/editorBrowser.js';8import { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';9import { EditorOption } from '../../../common/config/editorOptions.js';10import { IEditorContribution } from '../../../common/editorCommon.js';11import { MessageController } from '../../message/browser/messageController.js';12import * as nls from '../../../../nls.js';1314export class ReadOnlyMessageController extends Disposable implements IEditorContribution {1516public static readonly ID = 'editor.contrib.readOnlyMessageController';1718constructor(19private readonly editor: ICodeEditor20) {21super();22this._register(this.editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit()));23}2425private _onDidAttemptReadOnlyEdit(): void {26const messageController = MessageController.get(this.editor);27if (messageController && this.editor.hasModel()) {28let message = this.editor.getOptions().get(EditorOption.readOnlyMessage);29if (!message) {30if (this.editor.isSimpleWidget) {31message = new MarkdownString(nls.localize('editor.simple.readonly', "Cannot edit in read-only input"));32} else {33message = new MarkdownString(nls.localize('editor.readonly', "Cannot edit in read-only editor"));34}35}3637messageController.showMessage(message, this.editor.getPosition());38}39}40}4142registerEditorContribution(ReadOnlyMessageController.ID, ReadOnlyMessageController, EditorContributionInstantiation.BeforeFirstInteraction);434445