Skip to content

Commit e32a0f3

Browse files
core: refactor manage sidebar menu (#12803)
The commit refactors the `manage` sidebar menu (previously settings) to the same organization present in vscode with similar commands. Signed-off-by: vince-fugnitto <vincent.fugnitto@ericsson.com>
1 parent 99cab35 commit e32a0f3

File tree

8 files changed

+54
-19
lines changed

8 files changed

+54
-19
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44

55
- [Previous Changelogs](https://github.com/eclipse-theia/theia/tree/master/doc/changelogs/)
66

7+
## v1.43.0 - Unreleased
8+
9+
<a name="breaking_changes_1.43.0">[Breaking Changes:](#breaking_changes_1.43.0)</a>
10+
11+
- [core] removed `SETTINGS_OPEN` menupath constant - replaced by `MANAGE_GENERAL` [#12803](https://github.com/eclipse-theia/theia/pull/12803)
12+
- [core] removed `SETTINGS__THEME` menupath constant - replaced by `MANAGE_SETTINGS` [#12803](https://github.com/eclipse-theia/theia/pull/12803)
13+
714
## v1.42.0 - 09/28/2023
815

916
- [core] added `inversify` support in the frontend preload script [#12590](https://github.com/eclipse-theia/theia/pull/12590)

packages/core/src/browser/common-frontend-contribution.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import debounce = require('lodash.debounce');
2020
import { injectable, inject, optional } from 'inversify';
21-
import { MAIN_MENU_BAR, SETTINGS_MENU, MenuContribution, MenuModelRegistry, ACCOUNTS_MENU } from '../common/menu';
21+
import { MAIN_MENU_BAR, MANAGE_MENU, MenuContribution, MenuModelRegistry, ACCOUNTS_MENU } from '../common/menu';
2222
import { KeybindingContribution, KeybindingRegistry } from './keybinding';
2323
import { FrontendApplication, FrontendApplicationContribution, OnWillStopAction } from './frontend-application';
2424
import { CommandContribution, CommandRegistry, Command } from '../common/command';
@@ -100,8 +100,10 @@ export namespace CommonMenus {
100100
export const VIEW_LAYOUT = [...VIEW, '3_layout'];
101101
export const VIEW_TOGGLE = [...VIEW, '4_toggle'];
102102

103-
export const SETTINGS_OPEN = [...SETTINGS_MENU, '1_settings_open'];
104-
export const SETTINGS__THEME = [...SETTINGS_MENU, '2_settings_theme'];
103+
export const MANAGE_GENERAL = [...MANAGE_MENU, '1_manage_general'];
104+
export const MANAGE_SETTINGS = [...MANAGE_MENU, '2_manage_settings'];
105+
export const MANAGE_SETTINGS_THEMES = [...MANAGE_SETTINGS, '1_manage_settings_themes'];
106+
105107
// last menu item
106108
export const HELP = [...MAIN_MENU_BAR, '9_help'];
107109

@@ -113,6 +115,7 @@ export namespace CommonCommands {
113115
export const VIEW_CATEGORY = 'View';
114116
export const CREATE_CATEGORY = 'Create';
115117
export const PREFERENCES_CATEGORY = 'Preferences';
118+
export const MANAGE_CATEGORY = 'Manage';
116119
export const FILE_CATEGORY_KEY = nls.getDefaultKey(FILE_CATEGORY);
117120
export const VIEW_CATEGORY_KEY = nls.getDefaultKey(VIEW_CATEGORY);
118121
export const PREFERENCES_CATEGORY_KEY = nls.getDefaultKey(PREFERENCES_CATEGORY);
@@ -455,16 +458,16 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
455458
app.shell.leftPanelHandler.addBottomMenu({
456459
id: 'settings-menu',
457460
iconClass: 'codicon codicon-settings-gear',
458-
title: nls.localizeByDefault(CommonCommands.PREFERENCES_CATEGORY),
459-
menuPath: SETTINGS_MENU,
460-
order: 0,
461+
title: nls.localizeByDefault(CommonCommands.MANAGE_CATEGORY),
462+
menuPath: MANAGE_MENU,
463+
order: 1,
461464
});
462465
const accountsMenu = {
463466
id: 'accounts-menu',
464467
iconClass: 'codicon codicon-person',
465468
title: nls.localizeByDefault('Accounts'),
466469
menuPath: ACCOUNTS_MENU,
467-
order: 1,
470+
order: 0,
468471
};
469472
this.authenticationService.onDidRegisterAuthenticationProvider(() => {
470473
app.shell.leftPanelHandler.addBottomMenu(accountsMenu);
@@ -700,11 +703,14 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
700703
commandId: CommonCommands.SELECT_ICON_THEME.id
701704
});
702705

703-
registry.registerMenuAction(CommonMenus.SETTINGS__THEME, {
704-
commandId: CommonCommands.SELECT_COLOR_THEME.id
706+
registry.registerSubmenu(CommonMenus.MANAGE_SETTINGS_THEMES, nls.localizeByDefault('Themes'), { order: 'a50' });
707+
registry.registerMenuAction(CommonMenus.MANAGE_SETTINGS_THEMES, {
708+
commandId: CommonCommands.SELECT_COLOR_THEME.id,
709+
order: '0'
705710
});
706-
registry.registerMenuAction(CommonMenus.SETTINGS__THEME, {
707-
commandId: CommonCommands.SELECT_ICON_THEME.id
711+
registry.registerMenuAction(CommonMenus.MANAGE_SETTINGS_THEMES, {
712+
commandId: CommonCommands.SELECT_ICON_THEME.id,
713+
order: '1'
708714
});
709715

710716
registry.registerSubmenu(CommonMenus.VIEW_APPEARANCE_SUBMENU, nls.localizeByDefault('Appearance'));

packages/core/src/browser/quick-input/quick-command-frontend-contribution.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ export class QuickCommandFrontendContribution implements CommandContribution, Ke
5959
commandId: quickCommand.id,
6060
label: nls.localizeByDefault('Command Palette...')
6161
});
62+
menus.registerMenuAction(CommonMenus.MANAGE_GENERAL, {
63+
commandId: quickCommand.id,
64+
label: nls.localizeByDefault('Command Palette...'),
65+
order: '0'
66+
});
6267
}
6368

6469
registerKeybindings(keybindings: KeybindingRegistry): void {

packages/core/src/common/menu/menu-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { isObject } from '../types';
1919

2020
export type MenuPath = string[];
2121
export const MAIN_MENU_BAR: MenuPath = ['menubar'];
22-
export const SETTINGS_MENU: MenuPath = ['settings_menu'];
22+
export const MANAGE_MENU: MenuPath = ['manage_menu'];
2323
export const ACCOUNTS_MENU: MenuPath = ['accounts_menu'];
2424
export const ACCOUNTS_SUBMENU = [...ACCOUNTS_MENU, '1_accounts_submenu'];
2525

packages/keymaps/src/browser/keymaps-frontend-contribution.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,10 @@ export class KeymapsFrontendContribution extends AbstractViewContribution<Keybin
9494
label: nls.localizeByDefault('Keyboard Shortcuts'),
9595
order: 'a20'
9696
});
97-
menus.registerMenuAction(CommonMenus.SETTINGS_OPEN, {
97+
menus.registerMenuAction(CommonMenus.MANAGE_SETTINGS, {
9898
commandId: KeymapsCommands.OPEN_KEYMAPS.id,
9999
label: nls.localizeByDefault('Keyboard Shortcuts'),
100-
order: 'a20'
100+
order: 'a30'
101101
});
102102
}
103103

packages/preferences/src/browser/preferences-contribution.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ export class PreferencesContribution extends AbstractViewContribution<Preference
146146
label: nls.localizeByDefault('Settings'),
147147
order: 'a10',
148148
});
149-
menus.registerMenuAction(CommonMenus.SETTINGS_OPEN, {
149+
menus.registerMenuAction(CommonMenus.MANAGE_SETTINGS, {
150150
commandId: CommonCommands.OPEN_PREFERENCES.id,
151151
label: nls.localizeByDefault('Settings'),
152152
order: 'a10',

packages/task/src/browser/task-frontend-contribution.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { ILogger, ContributionProvider, CommandContribution, Command, CommandReg
1919
import { QuickOpenTask, TaskTerminateQuickOpen, TaskRunningQuickOpen, TaskRestartRunningQuickOpen } from './quick-open-task';
2020
import {
2121
FrontendApplication, FrontendApplicationContribution, QuickAccessContribution,
22-
KeybindingRegistry, KeybindingContribution, StorageService, StatusBar, StatusBarAlignment
22+
KeybindingRegistry, KeybindingContribution, StorageService, StatusBar, StatusBarAlignment, CommonMenus
2323
} from '@theia/core/lib/browser';
2424
import { WidgetManager } from '@theia/core/lib/browser/widget-manager';
2525
import { TaskContribution, TaskResolverRegistry, TaskProviderRegistry } from './task-contribution';
@@ -380,6 +380,12 @@ export class TaskFrontendContribution implements CommandContribution, MenuContri
380380
commandId: TaskCommands.TASK_CONFIGURE.id,
381381
order: '0'
382382
});
383+
384+
menus.registerMenuAction(CommonMenus.MANAGE_SETTINGS, {
385+
commandId: TaskCommands.TASK_OPEN_USER.id,
386+
label: nls.localizeByDefault('User Tasks'),
387+
order: 'a40'
388+
});
383389
}
384390

385391
registerQuickAccessProvider(): void {

packages/vsx-registry/src/browser/vsx-extensions-contribution.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import { DateTime } from 'luxon';
1818
import { injectable, inject, postConstruct } from '@theia/core/shared/inversify';
1919
import debounce = require('@theia/core/shared/lodash.debounce');
20-
import { CommandRegistry } from '@theia/core/lib/common/command';
20+
import { Command, CommandRegistry } from '@theia/core/lib/common/command';
2121
import { AbstractViewContribution } from '@theia/core/lib/browser/shell/view-contribution';
2222
import { VSXExtensionsViewContainer } from './vsx-extensions-view-container';
2323
import { VSXExtensionsModel } from './vsx-extensions-model';
@@ -27,7 +27,7 @@ import { Color } from '@theia/core/lib/common/color';
2727
import { FrontendApplicationContribution, FrontendApplication } from '@theia/core/lib/browser/frontend-application';
2828
import { MenuModelRegistry, MessageService, nls } from '@theia/core/lib/common';
2929
import { FileDialogService, OpenFileDialogProps } from '@theia/filesystem/lib/browser';
30-
import { LabelProvider, PreferenceService, QuickPickItem, QuickInputService } from '@theia/core/lib/browser';
30+
import { LabelProvider, PreferenceService, QuickPickItem, QuickInputService, CommonMenus } from '@theia/core/lib/browser';
3131
import { VscodeCommands } from '@theia/plugin-ext-vscode/lib/browser/plugin-vscode-commands-contribution';
3232
import { VSXExtensionsContextMenu, VSXExtension } from './vsx-extension';
3333
import { ClipboardService } from '@theia/core/lib/browser/clipboard-service';
@@ -37,6 +37,12 @@ import { VSXExtensionsCommands } from './vsx-extension-commands';
3737
import { VSXExtensionRaw, OVSXApiFilter } from '@theia/ovsx-client';
3838
import { OVSXClientProvider } from '../common/ovsx-client-provider';
3939

40+
export namespace VSXCommands {
41+
export const TOGGLE_EXTENSIONS: Command = {
42+
id: 'vsxExtensions.toggle',
43+
};
44+
}
45+
4046
@injectable()
4147
export class VSXExtensionsContribution extends AbstractViewContribution<VSXExtensionsViewContainer> implements ColorContribution, FrontendApplicationContribution {
4248

@@ -59,7 +65,7 @@ export class VSXExtensionsContribution extends AbstractViewContribution<VSXExten
5965
area: 'left',
6066
rank: 500
6167
},
62-
toggleCommandId: 'vsxExtensions.toggle',
68+
toggleCommandId: VSXCommands.TOGGLE_EXTENSIONS.id,
6369
toggleKeybinding: 'ctrlcmd+shift+x'
6470
});
6571
}
@@ -117,6 +123,11 @@ export class VSXExtensionsContribution extends AbstractViewContribution<VSXExten
117123

118124
override registerMenus(menus: MenuModelRegistry): void {
119125
super.registerMenus(menus);
126+
menus.registerMenuAction(CommonMenus.MANAGE_SETTINGS, {
127+
commandId: VSXCommands.TOGGLE_EXTENSIONS.id,
128+
label: nls.localizeByDefault('Extensions'),
129+
order: 'a20'
130+
});
120131
menus.registerMenuAction(VSXExtensionsContextMenu.COPY, {
121132
commandId: VSXExtensionsCommands.COPY.id,
122133
label: nls.localizeByDefault('Copy'),

0 commit comments

Comments
 (0)