From 5a915bc5e530577b378b02212bc60d0caf1d44a8 Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Fri, 5 Aug 2022 10:15:06 -0400 Subject: [PATCH] workspace: cleanup multiroot handling The commit cleans up leftover code that handled the enablement of multi-root workspace support. The commit mainly removes the `workspace.supportMultiRootWorkspace` preference and handling of the preference since it is no longer needed. Signed-off-by: vince-fugnitto --- CHANGELOG.md | 7 +++ packages/core/i18n/nls.cs.json | 1 - packages/core/i18n/nls.de.json | 1 - packages/core/i18n/nls.es.json | 1 - packages/core/i18n/nls.fr.json | 1 - packages/core/i18n/nls.hu.json | 1 - packages/core/i18n/nls.it.json | 1 - packages/core/i18n/nls.ja.json | 1 - packages/core/i18n/nls.json | 1 - packages/core/i18n/nls.pl.json | 1 - packages/core/i18n/nls.pt-br.json | 1 - packages/core/i18n/nls.pt-pt.json | 1 - packages/core/i18n/nls.ru.json | 1 - packages/core/i18n/nls.zh-cn.json | 1 - .../src/browser/navigator-contribution.ts | 34 +++-------- .../src/browser/quick-open-workspace.ts | 8 +-- .../src/browser/workspace-commands.ts | 6 +- .../workspace-frontend-contribution.spec.ts | 15 +---- .../workspace-frontend-contribution.ts | 61 +++++++------------ .../src/browser/workspace-preferences.ts | 6 -- .../src/browser/workspace-service.ts | 13 ---- 21 files changed, 45 insertions(+), 118 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d148f36b74e70..1bc030045edc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - [Previous Changelogs](https://github.com/eclipse-theia/theia/tree/master/doc/changelogs/) +## v1.30.0 - Unreleased + +[Breaking Changes:](#breaking_changes_1.30.0) + +- [workspace] removed `workspace.supportMultiRootWorkspace` preference [#11538](https://github.com/eclipse-theia/theia/pull/11538) +- [workspace] removed method `isMultiRootWorkspaceEnabled` from `WorkspaceService` [#11538](https://github.com/eclipse-theia/theia/pull/11538) + ## v1.29.0 - 8/25/2022 - [application-manager] added the `applicationName` in the frontend generator [#11575](https://github.com/eclipse-theia/theia/pull/11575) diff --git a/packages/core/i18n/nls.cs.json b/packages/core/i18n/nls.cs.json index e7d02a75c4d62..45f45120314fc 100644 --- a/packages/core/i18n/nls.cs.json +++ b/packages/core/i18n/nls.cs.json @@ -493,7 +493,6 @@ "preserveWindow": "Povolit otevírání pracovních ploch v aktuálním okně.", "removeFolder": "Jste si jisti, že chcete z pracovního prostoru odebrat následující složku?", "removeFolders": "Jste si jisti, že chcete z pracovního prostoru odebrat následující složky?", - "supportMultiRootWorkspace": "Řídí, zda je povolena podpora více kořenových pracovních prostorů.", "trashTitle": "Přesun {0} do koše", "trustEmptyWindow": "Řídí, zda má být prázdný pracovní prostor ve výchozím nastavení důvěryhodný.", "trustEnabled": "Řídí, zda je povolena důvěryhodnost pracovního prostoru. Pokud je zakázáno, jsou důvěryhodné všechny pracovní prostory.", diff --git a/packages/core/i18n/nls.de.json b/packages/core/i18n/nls.de.json index 3da35f17eb0e0..1969b8fdb043f 100644 --- a/packages/core/i18n/nls.de.json +++ b/packages/core/i18n/nls.de.json @@ -493,7 +493,6 @@ "preserveWindow": "Aktivieren Sie das Öffnen von Arbeitsbereichen im aktuellen Fenster.", "removeFolder": "Sind Sie sicher, dass Sie den folgenden Ordner aus dem Arbeitsbereich entfernen möchten?", "removeFolders": "Sind Sie sicher, dass Sie die folgenden Ordner aus dem Arbeitsbereich entfernen möchten?", - "supportMultiRootWorkspace": "Steuert, ob die Unterstützung von Multi-Root-Arbeitsbereichen aktiviert ist.", "trashTitle": "Verschiebe {0} in den Papierkorb", "trustEmptyWindow": "Steuert, ob dem leeren Arbeitsbereich standardmäßig vertraut wird oder nicht.", "trustEnabled": "Steuert, ob das Vertrauen in Arbeitsbereiche aktiviert ist oder nicht. Wenn deaktiviert, wird allen Arbeitsbereichen vertraut.", diff --git a/packages/core/i18n/nls.es.json b/packages/core/i18n/nls.es.json index 13b67fe7a9689..f3ef7f2fdbc85 100644 --- a/packages/core/i18n/nls.es.json +++ b/packages/core/i18n/nls.es.json @@ -493,7 +493,6 @@ "preserveWindow": "Habilitar la apertura de espacios de trabajo en la ventana actual.", "removeFolder": "¿Está seguro de que quiere eliminar la siguiente carpeta del espacio de trabajo?", "removeFolders": "¿Está seguro de que quiere eliminar las siguientes carpetas del espacio de trabajo?", - "supportMultiRootWorkspace": "Controla si el soporte de espacios de trabajo multi-root está habilitado.", "trashTitle": "Mover {0} a la Papelera", "trustEmptyWindow": "Controla si el espacio de trabajo vacío es de confianza o no por defecto.", "trustEnabled": "Controla si la confianza del espacio de trabajo está activada o no. Si se desactiva, todos los espacios de trabajo son de confianza.", diff --git a/packages/core/i18n/nls.fr.json b/packages/core/i18n/nls.fr.json index f4aa462ec63e2..c8244e5df6ff9 100644 --- a/packages/core/i18n/nls.fr.json +++ b/packages/core/i18n/nls.fr.json @@ -493,7 +493,6 @@ "preserveWindow": "Permet d'ouvrir les espaces de travail dans la fenêtre actuelle.", "removeFolder": "Êtes-vous sûr de vouloir supprimer le dossier suivant de l'espace de travail ?", "removeFolders": "Êtes-vous sûr de vouloir supprimer les dossiers suivants de l'espace de travail ?", - "supportMultiRootWorkspace": "Contrôle si le support de l'espace de travail multi-root est activé.", "trashTitle": "Déplacer {0} vers la corbeille", "trustEmptyWindow": "Contrôle si l'espace de travail vide est fiable ou non par défaut.", "trustEnabled": "Contrôle si la confiance de l'espace de travail est activée ou non. S'il est désactivé, tous les espaces de travail sont fiables.", diff --git a/packages/core/i18n/nls.hu.json b/packages/core/i18n/nls.hu.json index 7dfd123a28240..81bd684a6557b 100644 --- a/packages/core/i18n/nls.hu.json +++ b/packages/core/i18n/nls.hu.json @@ -493,7 +493,6 @@ "preserveWindow": "Munkaterületek megnyitásának engedélyezése az aktuális ablakban.", "removeFolder": "Biztos, hogy a következő mappát szeretné eltávolítani a munkaterületről?", "removeFolders": "Biztos, hogy a következő mappákat szeretné eltávolítani a munkaterületről?", - "supportMultiRootWorkspace": "Szabályozza, hogy a több gyökérrel rendelkező munkaterület támogatása engedélyezve legyen-e.", "trashTitle": "Mozgassa {0} a szemetesbe", "trustEmptyWindow": "Szabályozza, hogy az üres munkaterület alapértelmezés szerint megbízható legyen-e vagy sem.", "trustEnabled": "Szabályozza, hogy a munkaterület megbízhatósága engedélyezve legyen-e vagy sem. Ha le van tiltva, akkor minden munkaterület megbízható.", diff --git a/packages/core/i18n/nls.it.json b/packages/core/i18n/nls.it.json index a06ba98cff1e6..05a2c2f82273c 100644 --- a/packages/core/i18n/nls.it.json +++ b/packages/core/i18n/nls.it.json @@ -493,7 +493,6 @@ "preserveWindow": "Abilita l'apertura degli spazi di lavoro nella finestra corrente.", "removeFolder": "Sei sicuro di voler rimuovere la seguente cartella dall'area di lavoro?", "removeFolders": "Sei sicuro di voler rimuovere le seguenti cartelle dallo spazio di lavoro?", - "supportMultiRootWorkspace": "Controlla se il supporto allo spazio di lavoro multi-root è abilitato.", "trashTitle": "Sposta {0} nel Cestino", "trustEmptyWindow": "Controlla se lo spazio di lavoro vuoto è fidato o meno per impostazione predefinita.", "trustEnabled": "Controlla se la fiducia dello spazio di lavoro è abilitata o meno. Se disabilitato, tutti gli spazi di lavoro sono affidabili.", diff --git a/packages/core/i18n/nls.ja.json b/packages/core/i18n/nls.ja.json index 62908ab01340d..51de135cc6bb5 100644 --- a/packages/core/i18n/nls.ja.json +++ b/packages/core/i18n/nls.ja.json @@ -493,7 +493,6 @@ "preserveWindow": "ワークスペースを現在のウィンドウで開けるようにします。", "removeFolder": "ワークスペースから以下のフォルダを削除してよろしいですか?", "removeFolders": "ワークスペースから以下のフォルダを削除してよろしいですか?", - "supportMultiRootWorkspace": "マルチルート・ワークスペースのサポートを有効にするかどうかを制御します。", "trashTitle": "{0}をゴミ箱に移動", "trustEmptyWindow": "空のワークスペースをデフォルトで信頼するかどうかを制御します。", "trustEnabled": "ワークスペースの信頼を有効にするかどうかを制御します。無効の場合、すべてのワークスペースが信頼されます。", diff --git a/packages/core/i18n/nls.json b/packages/core/i18n/nls.json index 81673e6be4ed3..e5513a59a8b04 100644 --- a/packages/core/i18n/nls.json +++ b/packages/core/i18n/nls.json @@ -493,7 +493,6 @@ "preserveWindow": "Enable opening workspaces in current window.", "removeFolder": "Are you sure you want to remove the following folder from the workspace?", "removeFolders": "Are you sure you want to remove the following folders from the workspace?", - "supportMultiRootWorkspace": "Controls whether multi-root workspace support is enabled.", "trashTitle": "Move {0} to Trash", "trustEmptyWindow": "Controls whether or not the empty workspace is trusted by default.", "trustEnabled": "Controls whether or not workspace trust is enabled. If disabled, all workspaces are trusted.", diff --git a/packages/core/i18n/nls.pl.json b/packages/core/i18n/nls.pl.json index afc66a973ed7f..341736a44be60 100644 --- a/packages/core/i18n/nls.pl.json +++ b/packages/core/i18n/nls.pl.json @@ -493,7 +493,6 @@ "preserveWindow": "Umożliwia otwieranie obszarów roboczych w bieżącym oknie.", "removeFolder": "Czy na pewno chcesz usunąć poniższy folder z obszaru roboczego?", "removeFolders": "Czy na pewno chcesz usunąć następujące foldery z obszaru roboczego?", - "supportMultiRootWorkspace": "Określa, czy włączona jest obsługa przestrzeni roboczej z wieloma rootami.", "trashTitle": "Przenieś {0} do kosza", "trustEmptyWindow": "Określa, czy pusty obszar roboczy jest domyślnie zaufany, czy nie.", "trustEnabled": "Określa, czy zaufanie do obszaru roboczego jest włączone, czy nie. Jeśli wyłączone, wszystkie obszary robocze są zaufane.", diff --git a/packages/core/i18n/nls.pt-br.json b/packages/core/i18n/nls.pt-br.json index eef5b89d6117a..82bdd49e9d694 100644 --- a/packages/core/i18n/nls.pt-br.json +++ b/packages/core/i18n/nls.pt-br.json @@ -493,7 +493,6 @@ "preserveWindow": "Permitir a abertura de espaços de trabalho na janela atual.", "removeFolder": "Você tem certeza de que deseja remover a seguinte pasta do espaço de trabalho?", "removeFolders": "Você tem certeza de que quer remover as seguintes pastas do espaço de trabalho?", - "supportMultiRootWorkspace": "Controla se o suporte de espaço de trabalho multi-raiz está habilitado.", "trashTitle": "Mudar {0} para Lixo", "trustEmptyWindow": "Controla se o espaço de trabalho vazio é ou não confiável por padrão.", "trustEnabled": "Controla se a confiança no espaço de trabalho está ou não habilitada. Se desativado, todos os espaços de trabalho são confiáveis.", diff --git a/packages/core/i18n/nls.pt-pt.json b/packages/core/i18n/nls.pt-pt.json index 2c1673596382a..925d7f33c1a09 100644 --- a/packages/core/i18n/nls.pt-pt.json +++ b/packages/core/i18n/nls.pt-pt.json @@ -493,7 +493,6 @@ "preserveWindow": "Activar a abertura de espaços de trabalho na janela actual.", "removeFolder": "Tem a certeza de que quer remover a seguinte pasta do espaço de trabalho?", "removeFolders": "Tem a certeza de que quer remover as seguintes pastas do espaço de trabalho?", - "supportMultiRootWorkspace": "Controla se o suporte multi-raiz do espaço de trabalho está activado.", "trashTitle": "Mover {0} para o Lixo", "trustEmptyWindow": "Controla se o espaço de trabalho vazio é ou não de confiança por defeito.", "trustEnabled": "Controla se a confiança no espaço de trabalho está ou não activada. Se estiver desactivado, todos os espaços de trabalho são de confiança.", diff --git a/packages/core/i18n/nls.ru.json b/packages/core/i18n/nls.ru.json index c1e36ed8a9edc..ba62594765f97 100644 --- a/packages/core/i18n/nls.ru.json +++ b/packages/core/i18n/nls.ru.json @@ -493,7 +493,6 @@ "preserveWindow": "Включить открытие рабочих пространств в текущем окне.", "removeFolder": "Вы уверены, что хотите удалить следующую папку из рабочей области?", "removeFolders": "Вы уверены, что хотите удалить следующие папки из рабочей области?", - "supportMultiRootWorkspace": "Управляет тем, включена ли поддержка многокорневого рабочего пространства.", "trashTitle": "Переместить {0} в корзину", "trustEmptyWindow": "Управляет тем, доверяется ли пустая рабочая область по умолчанию.", "trustEnabled": "Управляет тем, включено или нет доверие к рабочему пространству. Если отключено, все рабочие пространства являются доверенными.", diff --git a/packages/core/i18n/nls.zh-cn.json b/packages/core/i18n/nls.zh-cn.json index 0fed753b5114c..e12bafdb985ca 100644 --- a/packages/core/i18n/nls.zh-cn.json +++ b/packages/core/i18n/nls.zh-cn.json @@ -493,7 +493,6 @@ "preserveWindow": "启用在当前窗口中打开工作空间。", "removeFolder": "你确定要从工作区删除以下文件夹吗?", "removeFolders": "你确定要从工作区删除以下文件夹吗?", - "supportMultiRootWorkspace": "控制是否启用多根工作区支持。", "trashTitle": "将{0}移至垃圾箱", "trustEmptyWindow": "控制空工作区是否被默认信任。", "trustEnabled": "控制是否启用工作区信任。如果禁用,所有工作空间都被信任。", diff --git a/packages/navigator/src/browser/navigator-contribution.ts b/packages/navigator/src/browser/navigator-contribution.ts index 5c9f87d654ade..654b40d439110 100644 --- a/packages/navigator/src/browser/navigator-contribution.ts +++ b/packages/navigator/src/browser/navigator-contribution.ts @@ -38,7 +38,6 @@ import { FileDownloadCommands } from '@theia/filesystem/lib/browser/download/fil import { Command, CommandRegistry, - DisposableCollection, isOSX, MenuModelRegistry, MenuPath, @@ -259,17 +258,6 @@ export class FileNavigatorContribution extends AbstractViewContribution { - this.workspacePreferences.ready.then(() => { - this.updateAddRemoveFolderActions(this.menuRegistry); - this.workspacePreferences.onPreferenceChanged(change => { - if (change.preferenceName === 'workspace.supportMultiRootWorkspace') { - this.updateAddRemoveFolderActions(this.menuRegistry); - } - }); - }); - } - async initializeLayout(app: FrontendApplication): Promise { await this.openView(); } @@ -549,6 +537,14 @@ export class FileNavigatorContribution extends AbstractViewContribution { registry.registerCommand(WorkspaceCommands.ADD_FOLDER, { - isEnabled: () => this.workspaceService.isMultiRootWorkspaceEnabled, - isVisible: () => this.workspaceService.isMultiRootWorkspaceEnabled, + isEnabled: () => this.workspaceService.opened, + isVisible: () => this.workspaceService.opened, execute: async () => { const selection = await this.fileDialogService.showOpenDialog({ title: WorkspaceCommands.ADD_FOLDER.label!, @@ -348,7 +348,7 @@ export class WorkspaceCommandContribution implements CommandContribution { }); registry.registerCommand(WorkspaceCommands.REMOVE_FOLDER, this.newMultiUriAwareCommandHandler({ execute: uris => this.removeFolderFromWorkspace(uris), - isEnabled: () => this.workspaceService.isMultiRootWorkspaceEnabled, + isEnabled: () => this.workspaceService.isMultiRootWorkspaceOpened, isVisible: uris => this.areWorkspaceRoots(uris) && this.workspaceService.saved })); }); diff --git a/packages/workspace/src/browser/workspace-frontend-contribution.spec.ts b/packages/workspace/src/browser/workspace-frontend-contribution.spec.ts index 0d4502588a07c..747d80f595fc6 100644 --- a/packages/workspace/src/browser/workspace-frontend-contribution.spec.ts +++ b/packages/workspace/src/browser/workspace-frontend-contribution.spec.ts @@ -39,32 +39,21 @@ describe('workspace-frontend-contribution', () => { after(() => disableJSDOM()); ([ - [OS.Type.Linux, 'browser', true, { title, canSelectFiles: true, canSelectFolders: true, filters }], - [OS.Type.Linux, 'browser', false, { title, canSelectFiles: false, canSelectFolders: true }], [OS.Type.Linux, 'electron', true, { title, canSelectFiles: true, canSelectFolders: false, filters }], - [OS.Type.Linux, 'electron', false, { title, canSelectFiles: false, canSelectFolders: true }], - [OS.Type.Windows, 'browser', true, { title, canSelectFiles: true, canSelectFolders: true, filters }], - [OS.Type.Windows, 'browser', false, { title, canSelectFiles: false, canSelectFolders: true }], [OS.Type.Windows, 'electron', true, { title, canSelectFiles: true, canSelectFolders: false, filters }], - [OS.Type.Windows, 'electron', false, { title, canSelectFiles: false, canSelectFolders: true }], - [OS.Type.OSX, 'browser', true, { title, canSelectFiles: true, canSelectFolders: true, filters }], - [OS.Type.OSX, 'browser', false, { title, canSelectFiles: false, canSelectFolders: true }], [OS.Type.OSX, 'electron', true, { title, canSelectFiles: true, canSelectFolders: true, filters }], - [OS.Type.OSX, 'electron', false, { title, canSelectFiles: true, canSelectFolders: true, filters }] - ] as [OS.Type, 'browser' | 'electron', boolean, OpenFileDialogProps][]).forEach(test => { - const [type, environment, supportMultiRootWorkspace, expected] = test; + const [type, environment, _, expected] = test; const electron = environment === 'electron' ? true : false; const os = (OS.Type as any)[type]; // eslint-disable-line @typescript-eslint/no-explicit-any const actual = WorkspaceFrontendContribution.createOpenWorkspaceOpenFileDialogProps({ type, electron, - supportMultiRootWorkspace }); - it(`createOpenWorkspaceOpenFileDialogProps - OS: ${os}, Environment: ${environment}, Multi-root workspace: ${supportMultiRootWorkspace ? 'yes' : 'no'}`, () => { + it(`createOpenWorkspaceOpenFileDialogProps - OS: ${os}, Environment: ${environment}`, () => { expect(actual).to.be.deep.equal(expected); }); }); diff --git a/packages/workspace/src/browser/workspace-frontend-contribution.ts b/packages/workspace/src/browser/workspace-frontend-contribution.ts index 81c5f05b4c08e..69e6fb334e61e 100644 --- a/packages/workspace/src/browser/workspace-frontend-contribution.ts +++ b/packages/workspace/src/browser/workspace-frontend-contribution.ts @@ -58,6 +58,9 @@ export enum WorkspaceStates { export type WorkspaceState = keyof typeof WorkspaceStates; export type WorkbenchState = keyof typeof WorkspaceStates; +/** Create the workspace section after open {@link CommonMenus.FILE_OPEN}. */ +export const FILE_WORKSPACE = [...CommonMenus.FILE, '2_workspace']; + @injectable() export class WorkspaceFrontendContribution implements CommandContribution, KeybindingContribution, MenuContribution, FrontendApplicationContribution { @@ -149,7 +152,8 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi execute: () => this.quickOpenWorkspace.select() }); commands.registerCommand(WorkspaceCommands.SAVE_WORKSPACE_AS, { - isEnabled: () => this.workspaceService.isMultiRootWorkspaceEnabled, + isVisible: () => this.workspaceService.opened, + isEnabled: () => this.workspaceService.opened, execute: () => this.saveWorkspaceAs() }); commands.registerCommand(WorkspaceCommands.OPEN_WORKSPACE_FILE, { @@ -190,9 +194,14 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi commandId: WorkspaceCommands.OPEN_RECENT_WORKSPACE.id, order: 'a20' }); - menus.registerMenuAction(CommonMenus.FILE_OPEN, { + + menus.registerMenuAction(FILE_WORKSPACE, { + commandId: WorkspaceCommands.ADD_FOLDER.id, + order: 'a10' + }); + menus.registerMenuAction(FILE_WORKSPACE, { commandId: WorkspaceCommands.SAVE_WORKSPACE_AS.id, - order: 'a30' + order: 'a20' }); menus.registerMenuAction(CommonMenus.FILE_CLOSE, { @@ -305,7 +314,7 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi title: WorkspaceCommands.OPEN_FOLDER.dialogLabel, canSelectFolders: true, canSelectFiles: false, - canSelectMany: this.preferences['workspace.supportMultiRootWorkspace'], + canSelectMany: true, }; const [rootStat] = await this.workspaceService.roots; const targetFolders = await this.fileDialogService.showOpenDialog(props, rootStat); @@ -354,12 +363,10 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi * Opens a workspace after raising the `Open Workspace` dialog. Resolves to the URI of the recently opened workspace, * if it was successful. Otherwise, resolves to `undefined`. * - * **Caveat**: this behaves differently on different platforms, the `workspace.supportMultiRootWorkspace` preference value **does** matter, + * **Caveat**: this behaves differently on different platforms * and `electron`/`browser` version has impact too. See [here](https://github.com/eclipse-theia/theia/pull/3202#issuecomment-430884195) for more details. * * Legend: - * - `workspace.supportMultiRootWorkspace` is `false`: => `N` - * - `workspace.supportMultiRootWorkspace` is `true`: => `Y` * - Folders only: => `F` * - Workspace files only: => `W` * - Folders and workspace files: => `FW` @@ -392,13 +399,11 @@ export class WorkspaceFrontendContribution implements CommandContribution, Keybi protected async openWorkspaceOpenFileDialogProps(): Promise { await this.preferences.ready; - const supportMultiRootWorkspace = this.preferences['workspace.supportMultiRootWorkspace']; const type = OS.type(); const electron = this.isElectron(); return WorkspaceFrontendContribution.createOpenWorkspaceOpenFileDialogProps({ type, electron, - supportMultiRootWorkspace }); } @@ -524,32 +529,11 @@ export namespace WorkspaceFrontendContribution { /** * Returns with an `OpenFileDialogProps` for opening the `Open Workspace` dialog. */ - export function createOpenWorkspaceOpenFileDialogProps(options: Readonly<{ type: OS.Type, electron: boolean, supportMultiRootWorkspace: boolean }>): OpenFileDialogProps { - const { electron, type, supportMultiRootWorkspace } = options; + export function createOpenWorkspaceOpenFileDialogProps(options: Readonly<{ type: OS.Type, electron: boolean }>): OpenFileDialogProps { + const { electron, type } = options; const title = WorkspaceCommands.OPEN_WORKSPACE.dialogLabel; // If browser if (!electron) { - // and multi-root workspace is supported, it is always folder + workspace files. - if (supportMultiRootWorkspace) { - return { - title, - canSelectFiles: true, - canSelectFolders: true, - filters: DEFAULT_FILE_FILTER - }; - } else { - // otherwise, it is always folders. No files at all. - return { - title, - canSelectFiles: false, - canSelectFolders: true - }; - } - } - - // If electron - if (OS.Type.OSX === type) { - // `Finder` can select folders and files at the same time. We allow folders and workspace files. return { title, canSelectFiles: true, @@ -558,21 +542,22 @@ export namespace WorkspaceFrontendContribution { }; } - // In electron, only workspace files can be selected when the multi-root workspace feature is enabled. - if (supportMultiRootWorkspace) { + // If electron + if (OS.Type.OSX === type) { + // `Finder` can select folders and files at the same time. We allow folders and workspace files. return { title, canSelectFiles: true, - canSelectFolders: false, + canSelectFolders: true, filters: DEFAULT_FILE_FILTER }; } - // Otherwise, it is always a folder. return { title, - canSelectFiles: false, - canSelectFolders: true + canSelectFiles: true, + canSelectFolders: false, + filters: DEFAULT_FILE_FILTER }; } diff --git a/packages/workspace/src/browser/workspace-preferences.ts b/packages/workspace/src/browser/workspace-preferences.ts index a0a5c1faa7832..ce828eed41cef 100644 --- a/packages/workspace/src/browser/workspace-preferences.ts +++ b/packages/workspace/src/browser/workspace-preferences.ts @@ -32,17 +32,11 @@ export const workspacePreferenceSchema: PreferenceSchema = { type: 'boolean', default: false }, - 'workspace.supportMultiRootWorkspace': { - description: nls.localize('theia/workspace/supportMultiRootWorkspace', 'Controls whether multi-root workspace support is enabled.'), - type: 'boolean', - default: true - } } }; export interface WorkspaceConfiguration { 'workspace.preserveWindow': boolean, - 'workspace.supportMultiRootWorkspace': boolean } export const WorkspacePreferenceContribution = Symbol('WorkspacePreferenceContribution'); diff --git a/packages/workspace/src/browser/workspace-service.ts b/packages/workspace/src/browser/workspace-service.ts index 83d6905c43bf2..449fa62e27c63 100644 --- a/packages/workspace/src/browser/workspace-service.ts +++ b/packages/workspace/src/browser/workspace-service.ts @@ -104,11 +104,6 @@ export class WorkspaceService implements FrontendApplicationContribution { this.updateWorkspace(); } }); - this.preferences.onPreferenceChanged(event => { - if (event.preferenceName === 'workspace.supportMultiRootWorkspace') { - this.updateWorkspace(); - } - }); this.fsPreferences.onPreferenceChanged(event => { if (event.preferenceName === 'files.watcherExclude') { this.refreshRootWatchers(); @@ -332,14 +327,6 @@ export class WorkspaceService implements FrontendApplicationContribution { return !!this.workspace && !this.workspace.isDirectory; } - /** - * Returns `true` if there is an opened workspace, and multi root workspace support is enabled. - * @returns {boolean} - */ - get isMultiRootWorkspaceEnabled(): boolean { - return this.opened && this.preferences['workspace.supportMultiRootWorkspace']; - } - /** * Opens directory, or recreates a workspace from the file that `uri` points to. */