Skip to content

Commit 1b7b725

Browse files
author
Akos Kitta
committed
open boards config in own contribution.
Signed-off-by: Akos Kitta <[email protected]>
1 parent 0bcc92a commit 1b7b725

File tree

6 files changed

+48
-41
lines changed

6 files changed

+48
-41
lines changed

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

-14
This file was deleted.

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

+2-16
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ import {
5252
CurrentSketch,
5353
SketchesServiceClientImpl,
5454
} from '../common/protocol/sketches-service-client-impl';
55-
import { ArduinoCommands } from './arduino-commands';
5655
import { ArduinoPreferences } from './arduino-preferences';
57-
import { BoardsConfigDialog } from './boards/boards-config-dialog';
5856
import { BoardsServiceProvider } from './boards/boards-service-provider';
5957
import { BoardsToolBarItem } from './boards/boards-toolbar-item';
6058
import { OpenSketchFiles } from './contributions/open-sketch-files';
@@ -84,17 +82,14 @@ export class ArduinoFrontendContribution
8482
private readonly libraryService: LibraryService;
8583

8684
@inject(BoardsServiceProvider)
87-
private readonly boardsServiceClientImpl: BoardsServiceProvider;
85+
private readonly boardsServiceProvider: BoardsServiceProvider;
8886

8987
@inject(FileService)
9088
private readonly fileService: FileService;
9189

9290
@inject(SketchesService)
9391
private readonly sketchService: SketchesService;
9492

95-
@inject(BoardsConfigDialog)
96-
private readonly boardsConfigDialog: BoardsConfigDialog;
97-
9893
@inject(CommandRegistry)
9994
private readonly commandRegistry: CommandRegistry;
10095

@@ -234,7 +229,7 @@ export class ArduinoFrontendContribution
234229
<BoardsToolBarItem
235230
key="boardsToolbarItem"
236231
commands={this.commandRegistry}
237-
boardsServiceClient={this.boardsServiceClientImpl}
232+
boardsServiceProvider={this.boardsServiceProvider}
238233
/>
239234
),
240235
isVisible: (widget) =>
@@ -249,15 +244,6 @@ export class ArduinoFrontendContribution
249244
}
250245

251246
registerCommands(registry: CommandRegistry): void {
252-
registry.registerCommand(ArduinoCommands.OPEN_BOARDS_DIALOG, {
253-
execute: async (query?: string | undefined) => {
254-
const boardsConfig = await this.boardsConfigDialog.open(query);
255-
if (boardsConfig) {
256-
this.boardsServiceClientImpl.boardsConfig = boardsConfig;
257-
}
258-
},
259-
});
260-
261247
for (const command of [
262248
EditorCommands.SPLIT_EDITOR_DOWN,
263249
EditorCommands.SPLIT_EDITOR_LEFT,

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

+2
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,7 @@ import { OpenSketchFiles } from './contributions/open-sketch-files';
308308
import { InoLanguage } from './contributions/ino-language';
309309
import { SelectedBoard } from './contributions/selected-board';
310310
import { CheckForUpdates } from './contributions/check-for-updates';
311+
import { OpenBoardsConfig } from './contributions/open-boards-config';
311312

312313
MonacoThemingService.register({
313314
id: 'arduino-theme',
@@ -704,6 +705,7 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
704705
Contribution.configure(bind, InoLanguage);
705706
Contribution.configure(bind, SelectedBoard);
706707
Contribution.configure(bind, CheckForUpdates);
708+
Contribution.configure(bind, OpenBoardsConfig);
707709

708710
// Disabled the quick-pick customization from Theia when multiple formatters are available.
709711
// Use the default VS Code behavior, and pick the first one. In the IDE2, clang-format has `exclusive` selectors.

arduino-ide-extension/src/browser/boards/boards-service-provider.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import {
1717
import { BoardsConfig } from './boards-config';
1818
import { naturalCompare } from '../../common/utils';
1919
import { NotificationCenter } from '../notification-center';
20-
import { ArduinoCommands } from '../arduino-commands';
2120
import { StorageWrapper } from '../storage-wrapper';
2221
import { nls } from '@theia/core/lib/common';
2322
import { Deferred } from '@theia/core/lib/common/promise-util';
@@ -171,7 +170,7 @@ export class BoardsServiceProvider implements FrontendApplicationContribution {
171170
.then(async (answer) => {
172171
if (answer === yes) {
173172
this.commandService.executeCommand(
174-
ArduinoCommands.OPEN_BOARDS_DIALOG.id,
173+
'arduino-open-boards-dialog',
175174
selectedBoard.name
176175
);
177176
}

arduino-ide-extension/src/browser/boards/boards-toolbar-item.tsx

+11-9
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import { CommandRegistry } from '@theia/core/lib/common/command';
44
import { DisposableCollection } from '@theia/core/lib/common/disposable';
55
import { Port } from '../../common/protocol';
66
import { BoardsConfig } from './boards-config';
7-
import { ArduinoCommands } from '../arduino-commands';
87
import {
98
BoardsServiceProvider,
109
AvailableBoard,
1110
} from './boards-service-provider';
1211
import { nls } from '@theia/core/lib/common';
12+
import { OpenBoardsConfig } from '../contributions/open-boards-config';
1313

1414
export interface BoardsDropDownListCoords {
1515
readonly top: number;
@@ -119,7 +119,7 @@ export class BoardsToolBarItem extends React.Component<
119119
constructor(props: BoardsToolBarItem.Props) {
120120
super(props);
121121

122-
const { availableBoards } = props.boardsServiceClient;
122+
const { availableBoards } = props.boardsServiceProvider;
123123
this.state = {
124124
availableBoards,
125125
coords: 'hidden',
@@ -131,8 +131,8 @@ export class BoardsToolBarItem extends React.Component<
131131
}
132132

133133
override componentDidMount(): void {
134-
this.props.boardsServiceClient.onAvailableBoardsChanged((availableBoards) =>
135-
this.setState({ availableBoards })
134+
this.props.boardsServiceProvider.onAvailableBoardsChanged(
135+
(availableBoards) => this.setState({ availableBoards })
136136
);
137137
}
138138

@@ -163,7 +163,7 @@ export class BoardsToolBarItem extends React.Component<
163163

164164
override render(): React.ReactNode {
165165
const { coords, availableBoards } = this.state;
166-
const boardsConfig = this.props.boardsServiceClient.boardsConfig;
166+
const boardsConfig = this.props.boardsServiceProvider.boardsConfig;
167167
const title = BoardsConfig.Config.toString(boardsConfig, {
168168
default: nls.localize(
169169
'arduino/common/noBoardSelected',
@@ -202,12 +202,12 @@ export class BoardsToolBarItem extends React.Component<
202202
...board,
203203
onClick: () => {
204204
if (board.state === AvailableBoard.State.incomplete) {
205-
this.props.boardsServiceClient.boardsConfig = {
205+
this.props.boardsServiceProvider.boardsConfig = {
206206
selectedPort: board.port,
207207
};
208208
this.openDialog();
209209
} else {
210-
this.props.boardsServiceClient.boardsConfig = {
210+
this.props.boardsServiceProvider.boardsConfig = {
211211
selectedBoard: board,
212212
selectedPort: board.port,
213213
};
@@ -221,13 +221,15 @@ export class BoardsToolBarItem extends React.Component<
221221
}
222222

223223
protected openDialog = () => {
224-
this.props.commands.executeCommand(ArduinoCommands.OPEN_BOARDS_DIALOG.id);
224+
this.props.commands.executeCommand(
225+
OpenBoardsConfig.Commands.OPEN_DIALOG.id
226+
);
225227
this.setState({ coords: 'hidden' });
226228
};
227229
}
228230
export namespace BoardsToolBarItem {
229231
export interface Props {
230-
readonly boardsServiceClient: BoardsServiceProvider;
232+
readonly boardsServiceProvider: BoardsServiceProvider;
231233
readonly commands: CommandRegistry;
232234
}
233235

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { CommandRegistry } from '@theia/core';
2+
import { inject, injectable } from '@theia/core/shared/inversify';
3+
import { BoardsConfigDialog } from '../boards/boards-config-dialog';
4+
import { BoardsServiceProvider } from '../boards/boards-service-provider';
5+
import { Contribution, Command } from './contribution';
6+
7+
@injectable()
8+
export class OpenBoardsConfig extends Contribution {
9+
@inject(BoardsServiceProvider)
10+
private readonly boardsServiceProvider: BoardsServiceProvider;
11+
12+
@inject(BoardsConfigDialog)
13+
private readonly boardsConfigDialog: BoardsConfigDialog;
14+
15+
override registerCommands(registry: CommandRegistry): void {
16+
registry.registerCommand(OpenBoardsConfig.Commands.OPEN_DIALOG, {
17+
execute: async (query?: string | undefined) => {
18+
const boardsConfig = await this.boardsConfigDialog.open(query);
19+
if (boardsConfig) {
20+
this.boardsServiceProvider.boardsConfig = boardsConfig;
21+
}
22+
},
23+
});
24+
}
25+
}
26+
export namespace OpenBoardsConfig {
27+
export namespace Commands {
28+
export const OPEN_DIALOG: Command = {
29+
id: 'arduino-open-boards-dialog',
30+
};
31+
}
32+
}

0 commit comments

Comments
 (0)