X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2FTStatusBar.java;h=fbd79da850c320f0fa3a7a54696d7da4ed31b857;hb=HEAD;hp=f3b8038d41518c1245dccd2a18685cc663e8ec79;hpb=051e29138b18fb4b731a72f8727475b10e4c74e4;p=fanfix.git diff --git a/src/jexer/TStatusBar.java b/src/jexer/TStatusBar.java index f3b8038..fbd79da 100644 --- a/src/jexer/TStatusBar.java +++ b/src/jexer/TStatusBar.java @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (C) 2017 Kevin Lamonte + * Copyright (C) 2019 Kevin Lamonte * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -33,6 +33,7 @@ import java.util.List; import jexer.bits.CellAttributes; import jexer.bits.GraphicsChars; +import jexer.bits.StringUtils; import jexer.event.TCommandEvent; import jexer.event.TKeypressEvent; import jexer.event.TMouseEvent; @@ -97,7 +98,8 @@ public class TStatusBar extends TWidget { * @return the number of columns this takes when drawn */ public int width() { - return this.label.length() + this.key.toString().length() + 3; + return StringUtils.width(this.label) + + StringUtils.width(this.key.toString()) + 3; } /** @@ -125,24 +127,26 @@ public class TStatusBar extends TWidget { /** * Public constructor. * - * @param parent parent widget + * @param window the window associated with this status bar * @param text text for the bar on the bottom row */ - public TStatusBar(final TWidget parent, final String text) { + public TStatusBar(final TWindow window, final String text) { - // Set parent and window - super(parent, false, 0, 0, text.length(), 1); + // TStatusBar is a parentless widget, because TApplication handles + // its drawing and event routing directly. + super(null, false, 0, 0, StringUtils.width(text), 1); this.text = text; + setWindow(window); } /** * Public constructor. * - * @param parent parent widget + * @param window the window associated with this status bar */ - public TStatusBar(final TWidget parent) { - this(parent, ""); + public TStatusBar(final TWindow window) { + this(window, ""); } // ------------------------------------------------------------------------ @@ -259,35 +263,34 @@ public class TStatusBar extends TWidget { int row = getScreen().getHeight() - 1; int width = getScreen().getWidth(); - getScreen().hLineXY(0, row, width, ' ', barColor); + hLineXY(0, row, width, ' ', barColor); int col = 0; for (TStatusBarKey key: keys) { String keyStr = key.key.toString(); if (key.selected) { - getScreen().putCharXY(col++, row, ' ', selectedColor); - getScreen().putStringXY(col, row, keyStr, selectedColor); - col += keyStr.length(); - getScreen().putCharXY(col++, row, ' ', selectedColor); - getScreen().putStringXY(col, row, key.label, selectedColor); - col += key.label.length(); - getScreen().putCharXY(col++, row, ' ', selectedColor); + putCharXY(col++, row, ' ', selectedColor); + putStringXY(col, row, keyStr, selectedColor); + col += StringUtils.width(keyStr); + putCharXY(col++, row, ' ', selectedColor); + putStringXY(col, row, key.label, selectedColor); + col += StringUtils.width(key.label); + putCharXY(col++, row, ' ', selectedColor); } else { - getScreen().putCharXY(col++, row, ' ', barColor); - getScreen().putStringXY(col, row, keyStr, keyColor); - col += keyStr.length() + 1; - getScreen().putStringXY(col, row, key.label, barColor); - col += key.label.length(); - getScreen().putCharXY(col++, row, ' ', barColor); + putCharXY(col++, row, ' ', barColor); + putStringXY(col, row, keyStr, keyColor); + col += StringUtils.width(keyStr) + 1; + putStringXY(col, row, key.label, barColor); + col += StringUtils.width(key.label); + putCharXY(col++, row, ' ', barColor); } } if (text.length() > 0) { if (keys.size() > 0) { - getScreen().putCharXY(col++, row, GraphicsChars.VERTICAL_BAR, - barColor); + putCharXY(col++, row, GraphicsChars.VERTICAL_BAR, barColor); } - getScreen().putCharXY(col++, row, ' ', barColor); - getScreen().putStringXY(col, row, text, barColor); + putCharXY(col++, row, ' ', barColor); + putStringXY(col, row, text, barColor); } }