summaryrefslogtreecommitdiff
path: root/javax/swing/text/html/HTMLDocument.java
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-11-19 19:37:36 +0000
committerRoman Kennke <roman@kennke.org>2006-11-19 19:37:36 +0000
commitcbf4afe9bb3f1617c04612b18fce873e7ca725c7 (patch)
tree6b981e458b5f76492c481f69fe2f42a68c02880b /javax/swing/text/html/HTMLDocument.java
parentb1d0c928622637949dfb9158cdc3f75851850992 (diff)
downloadclasspath-cbf4afe9bb3f1617c04612b18fce873e7ca725c7.tar.gz
2006-11-19 Roman Kennke <kennke@aicas.com>
* javax/swing/JEditorPane.java (PageStream): New inner class. (PageLoader): New inner class. (loading): New field. (setPage): Implemented asynchronous loading. * javax/swing/text/DefaultStyledDocument.java (ElementBuffer.create): New helper method. (create): Use new ElementBuffer method instead of hack. * javax/swing/text/html/HTMLDocument.java (HTMLReader.flushImpl): New helper method. (HTMLReader.addContent): Use flushImpl(). (HTMLReader.blockClose): Added null check. (HTMLReader.flush): Use flushImpl(). * javax/swing/text/html/HTMLEditorKit.java (createDefaultDocument): Set load priority to 4 and token threshold to 100. * javax/swing/text/html/TableView.java (insertUpdate): Overridden to provide correct view factory. (removeUpdate): Overridden to provide correct view factory. (changedUpdate): Overridden to provide correct view factory.
Diffstat (limited to 'javax/swing/text/html/HTMLDocument.java')
-rw-r--r--javax/swing/text/html/HTMLDocument.java39
1 files changed, 25 insertions, 14 deletions
diff --git a/javax/swing/text/html/HTMLDocument.java b/javax/swing/text/html/HTMLDocument.java
index bbc2368c3..3ff40b437 100644
--- a/javax/swing/text/html/HTMLDocument.java
+++ b/javax/swing/text/html/HTMLDocument.java
@@ -1293,18 +1293,28 @@ public class HTMLDocument extends DefaultStyledDocument
*/
public void flush() throws BadLocationException
{
- DefaultStyledDocument.ElementSpec[] elements;
- elements = new DefaultStyledDocument.ElementSpec[parseBuffer.size()];
- parseBuffer.copyInto(elements);
- parseBuffer.removeAllElements();
- if (offset == 0)
- create(elements);
- else
- insert(offset, elements);
+ flushImpl();
+ }
- offset += HTMLDocument.this.getLength() - offset;
+ /**
+ * Flushes the buffer and handle partial inserts.
+ *
+ */
+ private void flushImpl()
+ throws BadLocationException
+ {
+ int oldLen = getLength();
+ int size = parseBuffer.size();
+ ElementSpec[] elems = new ElementSpec[size];
+ parseBuffer.copyInto(elems);
+ if (oldLen == 0)
+ create(elems);
+ else
+ insert(offset, elems);
+ parseBuffer.removeAllElements();
+ offset += getLength() - oldLen;
}
-
+
/**
* This method is called by the parser to indicate a block of
* text was encountered. Should insert the text appropriately.
@@ -1535,9 +1545,10 @@ public class HTMLDocument extends DefaultStyledDocument
// If the previous tag is a start tag then we insert a synthetic
// content tag.
DefaultStyledDocument.ElementSpec prev;
- prev = (DefaultStyledDocument.ElementSpec)
- parseBuffer.get(parseBuffer.size() - 1);
- if (prev.getType() == DefaultStyledDocument.ElementSpec.StartTagType)
+ prev = parseBuffer.size() > 0 ? (DefaultStyledDocument.ElementSpec)
+ parseBuffer.get(parseBuffer.size() - 1) : null;
+ if (prev != null &&
+ prev.getType() == DefaultStyledDocument.ElementSpec.StartTagType)
{
addContent(new char[]{' '}, 0, 1);
}
@@ -1603,7 +1614,7 @@ public class HTMLDocument extends DefaultStyledDocument
{
try
{
- flush();
+ flushImpl();
}
catch (BadLocationException ble)
{