*
* 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"),
*/
package jexer;
+import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import jexer.bits.CellAttributes;
+import jexer.bits.StringUtils;
import jexer.event.TKeypressEvent;
import jexer.event.TMouseEvent;
import static jexer.TKeypress.kbDown;
* Available text justifications.
*/
public enum Justification {
+
+ /**
+ * Not justified at all, use spacing as provided by the client.
+ */
+ NONE,
+
/**
* Left-justified text.
*/
int topY = 0;
for (int i = begin; i < lines.size(); i++) {
String line = lines.get(i);
- if (hScroller.getValue() < line.length()) {
+ if (hScroller.getValue() < StringUtils.width(line)) {
line = line.substring(hScroller.getValue());
} else {
line = "";
}
String formatString = "%-" + Integer.toString(getWidth() - 1) + "s";
- getScreen().putStringXY(0, topY, String.format(formatString, line),
- color);
+ putStringXY(0, topY, String.format(formatString, line), color);
topY++;
if (topY >= (getHeight() - 1)) {
// Pad the rest with blank lines
for (int i = topY; i < (getHeight() - 1); i++) {
- getScreen().hLineXY(0, i, getWidth() - 1, ' ', color);
+ hLineXY(0, i, getWidth() - 1, ' ', color);
}
}
String[] paragraphs = text.split("\n\n");
for (String p : paragraphs) {
switch (justification) {
+ case NONE:
+ lines.addAll(Arrays.asList(p.split("\n")));
+ break;
case LEFT:
lines.addAll(jexer.bits.StringUtils.left(p,
getWidth() - 1));
* @param line new line to add
*/
public void addLine(final String line) {
- if (text.length() == 0) {
+ if (StringUtils.width(text) == 0) {
text = line;
} else {
text += "\n\n";
private void computeBounds() {
maxLineWidth = 0;
for (String line : lines) {
- if (line.length() > maxLineWidth) {
- maxLineWidth = line.length();
+ if (StringUtils.width(line) > maxLineWidth) {
+ maxLineWidth = StringUtils.width(line);
}
}