*
* 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"),
import jexer.bits.CellAttributes;
import jexer.bits.GraphicsChars;
+import jexer.bits.StringUtils;
import jexer.event.TCommandEvent;
import jexer.event.TKeypressEvent;
import jexer.event.TMouseEvent;
* @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;
}
/**
/**
* 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, "");
}
// ------------------------------------------------------------------------
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);
}
}