From ff89cc1291aec6ec59cfda79fda82bc557b4a482 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Wed, 31 Aug 2016 18:32:22 +0200 Subject: [PATCH] CodeEditorWidget has its contributions and actions overridable --- src/vs/editor/browser/codeEditor.ts | 14 ++++++++++++-- src/vs/editor/browser/widget/codeEditorWidget.ts | 12 +++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/vs/editor/browser/codeEditor.ts b/src/vs/editor/browser/codeEditor.ts index daec7c89ee4..e2b85a4e19b 100644 --- a/src/vs/editor/browser/codeEditor.ts +++ b/src/vs/editor/browser/codeEditor.ts @@ -7,15 +7,18 @@ import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation'; import {ICommandService} from 'vs/platform/commands/common/commands'; import {IContextKeyService} from 'vs/platform/contextkey/common/contextkey'; -import * as editorCommon from 'vs/editor/common/editorCommon'; +import {IEditorOptions} from 'vs/editor/common/editorCommon'; +import {IEditorContributionDescriptor} from 'vs/editor/browser/editorBrowser'; import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService'; import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget'; +import {EditorAction, CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions'; +import {EditorBrowserRegistry} from 'vs/editor/browser/editorBrowserExtensions'; export class CodeEditor extends CodeEditorWidget { constructor( domElement:HTMLElement, - options:editorCommon.IEditorOptions, + options:IEditorOptions, @IInstantiationService instantiationService: IInstantiationService, @ICodeEditorService codeEditorService: ICodeEditorService, @ICommandService commandService: ICommandService, @@ -24,4 +27,11 @@ export class CodeEditor extends CodeEditorWidget { super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService); } + protected _getContributions(): IEditorContributionDescriptor[] { + return [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions()); + } + + protected _getActions(): EditorAction[] { + return CommonEditorRegistry.getEditorActions(); + } } diff --git a/src/vs/editor/browser/widget/codeEditorWidget.ts b/src/vs/editor/browser/widget/codeEditorWidget.ts index c89b42934bf..4486cef96f7 100644 --- a/src/vs/editor/browser/widget/codeEditorWidget.ts +++ b/src/vs/editor/browser/widget/codeEditorWidget.ts @@ -18,11 +18,10 @@ import {CommonEditorConfiguration} from 'vs/editor/common/config/commonEditorCon import {Range} from 'vs/editor/common/core/range'; import {Selection} from 'vs/editor/common/core/selection'; import * as editorCommon from 'vs/editor/common/editorCommon'; -import {CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions'; +import {EditorAction} from 'vs/editor/common/editorCommonExtensions'; import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService'; import {Configuration} from 'vs/editor/browser/config/configuration'; import * as editorBrowser from 'vs/editor/browser/editorBrowser'; -import {EditorBrowserRegistry} from 'vs/editor/browser/editorBrowserExtensions'; import {Colorizer} from 'vs/editor/browser/standalone/colorizer'; import {View} from 'vs/editor/browser/view/viewImpl'; import {Disposable, IDisposable} from 'vs/base/common/lifecycle'; @@ -30,7 +29,7 @@ import Event, {Emitter} from 'vs/base/common/event'; import {IKeyboardEvent} from 'vs/base/browser/keyboardEvent'; import {InternalEditorAction} from 'vs/editor/common/editorAction'; -export class CodeEditorWidget extends CommonCodeEditor implements editorBrowser.ICodeEditor { +export abstract class CodeEditorWidget extends CommonCodeEditor implements editorBrowser.ICodeEditor { public onMouseUp(listener: (e:editorBrowser.IEditorMouseEvent)=>void): IDisposable { return this.addListener2(editorCommon.EventType.MouseUp, listener); @@ -99,7 +98,7 @@ export class CodeEditorWidget extends CommonCodeEditor implements editorBrowser. this.contentWidgets = {}; this.overlayWidgets = {}; - let contributionDescriptors = [].concat(EditorBrowserRegistry.getEditorContributions()).concat(CommonEditorRegistry.getEditorContributions()); + let contributionDescriptors = this._getContributions(); for (let i = 0, len = contributionDescriptors.length; i < len; i++) { try { let contribution = contributionDescriptors[i].createInstance(this._instantiationService, this); @@ -109,7 +108,7 @@ export class CodeEditorWidget extends CommonCodeEditor implements editorBrowser. } } - CommonEditorRegistry.getEditorActions().forEach((action) => { + this._getActions().forEach((action) => { let internalAction = new InternalEditorAction(action, this, this._instantiationService, this._contextKeyService); this._actions[internalAction.id] = internalAction; }); @@ -117,6 +116,9 @@ export class CodeEditorWidget extends CommonCodeEditor implements editorBrowser. this._codeEditorService.addCodeEditor(this); } + protected abstract _getContributions(): editorBrowser.IEditorContributionDescriptor[]; + protected abstract _getActions(): EditorAction[]; + protected _createConfiguration(options:editorCommon.ICodeEditorWidgetCreationOptions): CommonEditorConfiguration { return new Configuration(options, this.domElement); }