diff --git a/arduino-ide-extension/src/browser/arduino-commands.ts b/arduino-ide-extension/src/browser/arduino-commands.ts index ff22d3f8..665c9fea 100644 --- a/arduino-ide-extension/src/browser/arduino-commands.ts +++ b/arduino-ide-extension/src/browser/arduino-commands.ts @@ -20,11 +20,4 @@ export namespace ArduinoCommands { id: 'arduino-open-boards-dialog' }; - export const TOGGLE_ADVANCED_MODE: Command = { - id: 'arduino-toggle-advanced-mode' - }; - export const TOGGLE_ADVANCED_MODE_TOOLBAR: Command = { - id: 'arduino-toggle-advanced-mode-toolbar' - }; - } diff --git a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx index 2aa68970..1e63e4bc 100644 --- a/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx +++ b/arduino-ide-extension/src/browser/arduino-frontend-contribution.tsx @@ -269,12 +269,6 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut command: MonitorViewContribution.TOGGLE_SERIAL_MONITOR_TOOLBAR, tooltip: 'Serial Monitor' }); - registry.registerItem({ - id: ArduinoCommands.TOGGLE_ADVANCED_MODE.id, - command: ArduinoCommands.TOGGLE_ADVANCED_MODE_TOOLBAR.id, - tooltip: this.editorMode.proMode ? 'Switch to Classic Mode' : 'Switch to Advanced Mode', - text: this.editorMode.proMode ? '$(toggle-on)' : '$(toggle-off)' - }); } registerCommands(registry: CommandRegistry): void { @@ -295,29 +289,19 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut } } }); - registry.registerCommand(ArduinoCommands.TOGGLE_ADVANCED_MODE, { - isToggled: () => this.editorMode.proMode, - execute: () => this.editorMode.toggleProMode() - }); - registry.registerCommand(ArduinoCommands.TOGGLE_ADVANCED_MODE_TOOLBAR, { - isVisible: widget => ArduinoToolbar.is(widget) && widget.side === 'right', - isToggled: () => this.editorMode.proMode, - execute: () => this.editorMode.toggleProMode() - }); } registerMenus(registry: MenuModelRegistry) { - if (!this.editorMode.proMode) { - const menuId = (menuPath: string[]): string => { - const index = menuPath.length - 1; - const menuId = menuPath[index]; - return menuId; - } - registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(MonacoMenus.SELECTION)); - registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(EditorMainMenu.GO)); - registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(TerminalMenus.TERMINAL)); - registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(CommonMenus.VIEW)); + const menuId = (menuPath: string[]): string => { + const index = menuPath.length - 1; + const menuId = menuPath[index]; + return menuId; } + registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(MonacoMenus.SELECTION)); + registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(EditorMainMenu.GO)); + registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(TerminalMenus.TERMINAL)); + registry.getMenu(MAIN_MENU_BAR).removeNode(menuId(CommonMenus.VIEW)); + registry.registerSubmenu(ArduinoMenus.SKETCH, 'Sketch'); registry.registerSubmenu(ArduinoMenus.TOOLS, 'Tools'); registry.registerMenuAction(ArduinoMenus.SKETCH__MAIN_GROUP, { @@ -325,10 +309,6 @@ export class ArduinoFrontendContribution implements FrontendApplicationContribut label: 'Optimize for Debugging', order: '4' }); - registry.registerMenuAction(ArduinoMenus.HELP__CONTROL_GROUP, { - commandId: ArduinoCommands.TOGGLE_ADVANCED_MODE.id, - label: 'Advanced Mode' - }); } protected async openSketchFiles(uri: URI): Promise { diff --git a/arduino-ide-extension/src/browser/editor-mode.ts b/arduino-ide-extension/src/browser/editor-mode.ts index bd3df946..28ee6342 100644 --- a/arduino-ide-extension/src/browser/editor-mode.ts +++ b/arduino-ide-extension/src/browser/editor-mode.ts @@ -1,10 +1,6 @@ import { injectable, inject } from 'inversify'; -import { ApplicationShell, FrontendApplicationContribution, FrontendApplication, Widget } from '@theia/core/lib/browser'; -import { EditorWidget } from '@theia/editor/lib/browser'; -import { OutputWidget } from '@theia/output/lib/browser/output-widget'; +import { FrontendApplicationContribution, FrontendApplication } from '@theia/core/lib/browser'; import { MainMenuManager } from '../common/main-menu-manager'; -import { BoardsListWidget } from './boards/boards-list-widget'; -import { LibraryListWidget } from './library/library-list-widget'; @injectable() export class EditorMode implements FrontendApplicationContribution { @@ -16,41 +12,6 @@ export class EditorMode implements FrontendApplicationContribution { onStart(app: FrontendApplication): void { this.app = app; - if (this.proMode) { - // We use this CSS class on the body to modify the visibility of the close button for the editors and views. - document.body.classList.add(EditorMode.PRO_MODE_KEY); - } - } - - get proMode(): boolean { - const value = window.localStorage.getItem(EditorMode.PRO_MODE_KEY); - return value === 'true'; - } - - async toggleProMode(): Promise { - const oldState = this.proMode; - const inAdvancedMode = !oldState; - window.localStorage.setItem(EditorMode.PRO_MODE_KEY, String(inAdvancedMode)); - if (!inAdvancedMode) { - const { shell } = this.app; - // Close all widgets that are neither editor nor `Output` / `Boards Manager` / `Library Manager`. - for (const area of ['left', 'right', 'bottom', 'main'] as Array) { - shell.closeTabs(area, title => !this.isInSimpleMode(title.owner)); - } - } - // `storeLayout` has a sync API but the implementation is async, we store the layout manually before we reload the page. - // See: https://github.com/eclipse-theia/theia/issues/6579 - // XXX: hack instead of injecting the `ArduinoShellLayoutRestorer` we have to retrieve it from the application to avoid DI cycle. - const layoutRestorer = (this.app as any).layoutRestorer as { storeLayoutAsync(app: FrontendApplication): Promise }; - await layoutRestorer.storeLayoutAsync(this.app); - window.location.reload(true); - } - - protected isInSimpleMode(widget: Widget): boolean { - return widget instanceof EditorWidget - || widget instanceof OutputWidget - || widget instanceof BoardsListWidget - || widget instanceof LibraryListWidget; } get compileForDebug(): boolean { @@ -68,6 +29,5 @@ export class EditorMode implements FrontendApplicationContribution { } export namespace EditorMode { - export const PRO_MODE_KEY = 'arduino-advanced-mode'; export const COMPILE_FOR_DEBUG_KEY = 'arduino-compile-for-debug'; } diff --git a/arduino-ide-extension/src/browser/theia/core/application-shell.ts b/arduino-ide-extension/src/browser/theia/core/application-shell.ts index dc4a89fc..e11917b6 100644 --- a/arduino-ide-extension/src/browser/theia/core/application-shell.ts +++ b/arduino-ide-extension/src/browser/theia/core/application-shell.ts @@ -7,16 +7,12 @@ import { OutputWidget } from '@theia/output/lib/browser/output-widget'; import { ConnectionStatusService, ConnectionStatus } from '@theia/core/lib/browser/connection-status-service'; import { ApplicationShell as TheiaApplicationShell, Widget } from '@theia/core/lib/browser'; import { Sketch } from '../../../common/protocol'; -import { EditorMode } from '../../editor-mode'; import { SaveAsSketch } from '../../contributions/save-as-sketch'; import { SketchesServiceClientImpl } from '../../../common/protocol/sketches-service-client-impl'; @injectable() export class ApplicationShell extends TheiaApplicationShell { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - @inject(CommandService) protected readonly commandService: CommandService; @@ -34,7 +30,7 @@ export class ApplicationShell extends TheiaApplicationShell { if (widget instanceof OutputWidget) { widget.title.closable = false; // TODO: https://arduino.slack.com/archives/C01698YT7S4/p1598011990133700 } - if (!this.editorMode.proMode && widget instanceof EditorWidget) { + if (widget instanceof EditorWidget) { // Make the editor un-closeable asynchronously. this.sketchesServiceClient.currentSketch().then(sketch => { if (sketch) { diff --git a/arduino-ide-extension/src/browser/theia/markers/problem-contribution.ts b/arduino-ide-extension/src/browser/theia/markers/problem-contribution.ts index 94186640..90647eca 100644 --- a/arduino-ide-extension/src/browser/theia/markers/problem-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/markers/problem-contribution.ts @@ -1,26 +1,18 @@ -import { inject, injectable } from 'inversify'; +import { injectable } from 'inversify'; import { KeybindingRegistry } from '@theia/core/lib/browser'; import { ProblemStat } from '@theia/markers/lib/browser/problem/problem-manager'; import { FrontendApplication } from '@theia/core/lib/browser/frontend-application'; import { ProblemContribution as TheiaProblemContribution } from '@theia/markers/lib/browser/problem/problem-contribution'; -import { EditorMode } from '../../editor-mode'; @injectable() export class ProblemContribution extends TheiaProblemContribution { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - async initializeLayout(app: FrontendApplication): Promise { - if (this.editorMode.proMode) { - return super.initializeLayout(app); - } + // NOOP } protected setStatusBarElement(problemStat: ProblemStat): void { - if (this.editorMode.proMode) { - super.setStatusBarElement(problemStat); - } + // NOOP } registerKeybindings(keybindings: KeybindingRegistry): void { diff --git a/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts b/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts index 58226058..169b2500 100644 --- a/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/navigator/navigator-contribution.ts @@ -1,20 +1,14 @@ -import { injectable, inject } from 'inversify'; +import { injectable } from 'inversify'; import { WorkspaceCommands } from '@theia/workspace/lib/browser/workspace-commands'; import { KeybindingRegistry } from '@theia/core/lib/browser/keybinding'; import { FrontendApplication } from '@theia/core/lib/browser/frontend-application'; import { FileNavigatorContribution as TheiaFileNavigatorContribution } from '@theia/navigator/lib/browser/navigator-contribution'; -import { EditorMode } from '../../editor-mode'; @injectable() export class FileNavigatorContribution extends TheiaFileNavigatorContribution { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - async initializeLayout(app: FrontendApplication): Promise { - if (this.editorMode.proMode) { - return super.initializeLayout(app); - } + // NOOP } registerKeybindings(registry: KeybindingRegistry): void { diff --git a/arduino-ide-extension/src/browser/theia/outline/outline-contribution.ts b/arduino-ide-extension/src/browser/theia/outline/outline-contribution.ts index a94597ba..a09c5b5f 100644 --- a/arduino-ide-extension/src/browser/theia/outline/outline-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/outline/outline-contribution.ts @@ -1,14 +1,10 @@ -import { injectable, inject } from 'inversify'; +import { injectable } from 'inversify'; import { FrontendApplication } from '@theia/core/lib/browser/frontend-application'; import { OutlineViewContribution as TheiaOutlineViewContribution } from '@theia/outline-view/lib/browser/outline-view-contribution'; -import { EditorMode } from '../../editor-mode'; @injectable() export class OutlineViewContribution extends TheiaOutlineViewContribution { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - constructor() { super(); this.options.defaultWidgetOptions = { @@ -18,9 +14,7 @@ export class OutlineViewContribution extends TheiaOutlineViewContribution { } async initializeLayout(app: FrontendApplication): Promise { - if (this.editorMode.proMode) { - return super.initializeLayout(app); - } + // NOOP } } diff --git a/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts b/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts index 30758d16..60ddcf31 100644 --- a/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/scm/scm-contribution.ts @@ -1,24 +1,16 @@ -import { inject, injectable } from 'inversify'; +import { injectable } from 'inversify'; import { ScmContribution as TheiaScmContribution } from '@theia/scm/lib/browser/scm-contribution'; import { StatusBarEntry } from '@theia/core/lib/browser/status-bar/status-bar'; -import { EditorMode } from '../../editor-mode'; @injectable() export class ScmContribution extends TheiaScmContribution { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - async initializeLayout(): Promise { - if (this.editorMode.proMode) { - return super.initializeLayout(); - } + // NOOP } protected setStatusBarEntry(id: string, entry: StatusBarEntry): void { - if (this.editorMode.proMode) { - super.setStatusBarEntry(id, entry); - } + // NOOP } } diff --git a/arduino-ide-extension/src/browser/theia/search-in-workspace/search-in-workspace-frontend-contribution.ts b/arduino-ide-extension/src/browser/theia/search-in-workspace/search-in-workspace-frontend-contribution.ts index e8f0cea7..76251281 100644 --- a/arduino-ide-extension/src/browser/theia/search-in-workspace/search-in-workspace-frontend-contribution.ts +++ b/arduino-ide-extension/src/browser/theia/search-in-workspace/search-in-workspace-frontend-contribution.ts @@ -1,20 +1,14 @@ -import { inject, injectable } from 'inversify'; +import { injectable } from 'inversify'; import { MenuModelRegistry } from '@theia/core/lib/common/menu'; import { KeybindingRegistry } from '@theia/core/lib/browser/keybinding'; import { FrontendApplication } from '@theia/core/lib/browser/frontend-application'; import { SearchInWorkspaceFrontendContribution as TheiaSearchInWorkspaceFrontendContribution, SearchInWorkspaceCommands } from '@theia/search-in-workspace/lib/browser/search-in-workspace-frontend-contribution'; -import { EditorMode } from '../../editor-mode'; @injectable() export class SearchInWorkspaceFrontendContribution extends TheiaSearchInWorkspaceFrontendContribution { - @inject(EditorMode) - protected readonly editorMode: EditorMode; - async initializeLayout(app: FrontendApplication): Promise { - if (this.editorMode.proMode) { - return super.initializeLayout(app); - } + // NOOP } registerMenus(registry: MenuModelRegistry): void {