Przeglądaj źródła

Reinstate save semantics in the example

Steven Silvester 8 lat temu
rodzic
commit
3cb03da48c
3 zmienionych plików z 20 dodań i 12 usunięć
  1. 11 11
      examples/filebrowser/src/index.ts
  2. 1 1
      examples/package.json
  3. 8 0
      src/docmanager/index.ts

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

@@ -67,11 +67,13 @@ function main(): void {
   let sessionsManager = new NotebookSessionManager({ baseUrl: baseUrl });
 
   let widgets: CodeMirrorWidget[] = [];
+  let activeWidget: CodeMirrorWidget;
 
   let opener = {
-    open: (widget: Widget) => {
+    open: (widget: CodeMirrorWidget) => {
       dock.insertTabAfter(widget);
-      widgets.push(widget as CodeMirrorWidget);
+      widgets.push(widget);
+      activeWidget = widget;
     }
   };
 
@@ -102,8 +104,6 @@ function main(): void {
   SplitPanel.setStretch(dock, 1);
   dock.spacing = 8;
 
-  let activeWidget: CodeMirrorWidget;
-
   document.addEventListener('focus', event => {
     for (let i = 0; i < widgets.length; i++) {
       let widget = widgets[i];
@@ -120,30 +120,25 @@ function main(): void {
     selector: '.jp-DirListing',
     handler: () => {
       fbWidget.open();
-      return true;
     }
   }, {
     sequence: ['Ctrl N'], // Add emacs keybinding for select next.
     selector: '.jp-DirListing',
     handler: () => {
       fbWidget.selectNext();
-      return true;
     }
   }, {
     sequence: ['Ctrl P'], // Add emacs keybinding for select previous.
     selector: '.jp-DirListing',
     handler: () => {
       fbWidget.selectPrevious();
-      return true;
     }
   }, {
     sequence: ['Accel S'],
     selector: '.jp-CodeMirrorWidget',
     handler: () => {
-      // TODO
-      //let path = fileHandler.findPath(activeWidget);
-      //fileHandler.save(path);
-      return true;
+      let path = docManager.findPath(activeWidget);
+      docManager.saveFile(path);
     }
   }]);
 
@@ -198,6 +193,11 @@ function main(): void {
       icon: 'fa fa-download',
       handler: () => { fbWidget.download(); }
     }),
+    new MenuItem({
+      text: 'Save',
+      icon: 'fa fa-save',
+      handler: () => { fbWidget.save(); }
+    }),
     new MenuItem({
       text: 'Revert',
       handler: () => { fbWidget.revert(); }

+ 1 - 1
examples/package.json

@@ -4,7 +4,7 @@
   "dependencies": {
     "jupyter-js-ui": "file:..",
     "phosphor-dockpanel": "^0.9.6",
-    "phosphor-keymap": "^0.7.1",
+    "phosphor-keymap": "^0.8.0",
     "phosphor-splitpanel": "^1.0.0-rc.1"
   },
   "scripts": {

+ 8 - 0
src/docmanager/index.ts

@@ -527,6 +527,14 @@ class DocumentManager {
     return widget;
   }
 
+  /**
+   * Find the path given a widget.
+   */
+  findPath(widget: Widget): string {
+    let id = Private.contextProperty.get(widget);
+    return this._contextManager.getPath(id);
+  }
+
   /**
    * Filter messages on the widget.
    */