Browse Source

Clean up resolvers to use factories

Steven Silvester 9 years ago
parent
commit
ed2f022e04

+ 6 - 0
examples/lab/Untitled.ipynb

@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 0
+}

+ 6 - 38
examples/lab/src/plugin.ts

@@ -41,42 +41,10 @@ import {
  */
 export
 function resolve(container: Container): void {
-  container.resolve(DefaultHandler).then(handler => { handler.run(); });
-}
-
-
-/**
- * The default plugin for the example.
- */
-class DefaultHandler {
-
-  /**
-   * The dependencies required by the default plugin.
-   */
-  static requires: Token<any>[] = [IAppShell, ICommandPalette, IFileBrowserWidget];
-
-  /**
-   * Create a default plugin instance..
-   */
-  static create(shell: IAppShell, palette: ICommandPalette, browser: IFileBrowserWidget): DefaultHandler {
-    return new DefaultHandler(shell, palette, browser);
-  }
-
-  /**
-   * Construct a new default plugin.
-   */
-  constructor(shell: IAppShell, palette: ICommandPalette, browser: IFileBrowserWidget) {
-    this._shell = shell;
-    this._palette = palette;
-    this._browser = browser;
-  }
-
-  run() {
-    this._browser.title.text = 'Files';
-    this._shell.addToLeftArea(this._browser, { rank: 40 });
-  }
-
-  private _shell: IAppShell = null;
-  private _palette: ICommandPalette = null;
-  private _browser: FileBrowserWidget = null;
+  container.resolve({
+    requires: [IAppShell, ICommandPalette, IFileBrowserWidget],
+    create: (shell, palette, browser) => {
+      shell.addToLeftArea(browser, { rank: 40 });
+    }
+  });
 }

+ 0 - 0
examples/lab/untitled.txt


+ 7 - 4
src/filehandler/plugin.ts

@@ -29,8 +29,11 @@ import {
  */
 export
 function resolve(container: Container): Promise<void> {
-  return Promise.all([container.resolve(IServicesProvider),
-               container.resolve(IFileOpener)]).then(([services, opener]) => {
-    opener.registerDefault(new FileHandler(services.contentsManager))
-  }).then(() => {});
+  return container.resolve({
+    requires: [IServicesProvider, IFileOpener],
+    create: (services, opener) => {
+      let handler = new FileHandler(services.contentsManager);
+      opener.registerDefault(handler);
+    }
+  });
 }

+ 8 - 5
src/imagehandler/plugin.ts

@@ -32,11 +32,14 @@ import {
  * This is called automatically when the plugin is loaded.
  */
 export
-function resolve(container: Container) {
-  return Promise.all([container.resolve(IServicesProvider),
-               container.resolve(IFileOpener)]).then(([services, opener]) => {
-    opener.registerDefault(new ImageHandler(services.contentsManager))
-  }).then(() => {});
+function resolve(container: Container): Promise<void> {
+  return container.resolve({
+    requires: [IServicesProvider, IFileOpener],
+    create: (services, opener) => {
+      let handler = new ImageHandler(services.contentsManager);
+      opener.register(handler);
+    }
+  });
 }
 
 

+ 8 - 5
src/notebook/plugin.ts

@@ -37,11 +37,14 @@ import './plugin.css';
  * This is called automatically when the plugin is loaded.
  */
 export
-function resolve(container: Container) {
-  return Promise.all([container.resolve(IServicesProvider),
-               container.resolve(IFileOpener)]).then(([services, opener]) => {
-    opener.registerDefault(new NotebookFileHandler(services.contentsManager))
-  }).then(() => {});
+function resolve(container: Container): Promise<void> {
+  return container.resolve({
+    requires: [IServicesProvider, IFileOpener],
+    create: (services, opener) => {
+      let handler = new NotebookFileHandler(services.contentsManager);
+      opener.register(handler);
+    }
+  });
 }
 
 

+ 26 - 45
src/terminal/plugin.ts

@@ -23,50 +23,31 @@ import './plugin.css';
 
 export
 function resolve(container: Container): Promise<void> {
-  return container.resolve(TerminalPlugin).then(() => {});
-}
-
-
-class TerminalPlugin {
-
-  /**
-   * The dependencies required by the editor factory.
-   */
-  static requires: Token<any>[] = [IAppShell, ICommandPalette, ICommandRegistry];
-
-  /**
-   * Create a new terminal plugin instance.
-   */
-  static create(shell: IAppShell, palette: ICommandPalette, registry: ICommandRegistry): TerminalPlugin {
-    return new TerminalPlugin(shell, palette, registry);
-  }
-
-  /**
-   * Construct a terminal plugin.
-   */
-  constructor(shell: IAppShell, palette: ICommandPalette, registry: ICommandRegistry) {
-    let termCommandItem = {
-      // Move this to the terminal.
-      id: 'jupyter-plugins:new-terminal',
-      command: new DelegateCommand(() => {
-        let term = new TerminalWidget();
-        term.color = 'black';
-        term.background = 'white';
-        term.title.closable = true;
-        shell.addToMainArea(term);
-      })
+  return container.resolve({
+    requires: [IAppShell, ICommandPalette, ICommandRegistry],
+    create: (shell, palette, registry) => {
+      let termCommandItem = {
+        // Move this to the terminal.
+        id: 'jupyter-plugins:new-terminal',
+        command: new DelegateCommand(() => {
+          let term = new TerminalWidget();
+          term.color = 'black';
+          term.background = 'white';
+          term.title.closable = true;
+          shell.addToMainArea(term);
+        })
+      }
+      registry.add([termCommandItem]);
+      let paletteItem = {
+        id: 'jupyter-plugins:new-terminal',
+        title: 'Terminal',
+        caption: ''
+      };
+      let section = {
+        text: 'New...',
+        items: [paletteItem]
+      }
+      palette.add([section]);
     }
-    registry.add([termCommandItem]);
-    let paletteItem = {
-      id: 'jupyter-plugins:new-terminal',
-      title: 'Terminal',
-      caption: ''
-    };
-    let section = {
-      text: 'New...',
-      items: [paletteItem]
-    }
-    palette.add([section]);
-  }
-
+  });
 }