Skip to content

Commit b8ad46d

Browse files
author
Benjamin Pasero
committed
debt - bye bye DeferredAction
1 parent 54b4101 commit b8ad46d

3 files changed

Lines changed: 13 additions & 203 deletions

File tree

src/vs/platform/actions/common/actions.ts

Lines changed: 5 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
*--------------------------------------------------------------------------------------------*/
55
'use strict';
66

7-
import { IAction, Action } from 'vs/base/common/actions';
8-
import { Promise, TPromise } from 'vs/base/common/winjs.base';
9-
import { SyncDescriptor0, createSyncDescriptor, AsyncDescriptor0 } from 'vs/platform/instantiation/common/descriptors';
10-
import { IConstructorSignature2, IInstantiationService, createDecorator } from 'vs/platform/instantiation/common/instantiation';
7+
import { Action } from 'vs/base/common/actions';
8+
import { TPromise } from 'vs/base/common/winjs.base';
9+
import { SyncDescriptor0, createSyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
10+
import { IConstructorSignature2, createDecorator } from 'vs/platform/instantiation/common/instantiation';
1111
import { IKeybindings } from 'vs/platform/keybinding/common/keybinding';
1212
import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
1313
import { ICommandService } from 'vs/platform/commands/common/commands';
@@ -202,135 +202,4 @@ export class SyncActionDescriptor {
202202
public get keybindingWeight(): number {
203203
return this._keybindingWeight;
204204
}
205-
}
206-
207-
/**
208-
* A proxy for an action that needs to load code in order to confunction. Can be used from contributions to defer
209-
* module loading up to the point until the run method is being executed.
210-
*/
211-
export class DeferredAction extends Action {
212-
private _cachedAction: IAction;
213-
private _emitterUnbind: IDisposable;
214-
215-
constructor(private _instantiationService: IInstantiationService,
216-
private _descriptor: AsyncDescriptor0<Action>,
217-
id: string, label = '', cssClass = '', enabled = true) {
218-
219-
super(id, label, cssClass, enabled);
220-
}
221-
222-
public get cachedAction(): IAction {
223-
return this._cachedAction;
224-
}
225-
226-
public set cachedAction(action: IAction) {
227-
this._cachedAction = action;
228-
}
229-
230-
public get id(): string {
231-
if (this._cachedAction instanceof Action) {
232-
return this._cachedAction.id;
233-
}
234-
235-
return this._id;
236-
}
237-
238-
public get label(): string {
239-
if (this._cachedAction instanceof Action) {
240-
return this._cachedAction.label;
241-
}
242-
243-
return this._label;
244-
}
245-
246-
public set label(value: string) {
247-
if (this._cachedAction instanceof Action) {
248-
this._cachedAction.label = value;
249-
} else {
250-
this._setLabel(value);
251-
}
252-
}
253-
254-
public get class(): string {
255-
if (this._cachedAction instanceof Action) {
256-
return this._cachedAction.class;
257-
}
258-
259-
return this._cssClass;
260-
}
261-
262-
public set class(value: string) {
263-
if (this._cachedAction instanceof Action) {
264-
this._cachedAction.class = value;
265-
} else {
266-
this._setClass(value);
267-
}
268-
}
269-
270-
public get enabled(): boolean {
271-
if (this._cachedAction instanceof Action) {
272-
return this._cachedAction.enabled;
273-
}
274-
return this._enabled;
275-
}
276-
277-
public set enabled(value: boolean) {
278-
if (this._cachedAction instanceof Action) {
279-
this._cachedAction.enabled = value;
280-
} else {
281-
this._setEnabled(value);
282-
}
283-
}
284-
285-
public get order(): number {
286-
if (this._cachedAction instanceof Action) {
287-
return (<Action>this._cachedAction).order;
288-
}
289-
return this._order;
290-
}
291-
292-
public set order(order: number) {
293-
if (this._cachedAction instanceof Action) {
294-
(<Action>this._cachedAction).order = order;
295-
} else {
296-
this._order = order;
297-
}
298-
}
299-
300-
public run(event?: any): Promise {
301-
if (this._cachedAction) {
302-
return this._cachedAction.run(event);
303-
}
304-
return this._createAction().then((action: IAction) => {
305-
return action.run(event);
306-
});
307-
}
308-
309-
private _createAction(): TPromise<IAction> {
310-
let promise = TPromise.as(undefined);
311-
return promise.then(() => {
312-
return this._instantiationService.createInstance(this._descriptor);
313-
}).then(action => {
314-
if (action instanceof Action) {
315-
this._cachedAction = action;
316-
// Pipe events from the instantated action through this deferred action
317-
this._emitterUnbind = action.onDidChange(e => this._onDidChange.fire(e));
318-
319-
} else {
320-
throw new Error('Action must be an instanceof Base Action');
321-
}
322-
323-
return action;
324-
});
325-
}
326-
327-
public dispose(): void {
328-
if (this._emitterUnbind) {
329-
this._emitterUnbind.dispose();
330-
}
331-
if (this._cachedAction) {
332-
this._cachedAction.dispose();
333-
}
334-
super.dispose();
335-
}
336-
}
205+
}

src/vs/platform/actions/test/common/actions.test.ts

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/vs/workbench/parts/search/browser/search.contribution.ts

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,13 @@ import { IConfigurationRegistry, Extensions as ConfigurationExtensions } from 'v
1313
import nls = require('vs/nls');
1414
import { IAction } from 'vs/base/common/actions';
1515
import { asFileResource } from 'vs/workbench/parts/files/common/files';
16-
import { SyncActionDescriptor, DeferredAction } from 'vs/platform/actions/common/actions';
16+
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
1717
import { Separator } from 'vs/base/browser/ui/actionbar/actionbar';
1818
import { Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor } from 'vs/workbench/browser/actionBarRegistry';
1919
import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry';
2020
import { QuickOpenHandlerDescriptor, IQuickOpenRegistry, Extensions as QuickOpenExtensions, QuickOpenAction } from 'vs/workbench/browser/quickopen';
2121
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
2222
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
23-
import { AsyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
2423
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
2524
import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen';
2625
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
@@ -78,12 +77,7 @@ class ExplorerViewerActionContributor extends ActionBarContributor {
7877
if (this.hasSecondaryActions(context)) {
7978
let fileResource = asFileResource(context.element);
8079

81-
let action = new DeferredAction(
82-
this._instantiationService,
83-
new AsyncDescriptor('vs/workbench/parts/search/browser/searchActions', 'FindInFolderAction', fileResource.resource),
84-
'workbench.search.action.findInFolder',
85-
nls.localize('findInFolder', "Find in Folder")
86-
);
80+
let action = this._instantiationService.createInstance(searchActions.FindInFolderAction, fileResource.resource);
8781
action.order = 55;
8882
actions.push(action);
8983

@@ -106,7 +100,7 @@ class ShowAllSymbolsAction extends QuickOpenAction {
106100
}
107101

108102
// Register Viewlet
109-
(<ViewletRegistry>Registry.as(ViewletExtensions.Viewlets)).registerViewlet(new ViewletDescriptor(
103+
Registry.as<ViewletRegistry>(ViewletExtensions.Viewlets).registerViewlet(new ViewletDescriptor(
110104
'vs/workbench/parts/search/browser/searchViewlet',
111105
'SearchViewlet',
112106
Constants.VIEWLET_ID,
@@ -116,8 +110,7 @@ class ShowAllSymbolsAction extends QuickOpenAction {
116110
));
117111

118112
// Actions
119-
const registry = <IWorkbenchActionRegistry>Registry.as(ActionExtensions.WorkbenchActions);
120-
113+
const registry = Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions);
121114

122115
registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.OpenSearchViewletAction, Constants.VIEWLET_ID, nls.localize('showSearchViewlet', "Show Search"), { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KEY_F },
123116
Constants.SearchViewletVisibleKey.toNegated()), 'View: Show Search', nls.localize('view', "View"));
@@ -148,11 +141,11 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(searchActions.ToggleRe
148141
registry.registerWorkbenchAction(new SyncActionDescriptor(ShowAllSymbolsAction, ACTION_ID, ACTION_LABEL, { primary: KeyMod.CtrlCmd | KeyCode.KEY_T }), 'Go to Symbol in Workspace...');
149142

150143
// Contribute to Explorer Viewer
151-
const actionBarRegistry = <IActionBarRegistry>Registry.as(ActionBarExtensions.Actionbar);
144+
const actionBarRegistry = Registry.as<IActionBarRegistry>(ActionBarExtensions.Actionbar);
152145
actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActionContributor);
153146

154147
// Register Quick Open Handler
155-
(<IQuickOpenRegistry>Registry.as(QuickOpenExtensions.Quickopen)).registerDefaultQuickOpenHandler(
148+
Registry.as<IQuickOpenRegistry>(QuickOpenExtensions.Quickopen).registerDefaultQuickOpenHandler(
156149
new QuickOpenHandlerDescriptor(
157150
'vs/workbench/parts/search/browser/openAnythingHandler',
158151
'OpenAnythingHandler',
@@ -161,7 +154,7 @@ actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActio
161154
)
162155
);
163156

164-
(<IQuickOpenRegistry>Registry.as(QuickOpenExtensions.Quickopen)).registerQuickOpenHandler(
157+
Registry.as<IQuickOpenRegistry>(QuickOpenExtensions.Quickopen).registerQuickOpenHandler(
165158
new QuickOpenHandlerDescriptor(
166159
'vs/workbench/parts/search/browser/openAnythingHandler',
167160
'OpenSymbolHandler',
@@ -176,9 +169,8 @@ actionBarRegistry.registerActionBarContributor(Scope.VIEWER, ExplorerViewerActio
176169
)
177170
);
178171

179-
180172
// Configuration
181-
const configurationRegistry = <IConfigurationRegistry>Registry.as(ConfigurationExtensions.Configuration);
173+
const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigurationExtensions.Configuration);
182174
configurationRegistry.registerConfiguration({
183175
'id': 'search',
184176
'order': 13,

0 commit comments

Comments
 (0)