提交 64992dee 编写于 作者: S Sandeep Somavarapu

Adopt menus using new configuration change event

上级 2cbaa8c7
......@@ -11,8 +11,8 @@ import * as arrays from 'vs/base/common/arrays';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import { ipcMain as ipc, app, shell, dialog, Menu, MenuItem, BrowserWindow } from 'electron';
import { OpenContext, IRunActionInWindowRequest } from 'vs/platform/windows/common/windows';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IFilesConfiguration, AutoSaveConfiguration } from 'vs/platform/files/common/files';
import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration';
import { AutoSaveConfiguration } from 'vs/platform/files/common/files';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IUpdateService, State as UpdateState } from 'vs/platform/update/common/update';
import product from 'vs/platform/node/product';
......@@ -29,27 +29,6 @@ interface IExtensionViewlet {
label: string;
}
interface IConfiguration extends IFilesConfiguration {
window: {
enableMenuBarMnemonics: boolean;
nativeTabs: boolean;
};
workbench: {
sideBar: {
location: 'left' | 'right';
},
statusBar: {
visible: boolean;
},
activityBar: {
visible: boolean;
}
};
editor: {
multiCursorModifier: 'ctrlCmd' | 'alt'
};
}
interface IMenuItemClickHandler {
inDevTools: (contents: Electron.WebContents) => void;
inNoWindow: () => void;
......@@ -61,13 +40,15 @@ export class CodeMenu {
private static MAX_MENU_RECENT_ENTRIES = 10;
private currentAutoSaveSetting: string;
private currentMultiCursorModifierSetting: string;
private currentSidebarLocation: 'left' | 'right';
private currentStatusbarVisible: boolean;
private currentActivityBarVisible: boolean;
private currentEnableMenuBarMnemonics: boolean;
private currentEnableNativeTabs: boolean;
private keys = [
'files.autoSave',
'editor.multiCursorModifier',
'workbench.sideBar.location',
'workbench.statusBar.visible',
'workbench.activityBar.visible',
'window.enableMenuBarMnemonics',
'window.nativeTabs'
];
private isQuitting: boolean;
private appMenuInstalled: boolean;
......@@ -99,8 +80,6 @@ export class CodeMenu {
this.menuUpdater = new RunOnceScheduler(() => this.doUpdateMenu(), 0);
this.keybindingsResolver = instantiationService.createInstance(KeybindingsResolver);
this.onConfigurationUpdated(this.configurationService.getConfiguration<IConfiguration>());
this.install();
this.registerListeners();
......@@ -136,7 +115,7 @@ export class CodeMenu {
});
// Update when auto save config changes
this.configurationService.onDidChangeConfiguration(e => this.onConfigurationUpdated(this.configurationService.getConfiguration<IConfiguration>(), true /* update menu if changed */));
this.configurationService.onDidChangeConfiguration(e => this.onConfigurationUpdated(e));
// Listen to update service
this.updateService.onStateChange(() => this.updateMenu());
......@@ -145,65 +124,54 @@ export class CodeMenu {
this.keybindingsResolver.onKeybindingsChanged(() => this.updateMenu());
}
private onConfigurationUpdated(config: IConfiguration, handleMenu?: boolean): void {
let updateMenu = false;
const newAutoSaveSetting = config && config.files && config.files.autoSave;
if (newAutoSaveSetting !== this.currentAutoSaveSetting) {
this.currentAutoSaveSetting = newAutoSaveSetting;
updateMenu = true;
private onConfigurationUpdated(event: IConfigurationChangeEvent): void {
if (this.keys.some(key => event.affectsConfiguration(key))) {
this.updateMenu();
}
}
const newMultiCursorModifierSetting = config && config.editor && config.editor.multiCursorModifier;
if (newMultiCursorModifierSetting !== this.currentMultiCursorModifierSetting) {
this.currentMultiCursorModifierSetting = newMultiCursorModifierSetting;
updateMenu = true;
}
private get currentAutoSaveSetting(): string {
return this.configurationService.getValue<string>('files.autoSave');
}
const newSidebarLocation = config && config.workbench && config.workbench.sideBar && config.workbench.sideBar.location || 'left';
if (newSidebarLocation !== this.currentSidebarLocation) {
this.currentSidebarLocation = newSidebarLocation;
updateMenu = true;
}
private get currentMultiCursorModifierSetting(): string {
return this.configurationService.getValue<string>('editor.multiCursorModifier');
}
let newStatusbarVisible = config && config.workbench && config.workbench.statusBar && config.workbench.statusBar.visible;
if (typeof newStatusbarVisible !== 'boolean') {
newStatusbarVisible = true;
}
if (newStatusbarVisible !== this.currentStatusbarVisible) {
this.currentStatusbarVisible = newStatusbarVisible;
updateMenu = true;
}
private get currentSidebarLocation(): string {
return this.configurationService.getValue<string>('workbench.sideBar.location') || 'left';
}
let newActivityBarVisible = config && config.workbench && config.workbench.activityBar && config.workbench.activityBar.visible;
if (typeof newActivityBarVisible !== 'boolean') {
newActivityBarVisible = true;
}
if (newActivityBarVisible !== this.currentActivityBarVisible) {
this.currentActivityBarVisible = newActivityBarVisible;
updateMenu = true;
private get currentStatusbarVisible(): boolean {
let statusbarVisible = this.configurationService.getValue<boolean>('workbench.statusBar.visible');
if (typeof statusbarVisible !== 'boolean') {
statusbarVisible = true;
}
return statusbarVisible;
}
let newEnableMenuBarMnemonics = config && config.window && config.window.enableMenuBarMnemonics;
if (typeof newEnableMenuBarMnemonics !== 'boolean') {
newEnableMenuBarMnemonics = true;
}
if (newEnableMenuBarMnemonics !== this.currentEnableMenuBarMnemonics) {
this.currentEnableMenuBarMnemonics = newEnableMenuBarMnemonics;
updateMenu = true;
private get currentActivityBarVisible(): boolean {
let activityBarVisible = this.configurationService.getValue<boolean>('workbench.activityBar.visible');
if (typeof activityBarVisible !== 'boolean') {
activityBarVisible = true;
}
return activityBarVisible;
}
let newEnableNativeTabs = config && config.window && config.window.nativeTabs;
if (typeof newEnableNativeTabs !== 'boolean') {
newEnableNativeTabs = false;
}
if (newEnableNativeTabs !== this.currentEnableNativeTabs) {
this.currentEnableNativeTabs = newEnableNativeTabs;
updateMenu = true;
private get currentEnableMenuBarMnemonics(): boolean {
let enableMenuBarMnemonics = this.configurationService.getValue<boolean>('window.enableMenuBarMnemonics');
if (typeof enableMenuBarMnemonics !== 'boolean') {
enableMenuBarMnemonics = true;
}
return enableMenuBarMnemonics;
}
if (handleMenu && updateMenu) {
this.updateMenu();
private get currentEnableNativeTabs(): boolean {
let enableNativeTabs = this.configurationService.getValue<boolean>('window.nativeTabs');
if (typeof enableNativeTabs !== 'boolean') {
enableNativeTabs = false;
}
return enableNativeTabs;
}
private updateMenu(): void {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册