From 43f54c70dee258d70b33822bc36f70953e566086 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Tue, 13 Apr 2021 13:46:44 +0200 Subject: [PATCH 1/2] Move the "New Terminal" button to its own plugin --- packages/tree-extension/src/index.ts | 45 ++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/packages/tree-extension/src/index.ts b/packages/tree-extension/src/index.ts index 2bb53a868..d48e22bcd 100644 --- a/packages/tree-extension/src/index.ts +++ b/packages/tree-extension/src/index.ts @@ -124,7 +124,7 @@ namespace CommandIDs { * Plugin to add extra buttons to the file browser to create * new notebooks, files and terminals. */ -const buttons: JupyterFrontEndPlugin = { +const newFiles: JupyterFrontEndPlugin = { id: '@jupyterlab-classic/tree-extension:buttons', requires: [IFileBrowserFactory], autoStart: true, @@ -142,15 +142,6 @@ const buttons: JupyterFrontEndPlugin = { } }); - const newTerminalCommand = 'tree:new-terminal'; - commands.addCommand(newTerminalCommand, { - label: 'New Terminal', - icon: terminalIcon, - execute: () => { - return commands.execute('terminal:create-new'); - } - }); - const newNotebook = new CommandToolbarButton({ commands, id: newNotebookCommand @@ -161,13 +152,36 @@ const buttons: JupyterFrontEndPlugin = { id: CommandIDs.createNewFile }); + browser.toolbar.insertItem(0, 'new-notebook', newNotebook); + browser.toolbar.insertItem(1, 'new-file', newFile); + } +}; + +/** + * Plugin to add a "New Terminal" button to the file browser toolbar. + */ +const newTerminal: JupyterFrontEndPlugin = { + id: '@jupyterlab-classic/tree-extension:new-terminal', + requires: [IFileBrowserFactory], + autoStart: true, + activate: (app: JupyterFrontEnd, filebrowser: IFileBrowserFactory) => { + const { commands } = app; + const browser = filebrowser.defaultBrowser; + + const newTerminalCommand = 'tree:new-terminal'; + commands.addCommand(newTerminalCommand, { + label: 'New Terminal', + icon: terminalIcon, + execute: () => { + return commands.execute('terminal:create-new'); + } + }); + const newTerminal = new CommandToolbarButton({ commands, id: newTerminalCommand }); - browser.toolbar.insertItem(0, 'new-notebook', newNotebook); - browser.toolbar.insertItem(1, 'new-file', newFile); browser.toolbar.insertItem(2, 'new-terminal', newTerminal); } }; @@ -964,5 +978,10 @@ namespace Private { /** * Export the plugins as default. */ -const plugins: JupyterFrontEndPlugin[] = [browser, buttons, factory]; +const plugins: JupyterFrontEndPlugin[] = [ + browser, + factory, + newFiles, + newTerminal +]; export default plugins; From 57246ca4459d466479b7c4aa6ecb17f0fe5d3184 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Tue, 13 Apr 2021 14:39:42 +0200 Subject: [PATCH 2/2] Minor code style thing --- app/index.js | 65 +++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/app/index.js b/app/index.js index 0e997f9a1..578fdbb5d 100644 --- a/app/index.js +++ b/app/index.js @@ -124,35 +124,42 @@ async function main() { // The motivation here is to only load a specific set of plugins dependending on // the current page const page = PageConfig.getOption('classicPage'); - if (page === 'tree') { - mods = mods.concat([ - require('@jupyterlab-classic/tree-extension'), - require('@jupyterlab/running-extension') - ]); - } else if (page === 'notebooks') { - mods = mods.concat([ - require('@jupyterlab/completer-extension').default.filter(({ id }) => - ['@jupyterlab/completer-extension:notebooks'].includes(id) - ), - require('@jupyterlab/tooltip-extension').default.filter(({ id }) => - [ - '@jupyterlab/tooltip-extension:manager', - '@jupyterlab/tooltip-extension:notebooks' - ].includes(id) - ) - ]); - } else if (page === 'edit') { - mods = mods.concat([ - require('@jupyterlab/completer-extension').default.filter(({ id }) => - ['@jupyterlab/completer-extension:files'].includes(id) - ), - require('@jupyterlab/fileeditor-extension').default.filter(({ id }) => - ['@jupyterlab/fileeditor-extension:plugin'].includes(id) - ), - require('@jupyterlab-classic/tree-extension').default.filter(({ id }) => - ['@jupyterlab-classic/tree-extension:factory'].includes(id) - ) - ]); + switch (page) { + case 'tree': { + mods = mods.concat([ + require('@jupyterlab-classic/tree-extension'), + require('@jupyterlab/running-extension') + ]); + break; + } + case 'notebooks': { + mods = mods.concat([ + require('@jupyterlab/completer-extension').default.filter(({ id }) => + ['@jupyterlab/completer-extension:notebooks'].includes(id) + ), + require('@jupyterlab/tooltip-extension').default.filter(({ id }) => + [ + '@jupyterlab/tooltip-extension:manager', + '@jupyterlab/tooltip-extension:notebooks' + ].includes(id) + ) + ]); + break; + } + case 'edit': { + mods = mods.concat([ + require('@jupyterlab/completer-extension').default.filter(({ id }) => + ['@jupyterlab/completer-extension:files'].includes(id) + ), + require('@jupyterlab/fileeditor-extension').default.filter(({ id }) => + ['@jupyterlab/fileeditor-extension:plugin'].includes(id) + ), + require('@jupyterlab-classic/tree-extension').default.filter(({ id }) => + ['@jupyterlab-classic/tree-extension:factory'].includes(id) + ) + ]); + break; + } } /**