changeset 21:cfb61200e181

Basic keyboard input now works.
author Atul Varma <varmaa@toolness.com>
date Sun, 11 May 2008 18:19:08 -0700
parents a6644169142b
children 5c40b7b7e6c7
files trivial-zui.js
diffstat 1 files changed, 44 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/trivial-zui.js	Sun May 11 17:43:36 2008 -0700
+++ b/trivial-zui.js	Sun May 11 18:19:08 2008 -0700
@@ -1,10 +1,51 @@
+var BACKSPACE_KEYCODE = 8;
+var RETURN_KEYCODE = 13;
+
 function TrivialZui() {
     this._activeWindow = 0;
+    this._inputString = "";
+    this._currentCallback = null;
     var self = this;
 
     this.__proto__ = {
+        _windowKeypress: function(event) {
+            if (!$("#current-input"))
+                return;
+
+            var oldInputString = self._inputString;
+
+            if (event.charCode) {
+                var newChar = String.fromCharCode(event.charCode);
+                self._inputString += newChar;
+            } else {
+                switch (event.keyCode) {
+                case BACKSPACE_KEYCODE:
+                    if (self._inputString) {
+                        self._inputString = self._inputString.slice(0, -1);
+                    }
+                    break;
+                case RETURN_KEYCODE:
+                    var finalInputString = self._inputString;
+                    var callback = self._currentCallback;
+
+                    self._inputString = "";
+                    self._currentCallback = null;
+                    $("#current-input").replaceWith(
+                        ('<span class="finished-input">' + finalInputString +
+                         '</span><br/>')
+                        );
+                    callback(finalInputString);
+                }
+            }
+            if ($("#current-input") &&
+                oldInputString != self._inputString) {
+                $("#current-input").text(self._inputString);
+            }
+        },
+
         onLineInput: function(callback) {
-            throw Error("TODO: Implement this!");
+            self._currentCallback = callback;
+            $("#content").append('<span id="current-input"></span>');
         },
 
         onQuit: function() {
@@ -30,6 +71,8 @@
             }
         }
     };
+
+    $(window).keypress(self._windowKeypress);
 }
 
 $(document).ready( function() {