From aa7ecb1500c44851ab9ee4aa6fe361012b00f45a Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Thu, 11 Jan 2024 08:09:47 +0000 Subject: [PATCH 1/4] Default current file browser track to the default file browser --- packages/tree-extension/src/index.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index a4b58ad829..272ba779cd 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -18,6 +18,7 @@ import { FileBrowser, Uploader, IDefaultFileBrowser, + IFileBrowserFactory, } from '@jupyterlab/filebrowser'; import { ISettingRegistry } from '@jupyterlab/settingregistry'; @@ -263,6 +264,7 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { ITranslator, ISettingRegistry, IToolbarWidgetRegistry, + IFileBrowserFactory, ], optional: [ IRunningSessionManagers, @@ -277,6 +279,7 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { translator: ITranslator, settingRegistry: ISettingRegistry, toolbarRegistry: IToolbarWidgetRegistry, + factory: IFileBrowserFactory, manager: IRunningSessionManagers | null, settingEditorTracker: ISettingEditorTracker | null, jsonSettingEditorTracker: IJSONSettingEditorTracker | null @@ -381,6 +384,16 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { } ); + // workaround for https://github.com/jupyter/notebook/issues/7210 + const { tracker } = factory; + + const setCurrentToDefaultBrower = () => { + tracker['_pool'].current = browser; + }; + + tracker.widgetAdded.connect(setCurrentToDefaultBrower); + setCurrentToDefaultBrower(); + return nbTreeWidget; }, }; From 7a36d3b7369f1533926f1ffff5bb186fdab08a9a Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 22 Jan 2024 10:14:00 +0000 Subject: [PATCH 2/4] open drives in the notebook tree widget --- packages/tree-extension/src/index.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index 272ba779cd..9fd6db057a 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -47,6 +47,7 @@ import { Menu, MenuBar } from '@lumino/widgets'; import { NotebookTreeWidget, INotebookTree } from '@jupyter-notebook/tree'; import { FilesActionButtons } from './fileactions'; +import { INotebookShell } from '@jupyter-notebook/application'; /** * The file browser factory. @@ -265,6 +266,7 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { ISettingRegistry, IToolbarWidgetRegistry, IFileBrowserFactory, + INotebookShell, ], optional: [ IRunningSessionManagers, @@ -280,13 +282,16 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { settingRegistry: ISettingRegistry, toolbarRegistry: IToolbarWidgetRegistry, factory: IFileBrowserFactory, + notebookShell: INotebookShell, manager: IRunningSessionManagers | null, settingEditorTracker: ISettingEditorTracker | null, jsonSettingEditorTracker: IJSONSettingEditorTracker | null ): INotebookTree => { const nbTreeWidget = new NotebookTreeWidget(); + nbTreeWidget.tabsMovable = false; const trans = translator.load('notebook'); + const { tracker } = factory; browser.title.label = trans.__('Files'); browser.node.setAttribute('role', 'region'); @@ -295,7 +300,6 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { nbTreeWidget.addWidget(browser); nbTreeWidget.tabBar.addTab(browser.title); - nbTreeWidget.tabsMovable = false; toolbarRegistry.addFactory( FILE_BROWSER_FACTORY, @@ -376,7 +380,7 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { (editorTracker) => { if (editorTracker) { editorTracker.widgetAdded.connect((_, editor) => { - nbTreeWidget.addWidget(editor); + nbTreeWidget.adWidget(editor); nbTreeWidget.tabBar.addTab(editor.title); nbTreeWidget.currentWidget = editor; }); @@ -384,9 +388,22 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { } ); - // workaround for https://github.com/jupyter/notebook/issues/7210 - const { tracker } = factory; + // add drives to the notebook tree widget + tracker.forEach((widget) => { + // move the additional drives to the notebook tree widget + if (widget.model.driveName) { + const parent = widget.parent; + widget.parent = null; + nbTreeWidget.addWidget(widget); + widget.title.label = widget.model.driveName; + nbTreeWidget.tabBar.addTab(widget.title); + parent?.dispose(); + } + }); + // TODO: remove + // Workaround to force the focus on the default file browser + // See https://github.com/jupyterlab/jupyterlab/issues/15629 for more info const setCurrentToDefaultBrower = () => { tracker['_pool'].current = browser; }; From b73046c9a8d37e92ef345fd5dca271c45f3aaa52 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 22 Jan 2024 10:23:20 +0000 Subject: [PATCH 3/4] typo fix --- packages/tree-extension/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index 9fd6db057a..7e45145e2e 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -380,7 +380,7 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { (editorTracker) => { if (editorTracker) { editorTracker.widgetAdded.connect((_, editor) => { - nbTreeWidget.adWidget(editor); + nbTreeWidget.addWidget(editor); nbTreeWidget.tabBar.addTab(editor.title); nbTreeWidget.currentWidget = editor; }); From ff1c2c35cd04ccb1339f490707c638546742ae59 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Thu, 25 Jan 2024 21:44:49 +0000 Subject: [PATCH 4/4] remove unused import --- packages/tree-extension/src/index.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index 7e45145e2e..74d241b9b1 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -47,7 +47,6 @@ import { Menu, MenuBar } from '@lumino/widgets'; import { NotebookTreeWidget, INotebookTree } from '@jupyter-notebook/tree'; import { FilesActionButtons } from './fileactions'; -import { INotebookShell } from '@jupyter-notebook/application'; /** * The file browser factory. @@ -266,7 +265,6 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { ISettingRegistry, IToolbarWidgetRegistry, IFileBrowserFactory, - INotebookShell, ], optional: [ IRunningSessionManagers, @@ -282,7 +280,6 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { settingRegistry: ISettingRegistry, toolbarRegistry: IToolbarWidgetRegistry, factory: IFileBrowserFactory, - notebookShell: INotebookShell, manager: IRunningSessionManagers | null, settingEditorTracker: ISettingEditorTracker | null, jsonSettingEditorTracker: IJSONSettingEditorTracker | null @@ -388,17 +385,25 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { } ); - // add drives to the notebook tree widget - tracker.forEach((widget) => { - // move the additional drives to the notebook tree widget + const moveDrive = (widget: FileBrowser) => { if (widget.model.driveName) { - const parent = widget.parent; + // const parent = widget.parent; widget.parent = null; nbTreeWidget.addWidget(widget); widget.title.label = widget.model.driveName; nbTreeWidget.tabBar.addTab(widget.title); - parent?.dispose(); + // parent?.dispose(); } + }; + + requestAnimationFrame(() => { + // add drives to the notebook tree widget + tracker.forEach((widget) => { + // move the additional drives to the notebook tree widget + moveDrive(widget); + }); + + setCurrentToDefaultBrower(); }); // TODO: remove @@ -408,8 +413,9 @@ const notebookTreeWidget: JupyterFrontEndPlugin = { tracker['_pool'].current = browser; }; - tracker.widgetAdded.connect(setCurrentToDefaultBrower); - setCurrentToDefaultBrower(); + tracker.widgetAdded.connect((sender, widget) => + setCurrentToDefaultBrower() + ); return nbTreeWidget; },