Pārlūkot izejas kodu

Merge pull request #10 from afshin/structure

Export IDebuggerSidebar plugin token.
Afshin Taylor Darian 5 gadi atpakaļ
vecāks
revīzija
10b878fbed
3 mainītis faili ar 48 papildinājumiem un 8 dzēšanām
  1. 21 5
      src/index.ts
  2. 12 1
      src/sidebar.ts
  3. 15 2
      src/tokens.ts

+ 21 - 5
src/index.ts

@@ -21,7 +21,7 @@ import { Debugger } from './debugger';
 
 import { DebuggerSidebar } from './sidebar';
 
-import { IDebugger } from './tokens';
+import { IDebugger, IDebuggerSidebar } from './tokens';
 
 /**
  * The command IDs used by the debugger plugin.
@@ -96,11 +96,14 @@ const notebooks: JupyterFrontEndPlugin<void> = {
 /**
  * A plugin providing a condensed sidebar UI for debugging.
  */
-const sidebar: JupyterFrontEndPlugin<void> = {
+const sidebar: JupyterFrontEndPlugin<IDebuggerSidebar> = {
   id: '@jupyterlab/debugger:sidebar',
   optional: [ILayoutRestorer],
   autoStart: true,
-  activate: (app: JupyterFrontEnd, restorer: ILayoutRestorer | null) => {
+  activate: (
+    app: JupyterFrontEnd,
+    restorer: ILayoutRestorer | null
+  ): DebuggerSidebar => {
     const { shell } = app;
     const label = 'Environment';
     const namespace = 'jp-debugger-sidebar';
@@ -113,6 +116,8 @@ const sidebar: JupyterFrontEndPlugin<void> = {
     if (restorer) {
       restorer.add(sidebar, sidebar.id);
     }
+
+    return sidebar;
   }
 };
 
@@ -121,14 +126,15 @@ const sidebar: JupyterFrontEndPlugin<void> = {
  */
 const tracker: JupyterFrontEndPlugin<IDebugger> = {
   id: '@jupyterlab/debugger:tracker',
-  optional: [ILayoutRestorer],
+  optional: [ILayoutRestorer, IDebuggerSidebar],
   requires: [IStateDB],
   provides: IDebugger,
   autoStart: true,
   activate: (
     app: JupyterFrontEnd,
     state: IStateDB,
-    restorer: ILayoutRestorer | null
+    restorer: ILayoutRestorer | null,
+    sidebar: IDebuggerSidebar | null
   ): IDebugger => {
     const tracker = new WidgetTracker<MainAreaWidget<Debugger>>({
       namespace: 'debugger'
@@ -138,6 +144,10 @@ const tracker: JupyterFrontEndPlugin<IDebugger> = {
       execute: args => {
         const id = (args.id as string) || '';
 
+        if (id) {
+          console.log('Debugger ID: ', id);
+        }
+
         if (tracker.find(widget => id === widget.content.model.id)) {
           return;
         }
@@ -161,6 +171,12 @@ const tracker: JupyterFrontEndPlugin<IDebugger> = {
       });
     }
 
+    if (sidebar) {
+      tracker.currentChanged.connect((_, current) => {
+        sidebar.model = current ? current.content.model : null;
+      });
+    }
+
     return tracker;
   }
 };

+ 12 - 1
src/sidebar.ts

@@ -12,5 +12,16 @@ export class DebuggerSidebar extends Widget {
     this.addClass('jp-DebuggerSidebar');
   }
 
-  public model: Debugger.Model | null = null;
+  get model(): Debugger.Model | null {
+    return this._model;
+  }
+  set model(model: Debugger.Model | null) {
+    if (this._model === model) {
+      return;
+    }
+    this._model = model;
+    this.update();
+  }
+
+  private _model: Debugger.Model | null = null;
 }

+ 15 - 2
src/tokens.ts

@@ -15,11 +15,12 @@ import { IObservableDisposable } from '@phosphor/disposable';
 
 import { Debugger } from './debugger';
 
+import { DebuggerSidebar } from './sidebar';
+
 /**
  * An interface describing an application's visual debugger.
  */
-export interface IDebugger
-  extends IWidgetTracker<MainAreaWidget<Debugger>> {}
+export interface IDebugger extends IWidgetTracker<MainAreaWidget<Debugger>> {}
 
 /**
  * A namespace for visual debugger types.
@@ -45,3 +46,15 @@ export namespace IDebugger {
  * A token for a tracker for an application's visual debugger instances.
  */
 export const IDebugger = new Token<IDebugger>('@jupyterlab/debugger');
+
+/**
+ * An interface describing an application's visual debugger.
+ */
+export interface IDebuggerSidebar extends DebuggerSidebar {}
+
+/**
+ * A token for a tracker for an application's visual debugger condensed sidebar.
+ */
+export const IDebuggerSidebar = new Token<IDebuggerSidebar>(
+  '@jupyterlab/debugger-sidebar'
+);