You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2013/09/03 23:41:32 UTC

svn commit: r1519859 - /pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java

Author: rwhitcomb
Date: Tue Sep  3 21:41:32 2013
New Revision: 1519859

URL: http://svn.apache.org/r1519859
Log:
Add convenience methods to TextPane to deal with text-only documents:
* "getText()" that returns a String of all the text in the document
* "setText()" that constructs a document from the String consisting of
  a number of paragraphs, one for each line of the string.

These two methods allow TextPane to be used as a drop-in replacement
for TextArea, but where additional styling may be needed at some point.

Modified:
    pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java?rev=1519859&r1=1519858&r2=1519859&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java Tue Sep  3 21:41:32 2013
@@ -667,6 +667,49 @@ public class TextPane extends Container 
         // TODO
     }
 
+    private void addToText(StringBuilder text, Element element) {
+        for (Node node : element) {
+            if (node instanceof TextNode) {
+                text.append(((TextNode)node).getCharacters());
+            }
+            else if (node instanceof Element) {
+                addToText(text, (Element)node);
+            }
+            // TODO: anything more that could/should be handled?
+        }
+        if (element instanceof Paragraph) {
+            text.append('\n');
+        }
+    }
+
+    /**
+     * Convenience method to get all the text from the current document
+     * into a single string.
+     * @see #setText
+     */
+    public String getText() {
+        Document document = getDocument();
+        if (document != null && getCharacterCount() != 0) {
+            StringBuilder text = new StringBuilder(getCharacterCount());
+            addToText(text, document);
+            return text.toString();
+        }
+        return null;
+    }
+
+    /**
+     * Convenience method to create a text-only document consisting
+     * of one paragraph per line of the given text.
+     */
+    public void setText(String text) {
+        Document document = new Document();
+        String[] lines = text.split("\r?\n");
+        for (int i = 0; i < lines.length; i++) {
+            Paragraph paragraph = new Paragraph(lines[i]);
+            document.add(paragraph);
+        }
+        setDocument(document);
+    }
 
     /**
      * Returns the starting index of the selection.