From 6263df663505e88635987bab6e4bd1c2bdfdab2f Mon Sep 17 00:00:00 2001 From: chriswang521 Date: Thu, 13 Jun 2024 15:33:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=8F=92=E4=BB=B6=E4=BE=A7=E8=BE=B9?= =?UTF-8?q?=E6=A0=8F'Kylin-IDE=E6=8E=A8=E8=8D=90=E6=8F=92=E4=BB=B6'?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=A7=86=E5=9B=BE=E6=A0=87=E9=A2=98=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AD=9B=E9=80=89=E5=92=8C=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=8C=89=E9=92=AE.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../browser/extensions.contribution.ts | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts index ab217291..7e167cce 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts @@ -13,7 +13,7 @@ import { EnablementState, IExtensionManagementServerService, IWorkbenchExtension import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; -import { VIEWLET_ID, IExtensionsWorkbenchService, IExtensionsViewPaneContainer, TOGGLE_IGNORE_EXTENSION_ACTION_ID, INSTALL_EXTENSION_FROM_VSIX_COMMAND_ID, WORKSPACE_RECOMMENDATIONS_VIEW_ID, IWorkspaceRecommendedExtensionsView, AutoUpdateConfigurationKey, HasOutdatedExtensionsContext, SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID, LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID, ExtensionEditorTab, THEME_ACTIONS_GROUP, INSTALL_ACTIONS_GROUP, OUTDATED_EXTENSIONS_VIEW_ID, CONTEXT_HAS_GALLERY, IExtension, extensionsSearchActionsMenu, UPDATE_ACTIONS_GROUP } from 'vs/workbench/contrib/extensions/common/extensions'; +import { VIEWLET_ID, IExtensionsWorkbenchService, IExtensionsViewPaneContainer, TOGGLE_IGNORE_EXTENSION_ACTION_ID, INSTALL_EXTENSION_FROM_VSIX_COMMAND_ID, WORKSPACE_RECOMMENDATIONS_VIEW_ID, IWorkspaceRecommendedExtensionsView, AutoUpdateConfigurationKey, HasOutdatedExtensionsContext, SELECT_INSTALL_VSIX_EXTENSION_COMMAND_ID, LIST_WORKSPACE_UNSUPPORTED_EXTENSIONS_COMMAND_ID, ExtensionEditorTab, THEME_ACTIONS_GROUP, INSTALL_ACTIONS_GROUP, OUTDATED_EXTENSIONS_VIEW_ID, CONTEXT_HAS_GALLERY, IExtension, extensionsSearchActionsMenu, UPDATE_ACTIONS_GROUP, WORKSPACE_KYLINIDETEAM_VIEW_ID, IWorkspaceKylinIDETeamExtensionsView } from 'vs/workbench/contrib/extensions/common/extensions'; import { ReinstallAction, InstallSpecificVersionOfExtensionAction, ConfigureWorkspaceRecommendedExtensionsAction, ConfigureWorkspaceFolderRecommendedExtensionsAction, PromptExtensionInstallFailureAction, SearchExtensionsAction, SwitchToPreReleaseVersionAction, SwitchToReleasedVersionAction, SetColorThemeAction, SetFileIconThemeAction, SetProductIconThemeAction, ClearLanguageAction, ToggleAutoUpdateForExtensionAction, ToggleAutoUpdatesForPublisherAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; import { ExtensionsInput } from 'vs/workbench/contrib/extensions/common/extensionsInput'; import { ExtensionEditor } from 'vs/workbench/contrib/extensions/browser/extensionEditor'; @@ -57,7 +57,7 @@ import { IWorkspaceExtensionsConfigService } from 'vs/workbench/services/extensi import { Schemas } from 'vs/base/common/network'; import { ShowRuntimeExtensionsAction } from 'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor'; import { ExtensionEnablementWorkspaceTrustTransitionParticipant } from 'vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant'; -import { clearSearchResultsIcon, configureRecommendedIcon, extensionsViewIcon, filterIcon, installWorkspaceRecommendedIcon, refreshIcon } from 'vs/workbench/contrib/extensions/browser/extensionsIcons'; +import { clearSearchResultsIcon, configureRecommendedIcon, extensionsViewIcon, filterIcon, installWorkspaceRecommendedIcon, kylinIdeExtensionsFilterIcon, kylinIdeExtensionsResetIcon, refreshIcon } from 'vs/workbench/contrib/extensions/browser/extensionsIcons'; import { EXTENSION_CATEGORIES } from 'vs/platform/extensions/common/extensions'; import { Disposable, DisposableStore, IDisposable, isDisposable } from 'vs/base/common/lifecycle'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -1259,6 +1259,49 @@ class ExtensionsContributions extends Disposable implements IWorkbenchContributi // } // }); + const kylinIdeExtensionsFilterSubMenu = new MenuId('kylinIdeExtensionsFilterSubMenu'); + MenuRegistry.appendMenuItem(MenuId.ViewTitle, { + submenu: kylinIdeExtensionsFilterSubMenu, + title: localize('filterExtensions', "Filter Extensions..."), + when: ContextKeyExpr.equals('view', WORKSPACE_KYLINIDETEAM_VIEW_ID), + group: 'navigation', + order: 2, + icon: kylinIdeExtensionsFilterIcon, + }); + + Object.entries(extensionKylinCategories).forEach(([categoryKey, category], index) => { + this.registerExtensionAction({ + id: `extensions.actions.kylinIdeExtensionsByCategory.${categoryKey}`, + title: category, + menu: [{ + id: kylinIdeExtensionsFilterSubMenu, + when: CONTEXT_HAS_GALLERY, + order: index, + }], + run: async (accessor: ServicesAccessor) => { + const view = accessor.get(IViewsService).getActiveViewWithId(WORKSPACE_KYLINIDETEAM_VIEW_ID) as IWorkspaceKylinIDETeamExtensionsView; + view.filterKylinIdeTeamExtensions(`@kylinIDETeam:"${categoryKey.toLowerCase()}"`, category); + } + }); + }); + + this.registerExtensionAction({ + id: `extensions.actions.kylinIdeExtensions.reset`, + title: localize('kylinIdeExtensionsReset', "Clear Extensions Filter"), + icon: kylinIdeExtensionsResetIcon, + menu: { + id: MenuId.ViewTitle, + when: ContextKeyExpr.equals('view', WORKSPACE_KYLINIDETEAM_VIEW_ID), + group: 'navigation', + order: 1 + }, + run: async (accessor: ServicesAccessor) => { + const defaultQuery = '@kylinIDETeam:"kylinidedev kylinidedevcooperator"'; + const view = accessor.get(IViewsService).getActiveViewWithId(WORKSPACE_KYLINIDETEAM_VIEW_ID) as IWorkspaceKylinIDETeamExtensionsView; + view.filterKylinIdeTeamExtensions(defaultQuery, ''); + } + }); + this.registerExtensionAction({ id: 'workbench.extensions.action.installWorkspaceRecommendedExtensions', title: localize('installWorkspaceRecommendedExtensions', "Install Workspace Recommended Extensions"),