Skip to content

Commit bb70562

Browse files
author
Akos Kitta
committed
made the editor focusing a bit more relaxed at startup.
Signed-off-by: Akos Kitta <kittaakos@typefox.io>
1 parent e36e429 commit bb70562

File tree

1 file changed

+48
-38
lines changed

1 file changed

+48
-38
lines changed

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

Lines changed: 48 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,50 @@
1-
import * as React from 'react';
2-
import { injectable, inject, postConstruct } from 'inversify';
3-
import URI from '@theia/core/lib/common/uri';
4-
import { MessageService } from '@theia/core/lib/common/message-service';
5-
import { CommandContribution, CommandRegistry } from '@theia/core/lib/common/command';
6-
import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
7-
import { BoardsService, BoardsServiceClient, CoreService, SketchesService, ToolOutputServiceClient, Port } from '../common/protocol';
8-
import { ArduinoCommands } from './arduino-commands';
9-
import { BoardsServiceClientImpl } from './boards/boards-service-client-impl';
10-
import { SelectionService, MenuContribution, MenuModelRegistry, MAIN_MENU_BAR } from '@theia/core';
11-
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
12-
import { EditorManager, EditorMainMenu } from '@theia/editor/lib/browser';
1+
import { MAIN_MENU_BAR, MenuContribution, MenuModelRegistry, SelectionService } from '@theia/core';
132
import {
14-
ContextMenuRenderer, StatusBar, StatusBarAlignment, FrontendApplicationContribution,
15-
FrontendApplication, KeybindingContribution, KeybindingRegistry, OpenerService
3+
ContextMenuRenderer,
4+
FrontendApplication, FrontendApplicationContribution,
5+
OpenerService, StatusBar, StatusBarAlignment
166
} from '@theia/core/lib/browser';
7+
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
8+
import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
9+
import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
10+
import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
11+
import { CommandContribution, CommandRegistry } from '@theia/core/lib/common/command';
12+
import { MessageService } from '@theia/core/lib/common/message-service';
13+
import URI from '@theia/core/lib/common/uri';
14+
import { EditorMainMenu, EditorManager } from '@theia/editor/lib/browser';
1715
import { FileDialogService } from '@theia/filesystem/lib/browser/file-dialog';
1816
import { FileSystem } from '@theia/filesystem/lib/common';
19-
import { CommonMenus } from '@theia/core/lib/browser/common-frontend-contribution';
17+
import { ProblemContribution } from '@theia/markers/lib/browser/problem/problem-contribution';
2018
import { MonacoMenus } from '@theia/monaco/lib/browser/monaco-menu';
21-
import { TerminalMenus } from '@theia/terminal/lib/browser/terminal-frontend-contribution';
22-
import { BoardsConfigDialog } from './boards/boards-config-dialog';
23-
import { BoardsToolBarItem } from './boards/boards-toolbar-item';
24-
import { BoardsConfig } from './boards/boards-config';
25-
import { MonitorConnection } from './monitor/monitor-connection';
26-
import { MonitorViewContribution } from './monitor/monitor-view-contribution';
27-
import { WorkspaceService } from './theia/workspace/workspace-service';
2819
import { FileNavigatorContribution } from '@theia/navigator/lib/browser/navigator-contribution';
29-
import { OutputContribution } from '@theia/output/lib/browser/output-contribution';
3020
import { OutlineViewContribution } from '@theia/outline-view/lib/browser/outline-view-contribution';
31-
import { ProblemContribution } from '@theia/markers/lib/browser/problem/problem-contribution';
21+
import { OutputContribution } from '@theia/output/lib/browser/output-contribution';
3222
import { ScmContribution } from '@theia/scm/lib/browser/scm-contribution';
3323
import { SearchInWorkspaceFrontendContribution } from '@theia/search-in-workspace/lib/browser/search-in-workspace-frontend-contribution';
34-
import { EditorMode } from './editor-mode';
35-
import { ColorContribution } from '@theia/core/lib/browser/color-application-contribution';
36-
import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
24+
import { TerminalMenus } from '@theia/terminal/lib/browser/terminal-frontend-contribution';
25+
import { inject, injectable, postConstruct } from 'inversify';
26+
import * as React from 'react';
27+
import { MainMenuManager } from '../common/main-menu-manager';
28+
import { BoardsService, BoardsServiceClient, CoreService, Port, SketchesService, ToolOutputServiceClient } from '../common/protocol';
3729
import { ArduinoDaemon } from '../common/protocol/arduino-daemon';
3830
import { ConfigService } from '../common/protocol/config-service';
39-
import { BoardsDataStore } from './boards/boards-data-store';
40-
import { MainMenuManager } from '../common/main-menu-manager';
4131
import { FileSystemExt } from '../common/protocol/filesystem-ext';
32+
import { ArduinoCommands } from './arduino-commands';
33+
import { BoardsConfig } from './boards/boards-config';
34+
import { BoardsConfigDialog } from './boards/boards-config-dialog';
35+
import { BoardsDataStore } from './boards/boards-data-store';
36+
import { BoardsServiceClientImpl } from './boards/boards-service-client-impl';
37+
import { BoardsToolBarItem } from './boards/boards-toolbar-item';
38+
import { EditorMode } from './editor-mode';
4239
import { ArduinoMenus } from './menu/arduino-menus';
40+
import { MonitorConnection } from './monitor/monitor-connection';
41+
import { MonitorViewContribution } from './monitor/monitor-view-contribution';
42+
import { WorkspaceService } from './theia/workspace/workspace-service';
43+
import { ArduinoToolbar } from './toolbar/arduino-toolbar';
4344

4445
@injectable()
4546
export class ArduinoFrontendContribution implements FrontendApplicationContribution,
46-
TabBarToolbarContribution, CommandContribution, MenuContribution, KeybindingContribution, ColorContribution {
47+
TabBarToolbarContribution, CommandContribution, MenuContribution, ColorContribution {
4748

4849
@inject(MessageService)
4950
protected readonly messageService: MessageService;
@@ -255,17 +256,26 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut
255256
});
256257
}
257258

258-
registerKeybindings(keybindings: KeybindingRegistry): void {
259-
keybindings.unregisterKeybinding('ctrlcmd+n'); // Unregister the keybinding for `New File`, will be used by `New Sketch`. (eclipse-theia/theia#8170)
259+
protected async openSketchFiles(uri: string): Promise<void> {
260+
try {
261+
const sketch = await this.sketchService.loadSketch(uri);
262+
const { mainFileUri, otherSketchFileUris, additionalFileUris } = sketch;
263+
for (const uri of [mainFileUri, ...otherSketchFileUris, ...additionalFileUris]) {
264+
await this.ensureOpened(uri);
265+
}
266+
await this.ensureOpened(mainFileUri, true);
267+
} catch (e) {
268+
console.error(e);
269+
const message = e instanceof Error ? e.message : JSON.stringify(e);
270+
this.messageService.error(message);
271+
}
260272
}
261273

262-
protected async openSketchFiles(uri: string): Promise<void> {
263-
const sketch = await this.sketchService.loadSketch(uri);
264-
await this.editorManager.open(new URI(sketch.mainFileUri));
265-
for (const uri of [...sketch.otherSketchFileUris, ...sketch.additionalFileUris]) {
266-
await this.editorManager.open(new URI(uri));
274+
protected async ensureOpened(uri: string, forceOpen: boolean = false): Promise<any> {
275+
const widget = this.editorManager.all.find(widget => widget.editor.uri.toString() === uri);
276+
if (!widget || forceOpen) {
277+
return this.editorManager.open(new URI(uri));
267278
}
268-
await this.editorManager.open(new URI(sketch.mainFileUri)); // Activates the editor of the main sketch file.
269279
}
270280

271281
registerColors(colors: ColorRegistry): void {

0 commit comments

Comments
 (0)