Skip to content

Commit 476e658

Browse files
author
Akos Kitta
committed
Cleaned up the menu contributions.
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
1 parent a96ed31 commit 476e658

10 files changed

+3246
-949
lines changed

arduino-ide-extension/src/browser/arduino-file-menu.ts

Lines changed: 0 additions & 25 deletions
This file was deleted.

arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { QuickPickService } from '@theia/core/lib/common/quick-pick-service';
1414
import { BoardsListWidgetFrontendContribution } from './boards/boards-widget-frontend-contribution';
1515
import { BoardsServiceClientImpl } from './boards/boards-service-client-impl';
1616
import { WorkspaceRootUriAwareCommandHandler, WorkspaceCommands } from '@theia/workspace/lib/browser/workspace-commands';
17-
import { SelectionService, MenuContribution, MenuModelRegistry, MAIN_MENU_BAR } from '@theia/core';
17+
import { SelectionService, MenuContribution, MenuModelRegistry, MAIN_MENU_BAR, MenuPath } from '@theia/core';
1818
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
1919
import { EditorManager, EditorMainMenu } from '@theia/editor/lib/browser';
2020
import {
@@ -28,7 +28,6 @@ import {
2828
} from '@theia/core/lib/browser';
2929
import { OpenFileDialogProps, FileDialogService } from '@theia/filesystem/lib/browser/file-dialog';
3030
import { FileSystem, FileStat } from '@theia/filesystem/lib/common';
31-
import { ArduinoToolbarContextMenu } from './arduino-file-menu';
3231
import { Sketch, SketchesService } from '../common/protocol/sketches-service';
3332
import { WindowService } from '@theia/core/lib/browser/window/window-service';
3433
import { CommonCommands, CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
@@ -51,6 +50,13 @@ export namespace ArduinoMenus {
5150
export const TOOLS = [...MAIN_MENU_BAR, '4_tools'];
5251
}
5352

53+
export namespace ArduinoToolbarContextMenu {
54+
export const OPEN_SKETCH_PATH: MenuPath = ['arduino-open-sketch-context-menu'];
55+
export const OPEN_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '1_open'];
56+
export const WS_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '2_sketches'];
57+
export const EXAMPLE_SKETCHES_GROUP: MenuPath = [...OPEN_SKETCH_PATH, '3_examples'];
58+
}
59+
5460
export namespace ArduinoAdvancedMode {
5561
export const LS_ID = 'arduino-advanced-mode';
5662
export const TOGGLED: boolean = (() => {
@@ -381,7 +387,11 @@ export class ArduinoFrontendContribution implements TabBarToolbarContribution, C
381387
registry.registerMenuAction(CommonMenus.HELP, {
382388
commandId: ArduinoCommands.TOGGLE_ADVANCED_MODE.id,
383389
label: 'Advanced Mode'
384-
})
390+
});
391+
392+
registry.registerMenuAction([...CommonMenus.FILE, '0_new_sketch'], {
393+
commandId: ArduinoCommands.NEW_SKETCH.id
394+
});
385395
}
386396

387397
protected getMenuId(menuPath: string[]): string {

arduino-ide-extension/src/browser/arduino-frontend-module.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { WorkspaceService } from '@theia/workspace/lib/browser/workspace-service
2828
import { ArduinoWorkspaceService } from './arduino-workspace-service';
2929
import { ThemeService } from '@theia/core/lib/browser/theming';
3030
import { ArduinoTheme } from './arduino-theme';
31-
import { ArduinoToolbarMenuContribution } from './arduino-file-menu';
3231
import { MenuContribution } from '@theia/core';
3332
import { OutlineViewContribution } from '@theia/outline-view/lib/browser/outline-view-contribution';
3433
import { SilentOutlineViewContribution } from './customization/silent-outline-contribution';
@@ -80,7 +79,6 @@ export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Un
8079
bind(MenuContribution).toService(ArduinoFrontendContribution);
8180
bind(TabBarToolbarContribution).toService(ArduinoFrontendContribution);
8281
bind(FrontendApplicationContribution).toService(ArduinoFrontendContribution);
83-
bind(MenuContribution).to(ArduinoToolbarMenuContribution).inSingletonScope();
8482

8583
bind(ArduinoToolbarContribution).toSelf().inSingletonScope();
8684
bind(FrontendApplicationContribution).toService(ArduinoToolbarContribution);

arduino-ide-extension/src/browser/arduino-theme.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ export class ArduinoTheme {
1919
deactivate() {
2020
ARDUINO_CSS.unuse();
2121
}
22-
}
22+
};
2323

2424
static readonly themes: Theme[] = [
2525
ArduinoTheme.arduino
26-
]
27-
}
26+
];
27+
28+
}

arduino-ide-extension/src/browser/customization/arduino-common-frontend-contribution.ts

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import { injectable } from "inversify";
2-
import { BrowserMenuBarContribution } from "@theia/core/lib/browser/menu/browser-menu-plugin";
3-
import { FrontendApplication } from "@theia/core/lib/browser";
1+
import { injectable } from 'inversify';
2+
import { FrontendApplication } from '@theia/core/lib/browser';
3+
import { BrowserMenuBarContribution } from '@theia/core/lib/browser/menu/browser-menu-plugin';
44

55
@injectable()
66
export class ArduinoMenuContribution extends BrowserMenuBarContribution {
7+
78
onStart(app: FrontendApplication): void {
8-
const menu = this.factory.createMenuBar();
9-
app.shell.addWidget(menu, { area: 'top' });
9+
const menu = this.factory.createMenuBar();
10+
app.shell.addWidget(menu, { area: 'top' });
1011
}
11-
}
12+
13+
}

arduino-ide-extension/src/browser/menu/browser-arduino-menu-module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ import '../../../src/browser/style/browser-menu.css'
77
export default new ContainerModule((bind: interfaces.Bind, unbind: interfaces.Unbind) => {
88
unbind(BrowserMenuBarContribution);
99
bind(BrowserMenuBarContribution).to(ArduinoMenuContribution).inSingletonScope();
10-
})
10+
});
Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,12 @@
1-
import * as electron from 'electron';
2-
import { injectable, inject } from 'inversify';
3-
import { isOSX } from '@theia/core/lib/common/os';
4-
import { Disposable } from '@theia/core/lib/common/disposable';
5-
import { FrontendApplication } from '@theia/core/lib/browser/frontend-application';
1+
import { injectable } from 'inversify';
62
import { ElectronMenuContribution } from '@theia/core/lib/electron-browser/menu/electron-menu-contribution';
7-
import { FrontendApplicationStateService, FrontendApplicationState } from '@theia/core/lib/browser/frontend-application-state';
83

9-
// Code was copied from https://github.com/eclipse-theia/theia/pull/5140/commits/be873411eff1f48822a65261305bbe3549ac903d
104
@injectable()
115
export class ElectronArduinoMenuContribution extends ElectronMenuContribution {
126

13-
@inject(FrontendApplicationStateService)
14-
protected readonly stateService: FrontendApplicationStateService;
15-
16-
onStart(app: FrontendApplication): void {
17-
this.setMenu();
18-
if (isOSX) {
19-
// OSX: Recreate the menus when changing windows.
20-
// OSX only has one menu bar for all windows, so we need to swap
21-
// between them as the user switches windows.
22-
electron.remote.getCurrentWindow().on('focus', () => this.setMenu());
23-
}
24-
// Make sure the application menu is complete, once the frontend application is ready.
25-
// https://github.com/theia-ide/theia/issues/5100
26-
let onStateChange: Disposable | undefined = undefined;
27-
const stateServiceListener = (state: FrontendApplicationState) => {
28-
if (state === 'ready') {
29-
this.setMenu();
30-
}
31-
if (state === 'closing_window') {
32-
if (!!onStateChange) {
33-
onStateChange.dispose();
34-
}
35-
}
36-
};
37-
onStateChange = this.stateService.onStateChanged(stateServiceListener);
38-
}
39-
40-
private setMenu(menu: electron.Menu = this.factory.createMenuBar(), electronWindow: electron.BrowserWindow = electron.remote.getCurrentWindow()): void {
41-
if (isOSX) {
42-
electron.remote.Menu.setApplicationMenu(menu);
43-
} else {
44-
// Unix/Windows: Set the per-window menus
45-
electronWindow.setMenu(menu);
46-
}
7+
protected hideTopPanel(): void {
8+
// NOOP
9+
// We reuse the `div` for the Arduino toolbar.
4710
}
4811

4912
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { ContainerModule } from "inversify";
2-
import { ElectronMenuContribution } from "@theia/core/lib/electron-browser/menu/electron-menu-contribution"
3-
import { ElectronArduinoMenuContribution } from "./electron-arduino-menu-contribution";
1+
import { ContainerModule } from 'inversify';
2+
import { ElectronMenuContribution } from '@theia/core/lib/electron-browser/menu/electron-menu-contribution'
3+
import { ElectronArduinoMenuContribution } from './electron-arduino-menu-contribution';
44

55
export default new ContainerModule((bind, unbind, isBound, rebind) => {
66
bind(ElectronArduinoMenuContribution).toSelf().inSingletonScope();
77
rebind(ElectronMenuContribution).to(ElectronArduinoMenuContribution);
8-
})
8+
});

0 commit comments

Comments
 (0)