summaryrefslogtreecommitdiffstats
path: root/libjava/javax/swing/text/PlainDocument.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/text/PlainDocument.java')
-rw-r--r--libjava/javax/swing/text/PlainDocument.java53
1 files changed, 47 insertions, 6 deletions
diff --git a/libjava/javax/swing/text/PlainDocument.java b/libjava/javax/swing/text/PlainDocument.java
index 4a8adfca54d..22808700a03 100644
--- a/libjava/javax/swing/text/PlainDocument.java
+++ b/libjava/javax/swing/text/PlainDocument.java
@@ -37,6 +37,8 @@ exception statement from your version. */
package javax.swing.text;
+import java.util.ArrayList;
+
public class PlainDocument extends AbstractDocument
{
private static final long serialVersionUID = 4758290289196893664L;
@@ -59,14 +61,53 @@ public class PlainDocument extends AbstractDocument
rootElement = createDefaultRoot();
}
+ protected void reindex()
+ {
+ Element[] lines;
+ try
+ {
+ String str = content.getString(0, content.length());
+
+ ArrayList elts = new ArrayList();
+ int j = 0;
+ for (int i = str.indexOf('\n', 0); i != -1; i = str.indexOf('\n', i+1))
+ {
+ elts.add(createLeafElement(rootElement, null, j, i));
+ j = i;
+ }
+
+ if (j < content.length())
+ elts.add(createLeafElement(rootElement, null, j, content.length()));
+
+ lines = new Element[elts.size()];
+ for (int i = 0; i < elts.size(); ++i)
+ lines[i] = (Element) elts.get(i);
+
+ }
+ catch (BadLocationException e)
+ {
+ lines = new Element[1];
+ lines[0] = createLeafElement(rootElement, null, 0, 1);
+ }
+
+ ((BranchElement) rootElement).replace(0, rootElement.getElementCount(), lines);
+ }
+
protected AbstractDocument.AbstractElement createDefaultRoot()
{
- BranchElement rootElement =
- (BranchElement) createBranchElement(null, null);
- Element[] lines = new Element[1];
- lines[0] = createLeafElement(rootElement, null, 0, 1);
- rootElement.replace(0, 0, lines);
- return rootElement;
+ rootElement = createBranchElement(null, null);
+ reindex();
+ return (AbstractElement) rootElement;
+ }
+
+ protected void insertUpdate(DefaultDocumentEvent chng, AttributeSet attr)
+ {
+ reindex();
+ }
+
+ protected void removeUpdate(DefaultDocumentEvent chng)
+ {
+ reindex();
}
public Element getDefaultRootElement()
OpenPOWER on IntegriCloud