diff --git a/core/button_view.js b/core/button_view.js new file mode 100644 index 00000000..c66fd33b --- /dev/null +++ b/core/button_view.js @@ -0,0 +1,29 @@ +/* jslint node: true */ +'use strict'; + +var TextView = require('./text_view.js').TextView; +var util = require('util'); +var assert = require('assert'); + +function ButtonView(client, options) { + options.acceptsFocus = miscUtil.valueWithDefault(options.acceptsFocus, true); + options.acceptsInput = miscUtil.valueWithDefault(options.acceptsInput, true); + + TextView.call(this, client, options); +} + +util.inherits(ButtonView, TextView); + +ButtonView.prototype.onKeyPress = function(key, isSpecial) { + // we accept input so this must be implemented -- nothing to do here, however + // :TODO: Move this to View along with default asserts; update EditTextView to call View +} + +ButtonView.prototype.onSpecialKeyPress = function(keyName) { + assert(this.hasFocus); + assert(this.acceptsInput); + assert(this.specialKeyMap); + + // :TODO: see notes about making base handle 'enter' key(s) + // ...just make enter = enter | space for a button by default +} \ No newline at end of file diff --git a/core/edit_text_view.js b/core/edit_text_view.js index 89f8b6e9..a8329c4d 100644 --- a/core/edit_text_view.js +++ b/core/edit_text_view.js @@ -58,9 +58,11 @@ EditTextView.prototype.onSpecialKeyPress = function(keyName) { } else if(this.isSpecialKeyMapped('enter', keyName)) { if(this.multiLine) { } else { + // :TODO: by default handle this in View/base. Can always "absorb" the call here for special handling this.emit('action', 'accepted'); } } else if(this.isSpecialKeyMapped('next', keyName)) { + // :TODO: by default handle next in View/base this.emit('action', 'next'); } }; \ No newline at end of file