#46 StretchLayoutManager working
[fanfix.git] / src / jexer / TText.java
index 44176a4efa8979143b77cb74788c308824ade5c1..4791fdc5e38e242e707a8ed97d64d618895463d1 100644 (file)
@@ -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"),
  */
 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;
@@ -57,6 +59,12 @@ public class TText extends TScrollableWidget {
      * Available text justifications.
      */
     public enum Justification {
+
+        /**
+         * Not justified at all, use spacing as provided by the client.
+         */
+        NONE,
+
         /**
          * Left-justified text.
          */
@@ -177,14 +185,13 @@ public class TText extends TScrollableWidget {
         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)) {
@@ -194,7 +201,7 @@ public class TText extends TScrollableWidget {
 
         // 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);
         }
 
     }
@@ -260,6 +267,9 @@ public class TText extends TScrollableWidget {
         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));
@@ -314,7 +324,7 @@ public class TText extends TScrollableWidget {
      * @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";
@@ -329,8 +339,8 @@ public class TText extends TScrollableWidget {
     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);
             }
         }