From c5b3a076963517c93b6596f3e0a860be1d80ef80 Mon Sep 17 00:00:00 2001 From: Florrie Date: Tue, 12 Jun 2018 23:55:06 -0300 Subject: Add WrapLabel UI element --- ui/Label.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'ui/Label.js') diff --git a/ui/Label.js b/ui/Label.js index 850edc0..faeee98 100644 --- a/ui/Label.js +++ b/ui/Label.js @@ -5,20 +5,23 @@ const DisplayElement = require('./DisplayElement') module.exports = class Label extends DisplayElement { // A simple text display. Automatically adjusts size to fit text. - constructor(text='') { + constructor(text = '') { super() this.text = text this.textAttributes = [] } + fixLayout() { + this.w = this.text.length + } + drawTo(writable) { if (this.textAttributes.length) { writable.write(ansi.setAttributes(this.textAttributes)) } - writable.write(ansi.moveCursor(this.absTop, this.absLeft)) - writable.write(this.text) + this.writeTextTo(writable) if (this.textAttributes.length) { writable.write(ansi.resetAttributes()) @@ -27,10 +30,14 @@ module.exports = class Label extends DisplayElement { super.drawTo(writable) } + writeTextTo(writable) { + writable.write(ansi.moveCursor(this.absTop, this.absLeft)) + writable.write(this.text) + } + set text(newText) { this._text = newText - - this.w = newText.length + this.fixLayout() } get text() { -- cgit 1.3.0-6-gf8a5