Browse Source

Merge pull request #2689 from blink1073/default-filebrowser

Add a default file browser
Afshin Darian 7 years ago
parent
commit
d315cf9ce0
2 changed files with 43 additions and 42 deletions
  1. 38 42
      packages/filebrowser-extension/src/index.ts
  2. 5 0
      packages/filebrowser/src/factory.ts

+ 38 - 42
packages/filebrowser-extension/src/index.ts

@@ -130,56 +130,52 @@ function activateFactory(app: JupyterLab, docManager: IDocumentManager, state: I
   const { commands } = app;
   const tracker = new InstanceTracker<FileBrowser>({ namespace });
 
-  return {
-    createFileBrowser(id: string, options: IFileBrowserFactory.IOptions = {}): FileBrowser {
-      const model = new FileBrowserModel({
-        manager: docManager,
-        driveName: options.driveName || '',
-        state: options.state === null ? null : options.state || state
-      });
-      const widget = new FileBrowser({
-        id, model, commands: options.commands || commands
-      });
-      const { registry } = docManager;
-
-      // Add a launcher toolbar item.
-      let launcher = new ToolbarButton({
-        className: 'jp-AddIcon',
-        onClick: () => {
-          return commands.execute('launcher:create', {
-            cwd: widget.model.path
-          });
-        }
-      });
-      launcher.addClass('jp-MaterialIcon');
-      widget.toolbar.insertItem(0, 'launch', launcher);
-
-      // Add a context menu handler to the file browser's directory listing.
-      let node = widget.node.getElementsByClassName('jp-DirListing-content')[0];
-      node.addEventListener('contextmenu', (event: MouseEvent) => {
-        event.preventDefault();
-        const path = widget.pathForClick(event) || '';
-        const menu = createContextMenu(path, commands, registry);
-        menu.open(event.clientX, event.clientY);
-      });
+  const createFileBrowser = (id: string, options: IFileBrowserFactory.IOptions = {}) => {
+    const model = new FileBrowserModel({
+      manager: docManager,
+      driveName: options.driveName || '',
+      state: options.state === null ? null : options.state || state
+    });
+    const widget = new FileBrowser({
+      id, model, commands: options.commands || commands
+    });
+    const { registry } = docManager;
+
+    // Add a launcher toolbar item.
+    let launcher = new ToolbarButton({
+      className: 'jp-AddIcon',
+      onClick: () => {
+        return commands.execute('launcher:create', {
+          cwd: widget.model.path
+        });
+      }
+    });
+    launcher.addClass('jp-MaterialIcon');
+    widget.toolbar.insertItem(0, 'launch', launcher);
+
+    // Add a context menu handler to the file browser's directory listing.
+    let node = widget.node.getElementsByClassName('jp-DirListing-content')[0];
+    node.addEventListener('contextmenu', (event: MouseEvent) => {
+      event.preventDefault();
+      const path = widget.pathForClick(event) || '';
+      const menu = createContextMenu(path, commands, registry);
+      menu.open(event.clientX, event.clientY);
+    });
 
-      // Track the newly created file browser.
-      tracker.add(widget);
+    // Track the newly created file browser.
+    tracker.add(widget);
 
-      return widget;
-    },
-    tracker
+    return widget;
   };
+  let defaultBrowser = createFileBrowser('filebrowser');
+  return { createFileBrowser, defaultBrowser, tracker };
 }
 
 /**
- * Activate the file browser in the sidebar.
+ * Activate the default file browser in the sidebar.
  */
 function activateFileBrowser(app: JupyterLab, factory: IFileBrowserFactory, docManager: IDocumentManager, mainMenu: IMainMenu, palette: ICommandPalette, restorer: ILayoutRestorer): void {
-  const { commands } = app;
-  const fbWidget = factory.createFileBrowser('filebrowser', {
-    commands
-  });
+  const fbWidget = factory.defaultBrowser;
 
   // Let the application restorer track the primary file browser (that is
   // automatically created) for restoration of application state (e.g. setting

+ 5 - 0
packages/filebrowser/src/factory.ts

@@ -60,6 +60,11 @@ interface IFileBrowserFactory {
    * The instance tracker used by the factory to track file browsers.
    */
   readonly tracker: InstanceTracker<FileBrowser>;
+
+  /**
+   * The default file browser for the application.
+   */
+  defaultBrowser: FileBrowser;
 }