mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-08 01:28:26 -05:00
Merge VS Code 1.23.1 (#1520)
This commit is contained in:
@@ -96,21 +96,21 @@ Registry.add(Extensions.WorkbenchActions, new class implements IWorkbenchActionR
|
||||
}
|
||||
|
||||
private _triggerAndDisposeAction(instantitationService: IInstantiationService, lifecycleService: ILifecycleService, descriptor: SyncActionDescriptor, args: any): Thenable<void> {
|
||||
const actionInstance = instantitationService.createInstance(descriptor.syncDescriptor);
|
||||
actionInstance.label = descriptor.label || actionInstance.label;
|
||||
|
||||
// don't run the action when not enabled
|
||||
if (!actionInstance.enabled) {
|
||||
actionInstance.dispose();
|
||||
|
||||
return void 0;
|
||||
}
|
||||
|
||||
const from = args && args.from || 'keybinding';
|
||||
|
||||
// run action when workbench is created
|
||||
return lifecycleService.when(LifecyclePhase.Running).then(() => {
|
||||
const actionInstance = instantitationService.createInstance(descriptor.syncDescriptor);
|
||||
try {
|
||||
actionInstance.label = descriptor.label || actionInstance.label;
|
||||
|
||||
// don't run the action when not enabled
|
||||
if (!actionInstance.enabled) {
|
||||
actionInstance.dispose();
|
||||
|
||||
return void 0;
|
||||
}
|
||||
|
||||
const from = args && args.from || 'keybinding';
|
||||
|
||||
return TPromise.as(actionInstance.run(undefined, { from })).then(() => {
|
||||
actionInstance.dispose();
|
||||
}, (err) => {
|
||||
@@ -124,4 +124,3 @@ Registry.add(Extensions.WorkbenchActions, new class implements IWorkbenchActionR
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
'use strict';
|
||||
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import Event, { Emitter, once } from 'vs/base/common/event';
|
||||
import { Event, Emitter, once } from 'vs/base/common/event';
|
||||
import * as objects from 'vs/base/common/objects';
|
||||
import types = require('vs/base/common/types');
|
||||
import * as types from 'vs/base/common/types';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { IDisposable, dispose, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { IEditor, IEditorViewState, ScrollType } from 'vs/editor/common/editorCommon';
|
||||
@@ -17,6 +17,7 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { ITextModel } from 'vs/editor/common/model';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { LRUCache } from 'vs/base/common/map';
|
||||
|
||||
export const TextCompareEditorVisible = new RawContextKey<boolean>('textCompareEditorVisible', false);
|
||||
|
||||
@@ -31,8 +32,6 @@ export enum ConfirmResult {
|
||||
*/
|
||||
export const TEXT_DIFF_EDITOR_ID = 'workbench.editors.textDiffEditor';
|
||||
|
||||
export const PREFERENCES_EDITOR_ID = 'workbench.editor.preferencesEditor';
|
||||
|
||||
/**
|
||||
* Binary diff editor id.
|
||||
*/
|
||||
@@ -96,7 +95,7 @@ export interface IEditorInputFactory {
|
||||
* Each editor input is mapped to an editor that is capable of opening it through the Platform facade.
|
||||
*/
|
||||
export abstract class EditorInput implements IEditorInput {
|
||||
private _onDispose: Emitter<void>;
|
||||
private readonly _onDispose: Emitter<void>;
|
||||
protected _onDidChangeDirty: Emitter<void>;
|
||||
protected _onDidChangeLabel: Emitter<void>;
|
||||
|
||||
@@ -486,7 +485,7 @@ export interface ITextEditorModel extends IEditorModel {
|
||||
* are typically cached for some while because they are expensive to construct.
|
||||
*/
|
||||
export class EditorModel extends Disposable implements IEditorModel {
|
||||
private _onDispose: Emitter<void>;
|
||||
private readonly _onDispose: Emitter<void>;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -919,6 +918,114 @@ export function toResource(editor: IEditorInput, options?: IResourceOptions): UR
|
||||
return null;
|
||||
}
|
||||
|
||||
export interface IEditorViewStates<T> {
|
||||
[Position.ONE]?: T;
|
||||
[Position.TWO]?: T;
|
||||
[Position.THREE]?: T;
|
||||
}
|
||||
|
||||
export class EditorViewStateMemento<T> {
|
||||
private cache: LRUCache<string, IEditorViewStates<T>>;
|
||||
|
||||
constructor(private memento: object, private key: string, private limit: number = 10) { }
|
||||
|
||||
public saveState(resource: URI, position: Position, state: T): void;
|
||||
public saveState(editor: EditorInput, position: Position, state: T): void;
|
||||
public saveState(resourceOrEditor: URI | EditorInput, position: Position, state: T): void {
|
||||
if (typeof position !== 'number') {
|
||||
return; // we need a position at least
|
||||
}
|
||||
|
||||
const resource = this.doGetResource(resourceOrEditor);
|
||||
if (resource) {
|
||||
const cache = this.doLoad();
|
||||
|
||||
let viewStates = cache.get(resource.toString());
|
||||
if (!viewStates) {
|
||||
viewStates = Object.create(null) as IEditorViewStates<T>;
|
||||
cache.set(resource.toString(), viewStates);
|
||||
}
|
||||
|
||||
viewStates[position] = state;
|
||||
|
||||
// Automatically clear when editor input gets disposed if any
|
||||
if (resourceOrEditor instanceof EditorInput) {
|
||||
once(resourceOrEditor.onDispose)(() => {
|
||||
this.clearState(resource);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public loadState(resource: URI, position: Position): T;
|
||||
public loadState(editor: EditorInput, position: Position): T;
|
||||
public loadState(resourceOrEditor: URI | EditorInput, position: Position): T {
|
||||
if (typeof position !== 'number') {
|
||||
return void 0; // we need a position at least
|
||||
}
|
||||
|
||||
const resource = this.doGetResource(resourceOrEditor);
|
||||
if (resource) {
|
||||
const cache = this.doLoad();
|
||||
|
||||
const viewStates = cache.get(resource.toString());
|
||||
if (viewStates) {
|
||||
return viewStates[position];
|
||||
}
|
||||
}
|
||||
|
||||
return void 0;
|
||||
}
|
||||
|
||||
public clearState(resource: URI): void;
|
||||
public clearState(editor: EditorInput): void;
|
||||
public clearState(resourceOrEditor: URI | EditorInput): void {
|
||||
const resource = this.doGetResource(resourceOrEditor);
|
||||
if (resource) {
|
||||
const cache = this.doLoad();
|
||||
cache.delete(resource.toString());
|
||||
}
|
||||
}
|
||||
|
||||
private doGetResource(resourceOrEditor: URI | EditorInput): URI {
|
||||
if (resourceOrEditor instanceof EditorInput) {
|
||||
return resourceOrEditor.getResource();
|
||||
}
|
||||
|
||||
return resourceOrEditor;
|
||||
}
|
||||
|
||||
private doLoad(): LRUCache<string, IEditorViewStates<T>> {
|
||||
if (!this.cache) {
|
||||
this.cache = new LRUCache<string, T>(this.limit);
|
||||
|
||||
// Restore from serialized map state
|
||||
const rawViewState = this.memento[this.key];
|
||||
if (Array.isArray(rawViewState)) {
|
||||
this.cache.fromJSON(rawViewState);
|
||||
}
|
||||
|
||||
// Migration from old object state
|
||||
else if (rawViewState) {
|
||||
const keys = Object.keys(rawViewState);
|
||||
keys.forEach((key, index) => {
|
||||
if (index < this.limit) {
|
||||
this.cache.set(key, rawViewState[key]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return this.cache;
|
||||
}
|
||||
|
||||
public save(): void {
|
||||
const cache = this.doLoad();
|
||||
|
||||
this.memento[this.key] = cache.toJSON();
|
||||
}
|
||||
}
|
||||
|
||||
class EditorInputFactoryRegistry implements IEditorInputFactoryRegistry {
|
||||
private instantiationService: IInstantiationService;
|
||||
private fileInputFactory: IFileInputFactory;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
import Event, { Emitter, once } from 'vs/base/common/event';
|
||||
import { Event, Emitter, once } from 'vs/base/common/event';
|
||||
import { Extensions, IEditorInputFactoryRegistry, EditorInput, toResource, IEditorStacksModel, IEditorGroup, IEditorIdentifier, IEditorCloseEvent, GroupIdentifier, IStacksModelChangeEvent, EditorOpenPositioning, SideBySideEditorInput, OPEN_POSITIONING_CONFIG } from 'vs/workbench/common/editor';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
||||
@@ -65,17 +65,17 @@ export class EditorGroup implements IEditorGroup {
|
||||
private toDispose: IDisposable[];
|
||||
private editorOpenPositioning: 'left' | 'right' | 'first' | 'last';
|
||||
|
||||
private _onEditorActivated: Emitter<EditorInput>;
|
||||
private _onEditorOpened: Emitter<EditorInput>;
|
||||
private _onEditorClosed: Emitter<EditorCloseEvent>;
|
||||
private _onEditorDisposed: Emitter<EditorInput>;
|
||||
private _onEditorDirty: Emitter<EditorInput>;
|
||||
private _onEditorLabelChange: Emitter<EditorInput>;
|
||||
private _onEditorMoved: Emitter<EditorInput>;
|
||||
private _onEditorPinned: Emitter<EditorInput>;
|
||||
private _onEditorUnpinned: Emitter<EditorInput>;
|
||||
private _onEditorStateChanged: Emitter<EditorInput>;
|
||||
private _onEditorsStructureChanged: Emitter<EditorInput>;
|
||||
private readonly _onEditorActivated: Emitter<EditorInput>;
|
||||
private readonly _onEditorOpened: Emitter<EditorInput>;
|
||||
private readonly _onEditorClosed: Emitter<EditorCloseEvent>;
|
||||
private readonly _onEditorDisposed: Emitter<EditorInput>;
|
||||
private readonly _onEditorDirty: Emitter<EditorInput>;
|
||||
private readonly _onEditorLabelChange: Emitter<EditorInput>;
|
||||
private readonly _onEditorMoved: Emitter<EditorInput>;
|
||||
private readonly _onEditorPinned: Emitter<EditorInput>;
|
||||
private readonly _onEditorUnpinned: Emitter<EditorInput>;
|
||||
private readonly _onEditorStateChanged: Emitter<EditorInput>;
|
||||
private readonly _onEditorsStructureChanged: Emitter<EditorInput>;
|
||||
|
||||
constructor(
|
||||
arg1: string | ISerializedEditorGroup,
|
||||
@@ -732,22 +732,22 @@ export class EditorStacksModel implements IEditorStacksModel {
|
||||
private _activeGroup: EditorGroup;
|
||||
private groupToIdentifier: { [id: number]: EditorGroup };
|
||||
|
||||
private _onGroupOpened: Emitter<EditorGroup>;
|
||||
private _onGroupClosed: Emitter<EditorGroup>;
|
||||
private _onGroupMoved: Emitter<EditorGroup>;
|
||||
private _onGroupActivated: Emitter<EditorGroup>;
|
||||
private _onGroupDeactivated: Emitter<EditorGroup>;
|
||||
private _onGroupRenamed: Emitter<EditorGroup>;
|
||||
private readonly _onGroupOpened: Emitter<EditorGroup>;
|
||||
private readonly _onGroupClosed: Emitter<EditorGroup>;
|
||||
private readonly _onGroupMoved: Emitter<EditorGroup>;
|
||||
private readonly _onGroupActivated: Emitter<EditorGroup>;
|
||||
private readonly _onGroupDeactivated: Emitter<EditorGroup>;
|
||||
private readonly _onGroupRenamed: Emitter<EditorGroup>;
|
||||
|
||||
private _onEditorDisposed: Emitter<EditorIdentifier>;
|
||||
private _onEditorDirty: Emitter<EditorIdentifier>;
|
||||
private _onEditorLabelChange: Emitter<EditorIdentifier>;
|
||||
private _onEditorOpened: Emitter<EditorIdentifier>;
|
||||
private readonly _onEditorDisposed: Emitter<EditorIdentifier>;
|
||||
private readonly _onEditorDirty: Emitter<EditorIdentifier>;
|
||||
private readonly _onEditorLabelChange: Emitter<EditorIdentifier>;
|
||||
private readonly _onEditorOpened: Emitter<EditorIdentifier>;
|
||||
|
||||
private _onWillCloseEditor: Emitter<EditorCloseEvent>;
|
||||
private _onEditorClosed: Emitter<EditorCloseEvent>;
|
||||
private readonly _onWillCloseEditor: Emitter<EditorCloseEvent>;
|
||||
private readonly _onEditorClosed: Emitter<EditorCloseEvent>;
|
||||
|
||||
private _onModelChanged: Emitter<IStacksModelChangeEvent>;
|
||||
private readonly _onModelChanged: Emitter<IStacksModelChangeEvent>;
|
||||
|
||||
constructor(
|
||||
private restoreFromStorage: boolean,
|
||||
|
||||
@@ -8,16 +8,16 @@ import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { suggestFilename } from 'vs/base/common/mime';
|
||||
import { memoize } from 'vs/base/common/decorators';
|
||||
import labels = require('vs/base/common/labels');
|
||||
import * as labels from 'vs/base/common/labels';
|
||||
import { PLAINTEXT_MODE_ID } from 'vs/editor/common/modes/modesRegistry';
|
||||
import paths = require('vs/base/common/paths');
|
||||
import resources = require('vs/base/common/resources');
|
||||
import * as paths from 'vs/base/common/paths';
|
||||
import * as resources from 'vs/base/common/resources';
|
||||
import { EditorInput, IEncodingSupport, EncodingMode, ConfirmResult } from 'vs/workbench/common/editor';
|
||||
import { UntitledEditorModel } from 'vs/workbench/common/editor/untitledEditorModel';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
|
||||
import { telemetryURIDescriptor } from 'vs/platform/telemetry/common/telemetryUtils';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
@@ -35,8 +35,8 @@ export class UntitledEditorInput extends EditorInput implements IEncodingSupport
|
||||
private cachedModel: UntitledEditorModel;
|
||||
private modelResolve: TPromise<UntitledEditorModel>;
|
||||
|
||||
private _onDidModelChangeContent: Emitter<void>;
|
||||
private _onDidModelChangeEncoding: Emitter<void>;
|
||||
private readonly _onDidModelChangeContent: Emitter<void>;
|
||||
private readonly _onDidModelChangeEncoding: Emitter<void>;
|
||||
|
||||
private toUnbind: IDisposable[];
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ import { CONTENT_CHANGE_EVENT_BUFFER_DELAY } from 'vs/platform/files/common/file
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
import { IModelService } from 'vs/editor/common/services/modelService';
|
||||
import { IMode } from 'vs/editor/common/modes';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { IBackupFileService } from 'vs/workbench/services/backup/common/backup';
|
||||
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
|
||||
@@ -28,9 +28,9 @@ export class UntitledEditorModel extends BaseTextEditorModel implements IEncodin
|
||||
private toDispose: IDisposable[];
|
||||
|
||||
private dirty: boolean;
|
||||
private _onDidChangeContent: Emitter<void>;
|
||||
private _onDidChangeDirty: Emitter<void>;
|
||||
private _onDidChangeEncoding: Emitter<void>;
|
||||
private readonly _onDidChangeContent: Emitter<void>;
|
||||
private readonly _onDidChangeDirty: Emitter<void>;
|
||||
private readonly _onDidChangeEncoding: Emitter<void>;
|
||||
|
||||
private versionId: number;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import types = require('vs/base/common/types');
|
||||
import * as types from 'vs/base/common/types';
|
||||
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
import { INotification, INotificationHandle, INotificationActions, INotificationProgress, NoOpNotification, Severity, NotificationMessage } from 'vs/platform/notification/common/notification';
|
||||
import { toErrorMessage } from 'vs/base/common/errorMessage';
|
||||
import Event, {Emitter, once } from 'vs/base/common/event';
|
||||
import { Event, Emitter, once } from 'vs/base/common/event';
|
||||
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { isPromiseCanceledError, isErrorWithActions } from 'vs/base/common/errors';
|
||||
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
'use strict';
|
||||
|
||||
import URI from 'vs/base/common/uri';
|
||||
import paths = require('vs/base/common/paths');
|
||||
import { basename } from 'vs/base/common/paths';
|
||||
import * as paths from 'vs/base/common/paths';
|
||||
import { RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IModeService } from 'vs/editor/common/services/modeService';
|
||||
import { IFileService } from 'vs/platform/files/common/files';
|
||||
@@ -47,7 +46,7 @@ export class ResourceContextKey implements IContextKey<URI> {
|
||||
set(value: URI) {
|
||||
this._resourceKey.set(value);
|
||||
this._schemeKey.set(value && value.scheme);
|
||||
this._filenameKey.set(value && basename(value.fsPath));
|
||||
this._filenameKey.set(value && paths.basename(value.fsPath));
|
||||
this._langIdKey.set(value && this._modeService.getModeIdByFilenameOrFirstLine(value.fsPath));
|
||||
this._extensionKey.set(value && paths.extname(value.fsPath));
|
||||
this._hasResource.set(!!value);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import nls = require('vs/nls');
|
||||
import * as nls from 'vs/nls';
|
||||
import { registerColor, editorBackground, contrastBorder, transparent, editorWidgetBackground, textLinkForeground, lighten, darken } from 'vs/platform/theme/common/colorRegistry';
|
||||
import { IDisposable, Disposable, dispose } from 'vs/base/common/lifecycle';
|
||||
import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
|
||||
@@ -361,7 +361,7 @@ export const TITLE_BAR_INACTIVE_BACKGROUND = registerColor('titleBar.inactiveBac
|
||||
export const TITLE_BAR_BORDER = registerColor('titleBar.border', {
|
||||
dark: null,
|
||||
light: null,
|
||||
hc: null
|
||||
hc: contrastBorder
|
||||
}, nls.localize('titleBarBorder', "Title bar border color. Note that this color is currently only supported on macOS."));
|
||||
|
||||
// < --- Notifications --- >
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { Command } from 'vs/editor/common/modes';
|
||||
import { UriComponents } from 'vs/base/common/uri';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { Event, Emitter } from 'vs/base/common/event';
|
||||
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { ITreeViewDataProvider } from 'vs/workbench/common/views';
|
||||
import { localize } from 'vs/nls';
|
||||
@@ -17,24 +17,24 @@ import { ThemeIcon } from 'vs/platform/theme/common/themeService';
|
||||
|
||||
export class ViewLocation {
|
||||
|
||||
static readonly Explorer = new ViewLocation('workbench.view.explorer');
|
||||
static readonly Debug = new ViewLocation('workbench.view.debug');
|
||||
static readonly Extensions = new ViewLocation('workbench.view.extensions');
|
||||
|
||||
constructor(private _id: string) {
|
||||
private static locations: Map<string, ViewLocation> = new Map<string, ViewLocation>();
|
||||
static register(id: string): ViewLocation {
|
||||
const viewLocation = new ViewLocation(id);
|
||||
ViewLocation.locations.set(id, viewLocation);
|
||||
return viewLocation;
|
||||
}
|
||||
static get(value: string): ViewLocation {
|
||||
return ViewLocation.locations.get(value);
|
||||
}
|
||||
|
||||
get id(): string {
|
||||
return this._id;
|
||||
}
|
||||
static readonly Explorer: ViewLocation = ViewLocation.register('workbench.view.explorer');
|
||||
static readonly Debug: ViewLocation = ViewLocation.register('workbench.view.debug');
|
||||
static readonly Extensions: ViewLocation = ViewLocation.register('workbench.view.extensions');
|
||||
static readonly SCM: ViewLocation = ViewLocation.register('workbench.view.scm.views.contributed');
|
||||
|
||||
private constructor(private _id: string) { }
|
||||
get id(): string { return this._id; }
|
||||
|
||||
static getContributedViewLocation(value: string): ViewLocation {
|
||||
switch (value) {
|
||||
case 'explorer': return ViewLocation.Explorer;
|
||||
case 'debug': return ViewLocation.Debug;
|
||||
}
|
||||
return void 0;
|
||||
}
|
||||
}
|
||||
|
||||
export interface IViewDescriptor {
|
||||
@@ -79,10 +79,10 @@ export interface IViewsRegistry {
|
||||
|
||||
export const ViewsRegistry: IViewsRegistry = new class implements IViewsRegistry {
|
||||
|
||||
private _onViewsRegistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
|
||||
private readonly _onViewsRegistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
|
||||
readonly onViewsRegistered: Event<IViewDescriptor[]> = this._onViewsRegistered.event;
|
||||
|
||||
private _onViewsDeregistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
|
||||
private readonly _onViewsDeregistered: Emitter<IViewDescriptor[]> = new Emitter<IViewDescriptor[]>();
|
||||
readonly onViewsDeregistered: Event<IViewDescriptor[]> = this._onViewsDeregistered.event;
|
||||
|
||||
private _viewLocations: ViewLocation[] = [];
|
||||
@@ -182,9 +182,9 @@ export interface ICustomViewDescriptor extends IViewDescriptor {
|
||||
|
||||
}
|
||||
|
||||
export const ICustomViewsService = createDecorator<ICustomViewsService>('customViewsService');
|
||||
export const IViewsService = createDecorator<IViewsService>('viewsService');
|
||||
|
||||
export interface ICustomViewsService {
|
||||
export interface IViewsService {
|
||||
_serviceBrand: any;
|
||||
|
||||
getTreeViewer(id: string): ITreeViewer;
|
||||
|
||||
Reference in New Issue
Block a user