提交 0294604c 编写于 作者: S Sandeep Somavarapu

Fix #42737

上级 9000ab78
......@@ -6,7 +6,7 @@
import 'vs/css!./list';
import { IDisposable } from 'vs/base/common/lifecycle';
import { range } from 'vs/base/common/arrays';
import { IVirtualDelegate, IRenderer, IListEvent, IListOpenEvent } from './list';
import { IVirtualDelegate, IRenderer, IListEvent, IListOpenEvent, IListContextMenuEvent } from './list';
import { List, IListStyles, IListOptions } from './listWidget';
import { IPagedModel } from 'vs/base/common/paging';
import { Event, mapEvent } from 'vs/base/common/event';
......@@ -123,6 +123,10 @@ export class PagedList<T> implements IDisposable {
return mapEvent(this.list.onPin, ({ elements, indexes }) => ({ elements: elements.map(e => this._model.get(e)), indexes }));
}
get onContextMenu(): Event<IListContextMenuEvent<T>> {
return mapEvent(this.list.onContextMenu, ({ element, index, anchor }) => ({ element: this._model.get(element), index, anchor }));
}
get model(): IPagedModel<T> {
return this._model;
}
......
......@@ -416,7 +416,7 @@ export class DropDownMenuActionItem extends ActionItem {
});
}
private getActions(): IAction[] {
getActions(): IAction[] {
let actions: IAction[] = [];
const menuActionGroups = this.menuActionGroups;
for (const menuActions of menuActionGroups) {
......@@ -439,7 +439,7 @@ export class ManageExtensionAction extends Action {
private static readonly HideManageExtensionClass = `${ManageExtensionAction.Class} hide`;
private _actionItem: DropDownMenuActionItem;
get actionItem(): IActionItem { return this._actionItem; }
get actionItem(): DropDownMenuActionItem { return this._actionItem; }
private disposables: IDisposable[] = [];
private _extension: IExtension;
......
......@@ -32,7 +32,7 @@ import { IModeService } from 'vs/editor/common/services/modeService';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { CountBadge } from 'vs/base/browser/ui/countBadge/countBadge';
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
import { InstallWorkspaceRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction } from 'vs/workbench/parts/extensions/electron-browser/extensionsActions';
import { InstallWorkspaceRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction, ManageExtensionAction } from 'vs/workbench/parts/extensions/electron-browser/extensionsActions';
import { WorkbenchPagedList } from 'vs/platform/list/browser/listService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { INotificationService } from 'vs/platform/notification/common/notification';
......@@ -41,6 +41,7 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace
import { distinct } from 'vs/base/common/arrays';
import { IExperimentService, IExperiment, ExperimentActionType } from 'vs/workbench/parts/experiments/node/experimentService';
import { alert } from 'vs/base/browser/ui/aria/aria';
import { IListContextMenuEvent } from 'vs/base/browser/ui/list/list';
export class ExtensionsListView extends ViewletPanel {
......@@ -93,6 +94,7 @@ export class ExtensionsListView extends ViewletPanel {
ariaLabel: localize('extensions', "Extensions"),
multipleSelectionSupport: false
}) as WorkbenchPagedList<IExtension>;
this.list.onContextMenu(e => this.onContextMenu(e), this, this.disposables);
this.disposables.push(this.list);
chain(this.list.onOpen)
......@@ -179,6 +181,19 @@ export class ExtensionsListView extends ViewletPanel {
return TPromise.as(emptyModel);
}
private onContextMenu(e: IListContextMenuEvent<IExtension>): void {
if (e.element) {
const manageExtensionAction = this.instantiationService.createInstance(ManageExtensionAction);
manageExtensionAction.extension = e.element;
if (manageExtensionAction.enabled) {
this.contextMenuService.showContextMenu({
getAnchor: () => e.anchor,
getActions: () => TPromise.as(manageExtensionAction.actionItem.getActions())
});
}
}
}
private async queryLocal(query: Query, options: IQueryOptions): Promise<IPagedModel<IExtension>> {
let value = query.value;
if (/@builtin/i.test(value)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册