Browse Source

Finish cleaning up the file handler and registry

Steven Silvester 9 years ago
parent
commit
d316adf332

+ 2 - 2
examples/filebrowser/src/index.ts

@@ -71,8 +71,8 @@ function main(): void {
 
   let fbWidget = new FileBrowserWidget(fbModel, registry);
 
-  let dirCreator = new FileCreator(contentsManager, 'directory', fbWidget.node);
-  let fileCreator = new FileCreator(contentsManager, 'file', fbWidget.node);
+  let dirCreator = new FileCreator(contentsManager, 'directory');
+  let fileCreator = new FileCreator(contentsManager, 'file');
   registry.addCreator(
     'New Directory', dirCreator.createNew.bind(dirCreator));
   registry.addCreator('New File', fileCreator.createNew.bind(fileCreator));

+ 3 - 3
examples/filebrowser/webpack.conf.js

@@ -1,11 +1,11 @@
 
-var ContextReplacementPlugin = require("webpack/lib/ContextReplacementPlugin");
 
 module.exports = {
   entry: './build/index.js',
   output: {
-    path: './build',
-    filename: 'bundle.js'
+    path: __dirname + "/build",
+    filename: "bundle.js",
+    publicPath: "./build/"
   },
   node: {
     fs: "empty"

+ 3 - 2
examples/terminal/webpack.conf.js

@@ -2,8 +2,9 @@
 module.exports = {
   entry: './build/index.js',
   output: {
-    path: './build',
-    filename: 'bundle.js'
+    path: __dirname + "/build",
+    filename: "bundle.js",
+    publicPath: "./build/"
   },
   node: {
     fs: "empty"

+ 2 - 1
src/filebrowser/buttons.ts

@@ -302,10 +302,11 @@ namespace Private {
   function createItem(text: string, widget: FileButtons): MenuItem {
     let registry = widget.registry;
     let model = widget.model;
+    let host = widget.parent.node;
     return new MenuItem({
       text,
       handler: () => {
-        registry.createNew(text, model.path).then(contents => {
+        registry.createNew(text, model.path, host).then(contents => {
           if (contents === void 0) {
             return;
           }

+ 4 - 4
src/filehandler/creator.ts

@@ -29,9 +29,8 @@ class FileCreator {
   /**
    * Construct a new file creator.
    */
-  constructor(manager: IContentsManager, type: string, host?: HTMLElement) {
+  constructor(manager: IContentsManager, type: string) {
     this._manager = manager;
-    this._host = host || document.body;
     this._type = type;
     this._displayType = type.charAt(0).toUpperCase() + type.slice(1);
     let constructor = this.constructor as typeof FileCreator;
@@ -75,7 +74,8 @@ class FileCreator {
   /**
    * Create a new file object in the given directory.
    */
-  createNew(path: string): Promise<IContentsModel> {
+  createNew(path: string, host?: HTMLElement): Promise<IContentsModel> {
+    this._host = host || document.body;
     return this._createUntitled(path).then(contents => {
       return this.doRename(contents);
     });
@@ -91,7 +91,7 @@ class FileCreator {
     return showDialog({
       title: `Create a New ${this._displayType}`,
       body: this.body,
-      host: this.host,
+      host: this._host,
       okText: 'CREATE'
     }).then(value => {
       if (value.text === 'CREATE') {

+ 2 - 2
src/filehandler/handler.ts

@@ -227,7 +227,7 @@ abstract class AbstractFileHandler<T extends Widget> implements IMessageFilter {
   }
 
   /**
-   * Set the dirty state of a widget (defaults to current active widget).
+   * Set the dirty state of a file.
    */
   setDirty(path: string): void {
     let widget = this.findWidget(path);
@@ -235,7 +235,7 @@ abstract class AbstractFileHandler<T extends Widget> implements IMessageFilter {
   }
 
   /**
-   * Clear the dirty state of a widget (defaults to current active widget).
+   * Clear the dirty state of a file.
    */
   clearDirty(path: string): void {
     let widget = this.findWidget(path);

+ 3 - 3
src/filehandler/registry.ts

@@ -73,10 +73,10 @@ class FileHandlerRegistry {
   /**
    * Create a new file.
    */
-  createNew(name: string, path: string): Promise<IContentsModel> {
+  createNew(name: string, path: string, host?: HTMLElement): Promise<IContentsModel> {
     let creator = this._creators[name];
     if (creator) {
-      return creator(path).then(model => {
+      return creator(path, host).then(model => {
         this.created.emit(model);
         return model;
       });
@@ -211,7 +211,7 @@ class FileHandlerRegistry {
 
   private _handlers: AbstractFileHandler<Widget>[] = [];
   private _default: AbstractFileHandler<Widget> = null;
-  private _creators: { [key: string]: (path: string) => Promise<IContentsModel> } = Object.create(null);
+  private _creators: { [key: string]: (path: string, host?: HTMLElement) => Promise<IContentsModel> } = Object.create(null);
 }