 +   * Event handler registered to both radio buttons.
 +   */
 +  onChange: function() {
-+    this._current = this.gcliRadio.selected ? "gcli" : "js";
-+    this.deck.selectedIndex = this.gcliRadio.selected ? 1 : 0;
++    if (this.gcliRadio.selected) {
++      this._current = "gcli";
++      this.deck.selectedIndex = 1;
++    }
++    else {
++      this._current = "js";
++      this.deck.selectedIndex = 0;
++    }
 +  },
 +
 +  /**

   }
   catch (ex) {
     Cu.reportError(ex);
@@ -3268,8 +3290,13 @@ HeadsUpDisplay.prototype = {
         this.outputNode.ensureIndexIsVisible(lastIndex);
       }
 

+    // creating a new outputNode - this is so we can just attach the inputNode
+    // to a normal HeadsUpDisplay console output, and re-use code.
+
+    if (this.console == undefined) {
+      throw new Error("this.console == undefined: can't happen");
+    }
+
+    this.element = this.document.createElement("hbox");
+    this.element.setAttribute("class", "gcliterm-parent-node");
+    this.element.setAttribute("flex", "1");
+
+    // Generate and attach the UI for an entire JS Workspace or
+    // just the input node used under the console output
+    this.completeNode = this.document.createElement("div");
+    this.completeNode.setAttribute("class", "gcliterm-complete-node");
+    this.completeNode.setAttribute("aria-live", "polite");
+
+    this.inputNode = this.document.createElement("textbox");
+    this.inputNode.setAttribute("class", "gcliterm-input-node");
+    this.inputNode.setAttribute("multiline", "true");
+    this.inputNode.setAttribute("rows", "1");
+
+    this.inputStack = this.document.createElement("stack");
+    this.inputStack.setAttribute("class", "gcliterm-stack-node");
+    this.inputStack.setAttribute("flex", "1");
+    this.inputStack.appendChild(this.completeNode);
