瀏覽代碼

Move save handler functionality to the document manager

Steven Silvester 8 年之前
父節點
當前提交
1113465c6e

+ 1 - 0
src/docmanager/index.ts

@@ -2,3 +2,4 @@
 // Distributed under the terms of the Modified BSD License.
 // Distributed under the terms of the Modified BSD License.
 
 
 export * from './manager';
 export * from './manager';
+export * from './savehandler';

+ 30 - 0
src/docmanager/manager.ts

@@ -21,6 +21,10 @@ import {
   IDisposable
   IDisposable
 } from 'phosphor/lib/core/disposable';
 } from 'phosphor/lib/core/disposable';
 
 
+import {
+  AttachedProperty
+} from 'phosphor/lib/core/properties';
+
 import {
 import {
   Widget
   Widget
 } from 'phosphor/lib/ui/widget';
 } from 'phosphor/lib/ui/widget';
@@ -29,6 +33,10 @@ import {
   DocumentRegistry, Context
   DocumentRegistry, Context
 } from '../docregistry';
 } from '../docregistry';
 
 
+import {
+  SaveHandler
+} from './savehandler';
+
 import {
 import {
   DocumentWidgetManager
   DocumentWidgetManager
 } from './widgetmanager';
 } from './widgetmanager';
@@ -269,6 +277,14 @@ class DocumentManager implements IDisposable {
       factory,
       factory,
       path
       path
     });
     });
+    let handler = new SaveHandler({
+      context,
+      manager: this._serviceManager
+    });
+    Private.saveHandlerProperty.set(context, handler);
+    context.populated.connect(() => {
+      handler.start();
+    });
     context.disposed.connect(() => {
     context.disposed.connect(() => {
       this._contexts.remove(context);
       this._contexts.remove(context);
     });
     });
@@ -332,3 +348,17 @@ namespace DocumentManager {
     open(widget: Widget): void;
     open(widget: Widget): void;
   }
   }
 }
 }
+
+
+/**
+ * A namespace for private data.
+ */
+namespace Private {
+  /**
+   * An attached property for a context save handler.
+   */
+  export
+  const saveHandlerProperty = new AttachedProperty<DocumentRegistry.IContext<DocumentRegistry.IModel>, SaveHandler>({
+    name: 'saveHandler'
+  });
+}

+ 0 - 0
src/docregistry/savehandler.ts → src/docmanager/savehandler.ts


+ 0 - 1
src/docregistry/index.ts

@@ -6,4 +6,3 @@ export * from './default';
 export * from './kernelactions';
 export * from './kernelactions';
 export * from './kernelselector';
 export * from './kernelselector';
 export * from './registry';
 export * from './registry';
-export * from './savehandler';

+ 5 - 1
test/src/docregistry/savehandler.spec.ts → test/src/docmanager/savehandler.spec.ts

@@ -8,9 +8,13 @@ import {
 } from '@jupyterlab/services';
 } from '@jupyterlab/services';
 
 
 import {
 import {
-  Context, DocumentRegistry, TextModelFactory, SaveHandler
+  Context, DocumentRegistry, TextModelFactory
 } from '../../../lib/docregistry';
 } from '../../../lib/docregistry';
 
 
+import {
+  SaveHandler
+} from '../../../lib/docmanager';
+
 import {
 import {
   acceptDialog, waitForDialog
   acceptDialog, waitForDialog
 } from '../utils';
 } from '../utils';

+ 3 - 1
test/src/index.ts

@@ -14,10 +14,12 @@
 
 
 // import './dialog/dialog.spec';
 // import './dialog/dialog.spec';
 
 
+import './docmanager/savehandler.spec';
+
 // import './docregistry/context.spec';
 // import './docregistry/context.spec';
 // import './docregistry/default.spec';
 // import './docregistry/default.spec';
 // import './docregistry/registry.spec';
 // import './docregistry/registry.spec';
-import './docregistry/savehandler.spec';
+
 
 
 // import './filebrowser/model.spec';
 // import './filebrowser/model.spec';