mirror of
https://github.com/Microsoft/vscode
synced 2024-09-20 19:18:03 +00:00
Move "Configure Display Language" to Action2 (#150308)
This commit is contained in:
parent
65d9209e2b
commit
bac03e54cb
|
@ -6,8 +6,7 @@
|
|||
import { localize } from 'vs/nls';
|
||||
import { Registry } from 'vs/platform/registry/common/platform';
|
||||
import { IWorkbenchContribution, Extensions as WorkbenchExtensions, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions';
|
||||
import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions';
|
||||
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
|
||||
import { registerAction2 } from 'vs/platform/actions/common/actions';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ConfigureLocaleAction } from 'vs/workbench/contrib/localizations/browser/localizationsActions';
|
||||
import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
|
||||
|
@ -28,8 +27,7 @@ import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/b
|
|||
import { ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
|
||||
// Register action to configure locale and related settings
|
||||
const registry = Registry.as<IWorkbenchActionRegistry>(Extensions.WorkbenchActions);
|
||||
registry.registerWorkbenchAction(SyncActionDescriptor.from(ConfigureLocaleAction), 'Configure Display Language');
|
||||
registerAction2(ConfigureLocaleAction);
|
||||
|
||||
const LANGUAGEPACK_SUGGESTION_IGNORE_STORAGE_KEY = 'extensionsAssistant/languagePackSuggestionIgnore';
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
import { localize } from 'vs/nls';
|
||||
import { Action } from 'vs/base/common/actions';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ILocalizationsService } from 'vs/platform/localizations/common/localizations';
|
||||
import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput';
|
||||
|
@ -17,27 +16,22 @@ import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
|
|||
import { IProductService } from 'vs/platform/product/common/productService';
|
||||
import { IPaneCompositePartService } from 'vs/workbench/services/panecomposite/browser/panecomposite';
|
||||
import { ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
import { Action2, MenuId } from 'vs/platform/actions/common/actions';
|
||||
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
|
||||
export class ConfigureLocaleAction extends Action {
|
||||
public static readonly ID = 'workbench.action.configureLocale';
|
||||
public static readonly LABEL = localize('configureLocale', "Configure Display Language");
|
||||
|
||||
constructor(id: string, label: string,
|
||||
@IEnvironmentService private readonly environmentService: IEnvironmentService,
|
||||
@ILocalizationsService private readonly localizationService: ILocalizationsService,
|
||||
@IQuickInputService private readonly quickInputService: IQuickInputService,
|
||||
@IJSONEditingService private readonly jsonEditingService: IJSONEditingService,
|
||||
@IHostService private readonly hostService: IHostService,
|
||||
@INotificationService private readonly notificationService: INotificationService,
|
||||
@IPaneCompositePartService private readonly paneCompositeService: IPaneCompositePartService,
|
||||
@IDialogService private readonly dialogService: IDialogService,
|
||||
@IProductService private readonly productService: IProductService
|
||||
) {
|
||||
super(id, label);
|
||||
export class ConfigureLocaleAction extends Action2 {
|
||||
constructor() {
|
||||
super({
|
||||
id: 'workbench.action.configureLocale',
|
||||
title: { original: 'Configure Display Language', value: localize('configureLocale', "Configure Display Language") },
|
||||
menu: {
|
||||
id: MenuId.CommandPalette
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private async getLanguageOptions(): Promise<IQuickPickItem[]> {
|
||||
const availableLanguages = await this.localizationService.getLanguageIds();
|
||||
private async getLanguageOptions(localizationService: ILocalizationsService): Promise<IQuickPickItem[]> {
|
||||
const availableLanguages = await localizationService.getLanguageIds();
|
||||
availableLanguages.sort();
|
||||
|
||||
return availableLanguages
|
||||
|
@ -45,12 +39,22 @@ export class ConfigureLocaleAction extends Action {
|
|||
.concat({ label: localize('installAdditionalLanguages', "Install Additional Languages...") });
|
||||
}
|
||||
|
||||
public override async run(): Promise<void> {
|
||||
const languageOptions = await this.getLanguageOptions();
|
||||
public override async run(accessor: ServicesAccessor): Promise<void> {
|
||||
const environmentService: IEnvironmentService = accessor.get(IEnvironmentService);
|
||||
const localizationService: ILocalizationsService = accessor.get(ILocalizationsService);
|
||||
const quickInputService: IQuickInputService = accessor.get(IQuickInputService);
|
||||
const jsonEditingService: IJSONEditingService = accessor.get(IJSONEditingService);
|
||||
const hostService: IHostService = accessor.get(IHostService);
|
||||
const notificationService: INotificationService = accessor.get(INotificationService);
|
||||
const paneCompositeService: IPaneCompositePartService = accessor.get(IPaneCompositePartService);
|
||||
const dialogService: IDialogService = accessor.get(IDialogService);
|
||||
const productService: IProductService = accessor.get(IProductService);
|
||||
|
||||
const languageOptions = await this.getLanguageOptions(localizationService);
|
||||
const currentLanguageIndex = languageOptions.findIndex(l => l.label === language);
|
||||
|
||||
try {
|
||||
const selectedLanguage = await this.quickInputService.pick(languageOptions,
|
||||
const selectedLanguage = await quickInputService.pick(languageOptions,
|
||||
{
|
||||
canPickMany: false,
|
||||
placeHolder: localize('chooseDisplayLanguage', "Select Display Language"),
|
||||
|
@ -58,7 +62,7 @@ export class ConfigureLocaleAction extends Action {
|
|||
});
|
||||
|
||||
if (selectedLanguage === languageOptions[languageOptions.length - 1]) {
|
||||
return this.paneCompositeService.openPaneComposite(EXTENSIONS_VIEWLET_ID, ViewContainerLocation.Sidebar, true)
|
||||
return paneCompositeService.openPaneComposite(EXTENSIONS_VIEWLET_ID, ViewContainerLocation.Sidebar, true)
|
||||
.then(viewlet => viewlet?.getViewPaneContainer())
|
||||
.then(viewlet => {
|
||||
const extensionsViewlet = viewlet as IExtensionsViewPaneContainer;
|
||||
|
@ -68,20 +72,20 @@ export class ConfigureLocaleAction extends Action {
|
|||
}
|
||||
|
||||
if (selectedLanguage) {
|
||||
await this.jsonEditingService.write(this.environmentService.argvResource, [{ path: ['locale'], value: selectedLanguage.label }], true);
|
||||
const restart = await this.dialogService.confirm({
|
||||
await jsonEditingService.write(environmentService.argvResource, [{ path: ['locale'], value: selectedLanguage.label }], true);
|
||||
const restart = await dialogService.confirm({
|
||||
type: 'info',
|
||||
message: localize('relaunchDisplayLanguageMessage', "A restart is required for the change in display language to take effect."),
|
||||
detail: localize('relaunchDisplayLanguageDetail', "Press the restart button to restart {0} and change the display language.", this.productService.nameLong),
|
||||
detail: localize('relaunchDisplayLanguageDetail', "Press the restart button to restart {0} and change the display language.", productService.nameLong),
|
||||
primaryButton: localize('restart', "&&Restart")
|
||||
});
|
||||
|
||||
if (restart.confirmed) {
|
||||
this.hostService.restart();
|
||||
hostService.restart();
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
this.notificationService.error(e);
|
||||
notificationService.error(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue