Skip to content

Commit baa0bfc

Browse files
committed
1 parent 1a62c8a commit baa0bfc

5 files changed

Lines changed: 35 additions & 14 deletions

File tree

src/vs/workbench/browser/parts/views/viewsService.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,11 @@ export class ViewsService extends Disposable implements IViewsService {
275275
return viewContainerId ? this.viewDescriptorService.getViewContainerById(viewContainerId) : null;
276276
}
277277

278+
getActiveViewPaneContainerWithId(viewContainerId: string): IViewPaneContainer | null {
279+
const viewContainer = this.viewDescriptorService.getViewContainerById(viewContainerId);
280+
return viewContainer ? this.getActiveViewPaneContainer(viewContainer) : null;
281+
}
282+
278283
async openViewContainer(id: string, focus?: boolean): Promise<IPaneComposite | null> {
279284
const viewContainer = this.viewDescriptorService.getViewContainerById(id);
280285
if (viewContainer) {

src/vs/workbench/common/views.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ export interface IViewsService {
484484
openViewContainer(id: string, focus?: boolean): Promise<IPaneComposite | null>;
485485
closeViewContainer(id: string): void;
486486
getVisibleViewContainer(location: ViewContainerLocation): ViewContainer | null;
487+
getActiveViewPaneContainerWithId(viewContainerId: string): IViewPaneContainer | null;
487488

488489
// View APIs
489490
readonly onDidChangeViewVisibility: Event<{ id: string, visible: boolean }>;

src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { ExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/brow
1919
import {
2020
OpenExtensionsViewletAction, InstallExtensionsAction, ShowOutdatedExtensionsAction, ShowRecommendedExtensionsAction, ShowRecommendedKeymapExtensionsAction, ShowPopularExtensionsAction,
2121
ShowEnabledExtensionsAction, ShowInstalledExtensionsAction, ShowDisabledExtensionsAction, ShowBuiltInExtensionsAction, UpdateAllAction,
22-
EnableAllAction, EnableAllWorkspaceAction, DisableAllAction, DisableAllWorkspaceAction, CheckForUpdatesAction, ShowLanguageExtensionsAction, ShowAzureExtensionsAction, EnableAutoUpdateAction, DisableAutoUpdateAction, ConfigureRecommendedExtensionsCommandsContributor, InstallVSIXAction, ReinstallAction, InstallSpecificVersionOfExtensionAction
22+
EnableAllAction, EnableAllWorkspaceAction, DisableAllAction, DisableAllWorkspaceAction, CheckForUpdatesAction, ShowLanguageExtensionsAction, ShowAzureExtensionsAction, EnableAutoUpdateAction, DisableAutoUpdateAction, ConfigureRecommendedExtensionsCommandsContributor, InstallVSIXAction, ReinstallAction, InstallSpecificVersionOfExtensionAction, ClearExtensionsSearchResultsAction
2323
} from 'vs/workbench/contrib/extensions/browser/extensionsActions';
2424
import { ExtensionsInput } from 'vs/workbench/contrib/extensions/common/extensionsInput';
2525
import { ExtensionEditor } from 'vs/workbench/contrib/extensions/browser/extensionEditor';
@@ -148,6 +148,7 @@ actionRegistry.registerWorkbenchAction(enableAllWorkspaceAction, 'Extensions: En
148148
const checkForUpdatesAction = SyncActionDescriptor.from(CheckForUpdatesAction);
149149
actionRegistry.registerWorkbenchAction(checkForUpdatesAction, `Extensions: Check for Extension Updates`, ExtensionsLabel);
150150

151+
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(ClearExtensionsSearchResultsAction), 'Extensions: Clear Extensions Search Results', ExtensionsLabel);
151152
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(EnableAutoUpdateAction), `Extensions: Enable Auto Updating Extensions`, ExtensionsLabel);
152153
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(DisableAutoUpdateAction), `Extensions: Disable Auto Updating Extensions`, ExtensionsLabel);
153154
actionRegistry.registerWorkbenchAction(SyncActionDescriptor.from(InstallSpecificVersionOfExtensionAction), 'Install Specific Version of Extension...', ExtensionsLabel);

src/vs/workbench/contrib/extensions/browser/extensionsActions.ts

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ import { IProductService } from 'vs/platform/product/common/productService';
6060
import { IFileDialogService, IDialogService } from 'vs/platform/dialogs/common/dialogs';
6161
import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress';
6262
import { Codicon } from 'vs/base/common/codicons';
63+
import { IViewsService } from 'vs/workbench/common/views';
6364

6465
export function toExtensionDescription(local: ILocalExtension): IExtensionDescription {
6566
return {
@@ -1641,19 +1642,39 @@ export class ShowDisabledExtensionsAction extends Action {
16411642
}
16421643
}
16431644

1644-
export class ClearExtensionsInputAction extends Action {
1645+
export class ClearExtensionsSearchResultsAction extends Action {
16451646

1646-
static readonly ID = 'workbench.extensions.action.clearExtensionsInput';
1647-
static readonly LABEL = localize('clearExtensionsInput', "Clear Extensions Search Results");
1647+
static readonly ID = 'workbench.extensions.action.clearExtensionsSearchResults';
1648+
static readonly LABEL = localize('clearExtensionsSearchResults', "Clear Extensions Search Results");
1649+
1650+
constructor(
1651+
id: string,
1652+
label: string,
1653+
@IViewsService private readonly viewsService: IViewsService
1654+
) {
1655+
super(id, label, 'codicon-clear-all', true);
1656+
}
1657+
1658+
async run(): Promise<void> {
1659+
const viewPaneContainer = this.viewsService.getActiveViewPaneContainerWithId(VIEWLET_ID);
1660+
if (viewPaneContainer) {
1661+
const extensionsViewPaneContainer = viewPaneContainer as IExtensionsViewPaneContainer;
1662+
extensionsViewPaneContainer.search('');
1663+
extensionsViewPaneContainer.focus();
1664+
}
1665+
}
1666+
}
1667+
1668+
export class ClearExtensionsInputAction extends ClearExtensionsSearchResultsAction {
16481669

16491670
constructor(
16501671
id: string,
16511672
label: string,
16521673
onSearchChange: Event<string>,
16531674
value: string,
1654-
@IViewletService private readonly viewletService: IViewletService
1675+
@IViewsService viewsService: IViewsService
16551676
) {
1656-
super(id, label, 'codicon-clear-all', true);
1677+
super(id, label, viewsService);
16571678
this.onSearchChange(value);
16581679
this._register(onSearchChange(this.onSearchChange, this));
16591680
}
@@ -1662,14 +1683,6 @@ export class ClearExtensionsInputAction extends Action {
16621683
this.enabled = !!value;
16631684
}
16641685

1665-
run(): Promise<void> {
1666-
return this.viewletService.openViewlet(VIEWLET_ID, true)
1667-
.then(viewlet => viewlet?.getViewPaneContainer() as IExtensionsViewPaneContainer)
1668-
.then(viewlet => {
1669-
viewlet.search('');
1670-
viewlet.focus();
1671-
});
1672-
}
16731686
}
16741687

16751688
export class ShowBuiltInExtensionsAction extends Action {

src/vs/workbench/test/browser/workbenchTestServices.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,7 @@ export class TestViewsService implements IViewsService {
495495
openView<T extends IView>(id: string, focus?: boolean | undefined): Promise<T | null> { return Promise.resolve(null); }
496496
closeView(id: string): void { }
497497
getViewProgressIndicator(id: string) { return null!; }
498+
getActiveViewPaneContainerWithId(id: string) { return null; }
498499
}
499500

500501
export class TestEditorGroupsService implements IEditorGroupsService {

0 commit comments

Comments
 (0)