mirror of
https://github.com/microsoft/vscode.git
synced 2026-07-08 15:55:15 +01:00
Take static arguments for the view descriptor ctor
This commit is contained in:
@@ -377,7 +377,7 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
|
||||
const viewDescriptor = <ICustomViewDescriptor>{
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
ctor: CustomTreeViewPanel,
|
||||
ctorDescriptor: { ctor: CustomTreeViewPanel },
|
||||
when: ContextKeyExpr.deserialize(item.when),
|
||||
canToggleVisibility: true,
|
||||
collapsed: this.showCollapsed(container),
|
||||
|
||||
@@ -178,7 +178,7 @@ export abstract class ViewContainerViewlet extends PanelViewlet implements IView
|
||||
}
|
||||
|
||||
protected createView(viewDescriptor: IViewDescriptor, options: IViewletViewOptions): ViewletPanel {
|
||||
return this.instantiationService.createInstance(viewDescriptor.ctor, options) as ViewletPanel;
|
||||
return (this.instantiationService as any).createInstance(viewDescriptor.ctorDescriptor.ctor, ...(viewDescriptor.ctorDescriptor.arguments || []), options) as ViewletPanel;
|
||||
}
|
||||
|
||||
protected getView(id: string): ViewletPanel {
|
||||
|
||||
@@ -121,8 +121,7 @@ export interface IViewDescriptor {
|
||||
|
||||
readonly name: string;
|
||||
|
||||
// TODO@Sandeep do we really need this?!
|
||||
readonly ctor: any;
|
||||
readonly ctorDescriptor: { ctor: any, arguments?: any[] };
|
||||
|
||||
readonly when?: ContextKeyExpr;
|
||||
|
||||
|
||||
@@ -112,11 +112,11 @@ Registry.as<PanelRegistry>(PanelExtensions.Panels).registerPanel(new PanelDescri
|
||||
Registry.as<PanelRegistry>(PanelExtensions.Panels).setDefaultPanelId(REPL_ID);
|
||||
|
||||
// Register default debug views
|
||||
ViewsRegistry.registerViews([{ id: VARIABLES_VIEW_ID, name: nls.localize('variables', "Variables"), ctor: VariablesView, order: 10, weight: 40, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusVariablesView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: WATCH_VIEW_ID, name: nls.localize('watch', "Watch"), ctor: WatchExpressionsView, order: 20, weight: 10, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusWatchView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: CALLSTACK_VIEW_ID, name: nls.localize('callStack', "Call Stack"), ctor: CallStackView, order: 30, weight: 30, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusCallStackView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: BREAKPOINTS_VIEW_ID, name: nls.localize('breakpoints', "Breakpoints"), ctor: BreakpointsView, order: 40, weight: 20, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusBreakpointsView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: LOADED_SCRIPTS_VIEW_ID, name: nls.localize('loadedScripts', "Loaded Scripts"), ctor: LoadedScriptsView, order: 35, weight: 5, canToggleVisibility: true, collapsed: true, when: CONTEXT_LOADED_SCRIPTS_SUPPORTED }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: VARIABLES_VIEW_ID, name: nls.localize('variables', "Variables"), ctorDescriptor: { ctor: VariablesView }, order: 10, weight: 40, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusVariablesView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: WATCH_VIEW_ID, name: nls.localize('watch', "Watch"), ctorDescriptor: { ctor: WatchExpressionsView }, order: 20, weight: 10, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusWatchView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: CALLSTACK_VIEW_ID, name: nls.localize('callStack', "Call Stack"), ctorDescriptor: { ctor: CallStackView }, order: 30, weight: 30, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusCallStackView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: BREAKPOINTS_VIEW_ID, name: nls.localize('breakpoints', "Breakpoints"), ctorDescriptor: { ctor: BreakpointsView }, order: 40, weight: 20, canToggleVisibility: true, focusCommand: { id: 'workbench.debug.action.focusBreakpointsView' } }], VIEW_CONTAINER);
|
||||
ViewsRegistry.registerViews([{ id: LOADED_SCRIPTS_VIEW_ID, name: nls.localize('loadedScripts', "Loaded Scripts"), ctorDescriptor: { ctor: LoadedScriptsView }, order: 35, weight: 5, canToggleVisibility: true, collapsed: true, when: CONTEXT_LOADED_SCRIPTS_SUPPORTED }], VIEW_CONTAINER);
|
||||
|
||||
// register action to open viewlet
|
||||
const registry = Registry.as<IWorkbenchActionRegistry>(WorkbenchActionRegistryExtensions.WorkbenchActions);
|
||||
|
||||
@@ -114,7 +114,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: ExtensionsListView,
|
||||
ctorDescriptor: { ctor: ExtensionsListView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.has('searchExtensions'), ContextKeyExpr.not('searchInstalledExtensions'), ContextKeyExpr.not('searchBuiltInExtensions'), ContextKeyExpr.not('recommendedExtensions'), ContextKeyExpr.not('groupByServersContext')),
|
||||
weight: 100
|
||||
};
|
||||
@@ -127,7 +127,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: EnabledExtensionsView,
|
||||
ctorDescriptor: { ctor: EnabledExtensionsView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.not('searchExtensions'), ContextKeyExpr.has('hasInstalledExtensions')),
|
||||
weight: 40,
|
||||
canToggleVisibility: true,
|
||||
@@ -142,7 +142,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: DisabledExtensionsView,
|
||||
ctorDescriptor: { ctor: DisabledExtensionsView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.not('searchExtensions'), ContextKeyExpr.has('hasInstalledExtensions')),
|
||||
weight: 10,
|
||||
canToggleVisibility: true,
|
||||
@@ -158,7 +158,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: ExtensionsListView,
|
||||
ctorDescriptor: { ctor: ExtensionsListView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.not('searchExtensions'), ContextKeyExpr.not('hasInstalledExtensions')),
|
||||
weight: 60,
|
||||
order: 1
|
||||
@@ -169,7 +169,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return [{
|
||||
id: `server.extensionsList.${server.authority}`,
|
||||
name: server.label,
|
||||
ctor: GroupByServerExtensionsView,
|
||||
ctorDescriptor: { ctor: GroupByServerExtensionsView },
|
||||
when: ContextKeyExpr.has('groupByServersContext'),
|
||||
weight: 100
|
||||
}];
|
||||
@@ -183,7 +183,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: DefaultRecommendedExtensionsView,
|
||||
ctorDescriptor: { ctor: DefaultRecommendedExtensionsView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.not('searchExtensions'), ContextKeyExpr.has('defaultRecommendedExtensions')),
|
||||
weight: 40,
|
||||
order: 2,
|
||||
@@ -198,7 +198,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: RecommendedExtensionsView,
|
||||
ctorDescriptor: { ctor: RecommendedExtensionsView },
|
||||
when: ContextKeyExpr.has('recommendedExtensions'),
|
||||
weight: 50,
|
||||
canToggleVisibility: true,
|
||||
@@ -213,7 +213,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: WorkspaceRecommendedExtensionsView,
|
||||
ctorDescriptor: { ctor: WorkspaceRecommendedExtensionsView },
|
||||
when: ContextKeyExpr.and(ContextKeyExpr.has('recommendedExtensions'), ContextKeyExpr.has('nonEmptyWorkspace')),
|
||||
weight: 50,
|
||||
canToggleVisibility: true,
|
||||
@@ -226,7 +226,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: BuiltInExtensionsView,
|
||||
ctorDescriptor: { ctor: BuiltInExtensionsView },
|
||||
when: ContextKeyExpr.has('searchBuiltInExtensions'),
|
||||
weight: 100,
|
||||
canToggleVisibility: true
|
||||
@@ -238,7 +238,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: BuiltInThemesExtensionsView,
|
||||
ctorDescriptor: { ctor: BuiltInThemesExtensionsView },
|
||||
when: ContextKeyExpr.has('searchBuiltInExtensions'),
|
||||
weight: 100,
|
||||
canToggleVisibility: true
|
||||
@@ -250,7 +250,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
|
||||
return {
|
||||
id,
|
||||
name: viewIdNameMappings[id],
|
||||
ctor: BuiltInBasicsExtensionsView,
|
||||
ctorDescriptor: { ctor: BuiltInBasicsExtensionsView },
|
||||
when: ContextKeyExpr.has('searchBuiltInExtensions'),
|
||||
weight: 100,
|
||||
canToggleVisibility: true
|
||||
|
||||
@@ -99,7 +99,7 @@ export class ExplorerViewletViewsContribution extends Disposable implements IWor
|
||||
return {
|
||||
id: OpenEditorsView.ID,
|
||||
name: OpenEditorsView.NAME,
|
||||
ctor: OpenEditorsView,
|
||||
ctorDescriptor: { ctor: OpenEditorsView },
|
||||
order: 0,
|
||||
when: OpenEditorsVisibleCondition,
|
||||
canToggleVisibility: true,
|
||||
@@ -114,7 +114,7 @@ export class ExplorerViewletViewsContribution extends Disposable implements IWor
|
||||
return {
|
||||
id: EmptyView.ID,
|
||||
name: EmptyView.NAME,
|
||||
ctor: EmptyView,
|
||||
ctorDescriptor: { ctor: EmptyView },
|
||||
order: 1,
|
||||
canToggleVisibility: false
|
||||
};
|
||||
@@ -124,7 +124,7 @@ export class ExplorerViewletViewsContribution extends Disposable implements IWor
|
||||
return {
|
||||
id: ExplorerView.ID,
|
||||
name: localize('folders', "Folders"),
|
||||
ctor: ExplorerView,
|
||||
ctorDescriptor: { ctor: ExplorerView },
|
||||
order: 1,
|
||||
canToggleVisibility: false
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@ import { OutlineConfigKeys, OutlineViewId } from 'vs/editor/contrib/documentSymb
|
||||
const _outlineDesc = <IViewDescriptor>{
|
||||
id: OutlineViewId,
|
||||
name: localize('name', "Outline"),
|
||||
ctor: OutlinePanel,
|
||||
ctorDescriptor: { ctor: OutlinePanel },
|
||||
canToggleVisibility: true,
|
||||
hideByDefault: false,
|
||||
collapsed: true,
|
||||
|
||||
@@ -1366,7 +1366,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel, IViewsViewle
|
||||
const panelsToAdd: { panel: ViewletPanel, size: number, index: number }[] = [];
|
||||
|
||||
for (const { viewDescriptor, collapsed, index, size } of added) {
|
||||
const panel = this.instantiationService.createInstance(viewDescriptor.ctor, <IViewletPanelOptions>{
|
||||
const panel = this.instantiationService.createInstance(viewDescriptor.ctorDescriptor.ctor, <IViewletPanelOptions>{
|
||||
id: viewDescriptor.id,
|
||||
title: viewDescriptor.name,
|
||||
actionRunner: this.getActionRunner(),
|
||||
|
||||
@@ -63,7 +63,7 @@ suite('ContributableViewsModel', () => {
|
||||
|
||||
const viewDescriptor: IViewDescriptor = {
|
||||
id: 'view1',
|
||||
ctor: null,
|
||||
ctorDescriptor: null,
|
||||
name: 'Test View 1'
|
||||
};
|
||||
|
||||
@@ -89,7 +89,7 @@ suite('ContributableViewsModel', () => {
|
||||
|
||||
const viewDescriptor: IViewDescriptor = {
|
||||
id: 'view1',
|
||||
ctor: null,
|
||||
ctorDescriptor: null,
|
||||
name: 'Test View 1',
|
||||
when: ContextKeyExpr.equals('showview1', true)
|
||||
};
|
||||
@@ -128,8 +128,8 @@ suite('ContributableViewsModel', () => {
|
||||
const model = new ContributableViewsModel(container, viewsService);
|
||||
const seq = new ViewDescriptorSequence(model);
|
||||
|
||||
const view1: IViewDescriptor = { id: 'view1', ctor: null, name: 'Test View 1' };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctor: null, name: 'Test View 2', when: ContextKeyExpr.equals('showview2', true) };
|
||||
const view1: IViewDescriptor = { id: 'view1', ctorDescriptor: null, name: 'Test View 1' };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctorDescriptor: null, name: 'Test View 2', when: ContextKeyExpr.equals('showview2', true) };
|
||||
|
||||
ViewsRegistry.registerViews([view1, view2], container);
|
||||
assert.deepEqual(model.visibleViewDescriptors, [view1], 'only view1 should be visible');
|
||||
@@ -151,8 +151,8 @@ suite('ContributableViewsModel', () => {
|
||||
const model = new ContributableViewsModel(container, viewsService);
|
||||
const seq = new ViewDescriptorSequence(model);
|
||||
|
||||
const view1: IViewDescriptor = { id: 'view1', ctor: null, name: 'Test View 1', when: ContextKeyExpr.equals('showview1', true) };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctor: null, name: 'Test View 2' };
|
||||
const view1: IViewDescriptor = { id: 'view1', ctorDescriptor: null, name: 'Test View 1', when: ContextKeyExpr.equals('showview1', true) };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctorDescriptor: null, name: 'Test View 2' };
|
||||
|
||||
ViewsRegistry.registerViews([view1, view2], container);
|
||||
assert.deepEqual(model.visibleViewDescriptors, [view2], 'only view2 should be visible');
|
||||
@@ -174,9 +174,9 @@ suite('ContributableViewsModel', () => {
|
||||
const model = new ContributableViewsModel(container, viewsService);
|
||||
const seq = new ViewDescriptorSequence(model);
|
||||
|
||||
const view1: IViewDescriptor = { id: 'view1', ctor: null, name: 'Test View 1', canToggleVisibility: true };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctor: null, name: 'Test View 2', canToggleVisibility: true };
|
||||
const view3: IViewDescriptor = { id: 'view3', ctor: null, name: 'Test View 3', canToggleVisibility: true };
|
||||
const view1: IViewDescriptor = { id: 'view1', ctorDescriptor: null, name: 'Test View 1', canToggleVisibility: true };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctorDescriptor: null, name: 'Test View 2', canToggleVisibility: true };
|
||||
const view3: IViewDescriptor = { id: 'view3', ctorDescriptor: null, name: 'Test View 3', canToggleVisibility: true };
|
||||
|
||||
ViewsRegistry.registerViews([view1, view2, view3], container);
|
||||
assert.deepEqual(model.visibleViewDescriptors, [view1, view2, view3]);
|
||||
@@ -219,9 +219,9 @@ suite('ContributableViewsModel', () => {
|
||||
const model = new ContributableViewsModel(container, viewsService);
|
||||
const seq = new ViewDescriptorSequence(model);
|
||||
|
||||
const view1: IViewDescriptor = { id: 'view1', ctor: null, name: 'Test View 1' };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctor: null, name: 'Test View 2' };
|
||||
const view3: IViewDescriptor = { id: 'view3', ctor: null, name: 'Test View 3' };
|
||||
const view1: IViewDescriptor = { id: 'view1', ctorDescriptor: null, name: 'Test View 1' };
|
||||
const view2: IViewDescriptor = { id: 'view2', ctorDescriptor: null, name: 'Test View 2' };
|
||||
const view3: IViewDescriptor = { id: 'view3', ctorDescriptor: null, name: 'Test View 3' };
|
||||
|
||||
ViewsRegistry.registerViews([view1, view2, view3], container);
|
||||
assert.deepEqual(model.visibleViewDescriptors, [view1, view2, view3], 'model views should be OK');
|
||||
|
||||
Reference in New Issue
Block a user