Explorar o código

Merge pull request #10 from blink1073/fix-create-nodes

Update all uses of createNode
Afshin Darian %!s(int64=8) %!d(string=hai) anos
pai
achega
1583d7b77d

+ 56 - 48
src/filebrowser/dialogs.ts

@@ -78,25 +78,11 @@ function createNewDialog(model: FileBrowserModel, manager: DocumentManager, host
  * A widget used to open files with a specific widget/kernel.
  */
 class OpenWithHandler extends Widget {
-  /**
-   * Create the node for an open with handler.
-   */
-  static createNode(): HTMLElement {
-    let body = document.createElement('div');
-    let name = document.createElement('span');
-    let widgetDropdown = document.createElement('select');
-    let kernelDropdown = document.createElement('select');
-    body.appendChild(name);
-    body.appendChild(widgetDropdown);
-    body.appendChild(kernelDropdown);
-    return body;
-  }
-
   /**
    * Construct a new "open with" dialog.
    */
   constructor(path: string, manager: DocumentManager, sessions: ISession.IModel[], host?: HTMLElement) {
-    super({ node: OpenWithHandler.createNode() });
+    super({ node: Private.createOpenWithNode() });
     this._manager = manager;
     this._host = host;
     this._sessions = sessions;
@@ -175,7 +161,7 @@ class OpenWithHandler extends Widget {
     let preference = this._manager.registry.getKernelPreference(
       this._ext, widgetName
     );
-    updateKernels(preference, this.kernelDropdown, this._manager.kernelspecs, this._sessions);
+    Private.updateKernels(preference, this.kernelDropdown, this._manager.kernelspecs, this._sessions);
   }
 
   private _ext = '';
@@ -189,27 +175,11 @@ class OpenWithHandler extends Widget {
  * A widget used to create new files.
  */
 class CreateNewHandler extends Widget {
-  /**
-   * Create the node for a create new handler.
-   */
-  static createNode(): HTMLElement {
-    let body = document.createElement('div');
-    let name = document.createElement('input');
-    let fileTypeDropdown = document.createElement('select');
-    let widgetDropdown = document.createElement('select');
-    let kernelDropdown = document.createElement('select');
-    body.appendChild(name);
-    body.appendChild(fileTypeDropdown);
-    body.appendChild(widgetDropdown);
-    body.appendChild(kernelDropdown);
-    return body;
-  }
-
   /**
    * Construct a new "create new" dialog.
    */
   constructor(model: FileBrowserModel, manager: DocumentManager, sessions: ISession.IModel[]) {
-    super({ node: CreateNewHandler.createNode() });
+    super({ node: Private.createCreateNewNode() });
     this._model = model;
     this._manager = manager;
     this._sessions = sessions;
@@ -382,7 +352,7 @@ class CreateNewHandler extends Widget {
     let ext = this.ext;
     let widgetName = this.widgetDropdown.value;
     let preference = this._manager.registry.getKernelPreference(ext, widgetName);
-    updateKernels(preference, this.kernelDropdown, this._manager.kernelspecs, this._sessions);
+    Private.updateKernels(preference, this.kernelDropdown, this._manager.kernelspecs, this._sessions);
   }
 
   private _model: FileBrowserModel = null;
@@ -395,21 +365,59 @@ class CreateNewHandler extends Widget {
 
 
 /**
- * Update a kernel listing based on a kernel preference.
+ * A namespace for private data.
  */
-function updateKernels(preference: IKernelPreference, node: HTMLSelectElement, specs: IKernel.ISpecModels, running: ISession.IModel[]): void {
-  if (!preference.canStartKernel) {
-    while (node.firstChild) {
-      node.removeChild(node.firstChild);
-    }
-    node.disabled = true;
-    return;
+namespace Private {
+  /**
+   * Create the node for an open with handler.
+   */
+  export
+  function createOpenWithNode(): HTMLElement {
+    let body = document.createElement('div');
+    let name = document.createElement('span');
+    let widgetDropdown = document.createElement('select');
+    let kernelDropdown = document.createElement('select');
+    body.appendChild(name);
+    body.appendChild(widgetDropdown);
+    body.appendChild(kernelDropdown);
+    return body;
   }
-  let lang = preference.language;
-  node.disabled = false;
-  populateKernels(node, specs, running, lang);
-  // Select the "null" valued kernel if we do not prefer a kernel.
-  if (!preference.preferKernel) {
-    node.value = 'null';
+
+  /**
+   * Create the node for a create new handler.
+   */
+  export
+  function createCreateNewNode(): HTMLElement {
+    let body = document.createElement('div');
+    let name = document.createElement('input');
+    let fileTypeDropdown = document.createElement('select');
+    let widgetDropdown = document.createElement('select');
+    let kernelDropdown = document.createElement('select');
+    body.appendChild(name);
+    body.appendChild(fileTypeDropdown);
+    body.appendChild(widgetDropdown);
+    body.appendChild(kernelDropdown);
+    return body;
+  }
+
+  /**
+   * Update a kernel listing based on a kernel preference.
+   */
+  export
+  function updateKernels(preference: IKernelPreference, node: HTMLSelectElement, specs: IKernel.ISpecModels, running: ISession.IModel[]): void {
+    if (!preference.canStartKernel) {
+      while (node.firstChild) {
+        node.removeChild(node.firstChild);
+      }
+      node.disabled = true;
+      return;
+    }
+    let lang = preference.language;
+    node.disabled = false;
+    populateKernels(node, specs, running, lang);
+    // Select the "null" valued kernel if we do not prefer a kernel.
+    if (!preference.preferKernel) {
+      node.value = 'null';
+    }
   }
 }

+ 9 - 8
src/notebook/notebook/toolbar.ts

@@ -104,18 +104,11 @@ class NotebookToolbar extends Widget {
  */
 export
 class ToolbarButton extends Widget {
-  /**
-   * Create the node for the toolbar button.
-   */
-  static createNode(): HTMLElement {
-    return document.createElement('span');
-  }
-
   /**
    * Construct a new toolbar button.
    */
   constructor(options: ToolbarButton.IOptions = {}) {
-    super();
+    super({ node: Private.createNode() });
     options = options || {};
     this.addClass(TOOLBAR_BUTTON);
     this._onClick = options.onClick;
@@ -224,4 +217,12 @@ namespace Private {
    */
   export
   const nameProperty = new AttachedProperty<Widget, string>({ name: 'name' });
+
+  /**
+   * Create the node for the toolbar button.
+   */
+  export
+  function createNode(): HTMLElement {
+    return document.createElement('span');
+  }
 }

+ 22 - 14
src/notebook/output-area/widget.ts

@@ -852,24 +852,11 @@ class OutputWidget extends Widget {
  * A widget that handles stdin requests from the kernel.
  */
  class InputWidget extends Widget {
-  /**
-   * Create the node for an InputWidget.
-   */
-  static createNode(): HTMLElement {
-    let node = document.createElement('div');
-    let prompt = document.createElement('span');
-    prompt.className = STDIN_PROMPT_CLASS;
-    let input = document.createElement('input');
-    input.className = STDIN_INPUT_CLASS;
-    node.appendChild(prompt);
-    node.appendChild(input);
-    return node;
-  }
   /**
    * Construct a new input widget.
    */
   constructor(request: OutputAreaModel.IInputRequest) {
-    super();
+    super({ node: Private.createInputWidgetNode() });
     this.addClass(STDIN_CLASS);
     let text = this.node.firstChild as HTMLElement;
     text.textContent = request.prompt;
@@ -951,3 +938,24 @@ namespace OutputWidget {
 // Define the signals for the `OutputAreaWidget` class.
 defineSignal(OutputAreaWidget.prototype, 'modelChanged');
 defineSignal(OutputAreaWidget.prototype, 'modelDisposed');
+
+
+/**
+ * A namespace for private data.
+ */
+namespace Private {
+  /**
+   * Create the node for an InputWidget.
+   */
+  export
+  function createInputWidgetNode(): HTMLElement {
+    let node = document.createElement('div');
+    let prompt = document.createElement('span');
+    prompt.className = STDIN_PROMPT_CLASS;
+    let input = document.createElement('input');
+    input.className = STDIN_INPUT_CLASS;
+    node.appendChild(prompt);
+    node.appendChild(input);
+    return node;
+  }
+}