From cbf4afe9bb3f1617c04612b18fce873e7ca725c7 Mon Sep 17 00:00:00 2001 From: Roman Kennke Date: Sun, 19 Nov 2006 19:37:36 +0000 Subject: 2006-11-19 Roman Kennke * 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. --- javax/swing/text/html/HTMLDocument.java | 39 ++++++++++++++++++++------------ javax/swing/text/html/HTMLEditorKit.java | 9 +++++++- javax/swing/text/html/TableView.java | 27 ++++++++++++++++++++++ 3 files changed, 60 insertions(+), 15 deletions(-) (limited to 'javax/swing/text/html') 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) { diff --git a/javax/swing/text/html/HTMLEditorKit.java b/javax/swing/text/html/HTMLEditorKit.java index df6be5a4b..cc47b6dd5 100644 --- a/javax/swing/text/html/HTMLEditorKit.java +++ b/javax/swing/text/html/HTMLEditorKit.java @@ -1094,8 +1094,15 @@ public class HTMLEditorKit */ public Document createDefaultDocument() { - HTMLDocument document = new HTMLDocument(getStyleSheet()); + // Protect the shared stylesheet. + StyleSheet styleSheet = getStyleSheet(); + StyleSheet ss = new StyleSheet(); + ss.addStyleSheet(styleSheet); + + HTMLDocument document = new HTMLDocument(ss); document.setParser(getParser()); + document.setAsynchronousLoadPriority(4); + document.setTokenThreshold(100); return document; } diff --git a/javax/swing/text/html/TableView.java b/javax/swing/text/html/TableView.java index fb62c1b1a..0bdbccd44 100644 --- a/javax/swing/text/html/TableView.java +++ b/javax/swing/text/html/TableView.java @@ -38,9 +38,12 @@ exception statement from your version. */ package javax.swing.text.html; +import java.awt.Shape; + import gnu.javax.swing.text.html.css.Length; import javax.swing.SizeRequirements; +import javax.swing.event.DocumentEvent; import javax.swing.text.AttributeSet; import javax.swing.text.BoxView; import javax.swing.text.Element; @@ -745,4 +748,28 @@ class TableView offsets[i] += (i + 1) * cellSpacing; } } + + /** + * Overridden to replace view factory with this one. + */ + public void insertUpdate(DocumentEvent e, Shape a, ViewFactory f) + { + super.insertUpdate(e, a, this); + } + + /** + * Overridden to replace view factory with this one. + */ + public void removeUpdate(DocumentEvent e, Shape a, ViewFactory f) + { + super.removeUpdate(e, a, this); + } + + /** + * Overridden to replace view factory with this one. + */ + public void changedUpdate(DocumentEvent e, Shape a, ViewFactory f) + { + super.changedUpdate(e, a, this); + } } -- cgit v1.2.1