瀏覽代碼

wip open with

Steven Silvester 8 年之前
父節點
當前提交
f507382f6b
共有 3 個文件被更改,包括 21 次插入1 次删除
  1. 7 0
      src/filebrowser/browser.ts
  2. 11 0
      src/filebrowser/listing.ts
  3. 3 1
      src/filebrowser/plugin.ts

+ 7 - 0
src/filebrowser/browser.ts

@@ -289,6 +289,13 @@ class FileBrowserWidget extends Widget {
     this._listing.selectPrevious();
   }
 
+  /**
+   * Find a path given a click.
+   */
+  pathForClick(event: MouseEvent): string {
+    return this._listing.pathForClick(event);
+  }
+
   /**
    * A message handler invoked on an `'after-attach'` message.
    */

+ 11 - 0
src/filebrowser/listing.ts

@@ -499,6 +499,17 @@ class DirListing extends Widget {
     return this._selection[name] === true;
   }
 
+  /**
+   * Find a path given a click.
+   */
+  pathForClick(event: MouseEvent): string {
+    let items = this.sortedItems;
+    let index = utils.hitTestNodes(this._items, event.clientX, event.clientY);
+    if (index !== -1) {
+      return items[index].path;
+    }
+  }
+
   /**
    * Handle the DOM events for the directory listing.
    *

+ 3 - 1
src/filebrowser/plugin.ts

@@ -107,7 +107,6 @@ function activateFileBrowser(app: Application, provider: ServiceManager, registr
     manager: docManager,
     opener
   });
-  let menu = createMenu(fbWidget);
 
   // Add a context menu to the dir listing.
   let node = fbWidget.node.getElementsByClassName('jp-DirListing-content')[0];
@@ -115,6 +114,9 @@ function activateFileBrowser(app: Application, provider: ServiceManager, registr
     event.preventDefault();
     let x = event.clientX;
     let y = event.clientY;
+    let path = fbWidget.pathForClick(event);
+    let ext = path.split('.').pop();
+    let widgets = registry.listWidgetFactories(ext);
     menu.popup(x, y);
   });