Skip to content

Commit ce2f1c2

Browse files
silvanocerzaAlberto Iannaccone
authored and
Alberto Iannaccone
committed
Updated MonitorWidget to use new monitor proxy
1 parent 7889f40 commit ce2f1c2

File tree

2 files changed

+31
-13
lines changed

2 files changed

+31
-13
lines changed

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

+13-3
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ import {
152152
OutputChannelRegistryMainImpl as TheiaOutputChannelRegistryMainImpl,
153153
OutputChannelRegistryMainImpl,
154154
} from './theia/plugin-ext/output-channel-registry-main';
155-
import { ExecutableService, ExecutableServicePath } from '../common/protocol';
155+
import { ExecutableService, ExecutableServicePath, MonitorManagerProxy, MonitorManagerProxyClient, MonitorManagerProxyPath } from '../common/protocol';
156156
import { MonacoTextModelService as TheiaMonacoTextModelService } from '@theia/monaco/lib/browser/monaco-text-model-service';
157157
import { MonacoTextModelService } from './theia/monaco/monaco-text-model-service';
158158
import { ResponseServiceImpl } from './response-service-impl';
@@ -267,7 +267,7 @@ import {
267267
IDEUpdaterDialogWidget,
268268
} from './dialogs/ide-updater/ide-updater-dialog';
269269
import { ElectronIpcConnectionProvider } from '@theia/core/lib/electron-browser/messaging/electron-ipc-connection-provider';
270-
import { MonitorManagerProxyClient } from '../common/monitor-manager-proxy';
270+
import { MonitorModel } from './monitor-model';
271271
import { MonitorManagerProxyClientImpl } from './monitor-manager-proxy-client-impl';
272272

273273
const ElementQueries = require('css-element-queries/src/ElementQueries');
@@ -402,13 +402,23 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
402402

403403
// Serial monitor
404404
bind(MonitorWidget).toSelf();
405+
bind(MonitorModel).toSelf().inSingletonScope();
405406
bindViewContribution(bind, MonitorViewContribution);
406407
bind(TabBarToolbarContribution).toService(MonitorViewContribution);
407408
bind(WidgetFactory).toDynamicValue((context) => ({
408409
id: MonitorWidget.ID,
409-
createWidget: () => context.container.get(MonitorWidget),
410+
createWidget: () => {
411+
return new MonitorWidget(
412+
context.container.get<MonitorModel>(MonitorModel),
413+
context.container.get<MonitorManagerProxyClient>(MonitorManagerProxyClient),
414+
context.container.get<BoardsServiceProvider>(BoardsServiceProvider),
415+
);
416+
}
410417
}));
411418

419+
bind(MonitorManagerProxy).toDynamicValue((context) =>
420+
WebSocketConnectionProvider.createProxy(context.container, MonitorManagerProxyPath)
421+
).inSingletonScope();
412422

413423
// Monitor manager proxy client to receive and delegate pluggable monitors
414424
// notifications from the backend

arduino-ide-extension/src/browser/serial/monitor/monitor-widget.tsx

+18-10
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,6 @@ export class MonitorWidget extends ReactWidget {
2828
);
2929
static readonly ID = 'serial-monitor';
3030

31-
@inject(MonitorModel)
32-
protected readonly monitorModel: MonitorModel;
33-
34-
@inject(MonitorManagerProxyClient)
35-
protected readonly monitorManagerProxy: MonitorManagerProxyClient;
36-
37-
@inject(BoardsServiceProvider)
38-
protected readonly boardsServiceProvider: BoardsServiceProvider;
39-
4031
protected widgetHeight: number;
4132

4233
/**
@@ -50,7 +41,16 @@ export class MonitorWidget extends ReactWidget {
5041
protected closing = false;
5142
protected readonly clearOutputEmitter = new Emitter<void>();
5243

53-
constructor() {
44+
constructor(
45+
@inject(MonitorModel)
46+
protected readonly monitorModel: MonitorModel,
47+
48+
@inject(MonitorManagerProxyClient)
49+
protected readonly monitorManagerProxy: MonitorManagerProxyClient,
50+
51+
@inject(BoardsServiceProvider)
52+
protected readonly boardsServiceProvider: BoardsServiceProvider
53+
) {
5454
super();
5555
this.id = MonitorWidget.ID;
5656
this.title.label = MonitorWidget.LABEL;
@@ -62,6 +62,13 @@ export class MonitorWidget extends ReactWidget {
6262
Disposable.create(() => this.monitorManagerProxy.disconnect())
6363
);
6464

65+
// Start monitor right away if there is already a board/port combination selected
66+
const { selectedBoard, selectedPort } =
67+
this.boardsServiceProvider.boardsConfig;
68+
if (selectedBoard && selectedBoard.fqbn && selectedPort) {
69+
this.monitorManagerProxy.startMonitor(selectedBoard, selectedPort);
70+
}
71+
6572
this.toDispose.push(
6673
this.boardsServiceProvider.onBoardsConfigChanged(
6774
async ({ selectedBoard, selectedPort }) => {
@@ -70,6 +77,7 @@ export class MonitorWidget extends ReactWidget {
7077
selectedBoard,
7178
selectedPort
7279
);
80+
this.update();
7381
}
7482
}
7583
)

0 commit comments

Comments
 (0)