Author: rwhitcomb Date: Mon Sep 9 04:00:36 2013 New Revision: 1520958 URL: http://svn.apache.org/r1520958 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. This is a merge of revision 1519859 from trunk to branches/2.0.x. Modified: pivot/branches/2.0.x/ (props changed) pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/TextPane.java Propchange: pivot/branches/2.0.x/ ------------------------------------------------------------------------------ Merged /pivot/trunk:r1519859 Modified: pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/TextPane.java URL: http://svn.apache.org/viewvc/pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/TextPane.java?rev=1520958&r1=1520957&r2=1520958&view=diff ============================================================================== --- pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/TextPane.java (original) +++ pivot/branches/2.0.x/wtk/src/org/apache/pivot/wtk/TextPane.java Mon Sep 9 04:00:36 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.