diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index 3d6cc06c..9389324e 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -99,7 +99,7 @@ export class ArduinoFrontendContribution extends DefaultFrontendApplicationContr isVisible: widget => this.isArduinoToolbar(widget), isEnabled: widget => this.isArduinoToolbar(widget), execute: async () => { - const widget = this.editorManager.currentEditor; + const widget = this.getCurrentWidget(); if (widget instanceof EditorWidget) { await widget.saveable.save(); } @@ -120,7 +120,7 @@ export class ArduinoFrontendContribution extends DefaultFrontendApplicationContr isVisible: widget => this.isArduinoToolbar(widget), isEnabled: widget => this.isArduinoToolbar(widget), execute: async () => { - const widget = this.editorManager.currentEditor; + const widget = this.getCurrentWidget(); if (widget instanceof EditorWidget) { await widget.saveable.save(); } @@ -148,7 +148,7 @@ export class ArduinoFrontendContribution extends DefaultFrontendApplicationContr await this.sketchFactory.createNewSketch(uri); } catch (e) { await this.messageService.error(e.toString()); - } + } } })); registry.registerCommand(ArduinoCommands.REFRESH_BOARDS, { @@ -157,13 +157,24 @@ export class ArduinoFrontendContribution extends DefaultFrontendApplicationContr }) } + protected getCurrentWidget(): EditorWidget | undefined { + let widget = this.editorManager.currentEditor; + if (!widget) { + const visibleWidgets = this.editorManager.all.filter(w => w.isVisible); + if (visibleWidgets.length > 0) { + widget = visibleWidgets[0]; + } + } + return widget; + } + private async onNoBoardsInstalled() { const action = await this.messageService.info("You have no boards installed. Use the boards mangager to install one.", "Open Boards Manager"); if (!action) { return; } - this.boardsListWidgetFrontendContribution.openView({reveal: true}); + this.boardsListWidgetFrontendContribution.openView({ reveal: true }); } private async onUnknownBoard() { @@ -173,7 +184,7 @@ export class ArduinoFrontendContribution extends DefaultFrontendApplicationContr return; } - this.boardsListWidgetFrontendContribution.openView({reveal: true}); + this.boardsListWidgetFrontendContribution.openView({ reveal: true }); } private isArduinoToolbar(maybeToolbarWidget: any): boolean { diff --git a/arduino-ide-extension/src/browser/components/connected-boards.tsx b/arduino-ide-extension/src/browser/components/connected-boards.tsx index 163e2e72..e90163e4 100644 --- a/arduino-ide-extension/src/browser/components/connected-boards.tsx +++ b/arduino-ide-extension/src/browser/components/connected-boards.tsx @@ -3,6 +3,7 @@ import { BoardsService, Board } from '../../common/protocol/boards-service'; // import { SelectBoardDialog } from './select-board-dialog'; import { QuickPickService } from '@theia/core/lib/common/quick-pick-service'; import { BoardsNotificationService } from '../boards-notification-service'; +import { ARDUINO_TOOLBAR_ITEM_CLASS } from '../toolbar/arduino-toolbar'; export class ConnectedBoards extends React.Component { static TOOLBAR_ID: 'connected-boards-toolbar'; @@ -28,7 +29,7 @@ export class ConnectedBoards extends React.Component{label} ]; } - return
+ return