From eb607ac20168e93b3cd66df17117cdc0a7becf9d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 4 Dec 2006 21:20:30 +0000 Subject: * javax/swing/JEditorPane.java (PageLoader.in): Made a PageStream. (PageLoader.page): Made package local. (PageLoader.run): Don't reset loader. (PageLoader.cancel): New method. (loading): Renamed to loader. (getPage): Return loader.page. (setPage): Always set loader. Never reset to null. --- ChangeLog | 10 ++++++++++ javax/swing/JEditorPane.java | 47 ++++++++++++++++++-------------------------- 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 21ca3de55..fa3939550 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-12-03 Mark Wielaard + + * javax/swing/JEditorPane.java (PageLoader.in): Made a PageStream. + (PageLoader.page): Made package local. + (PageLoader.run): Don't reset loader. + (PageLoader.cancel): New method. + (loading): Renamed to loader. + (getPage): Return loader.page. + (setPage): Always set loader. Never reset to null. + 2006-12-03 Mark Wielaard * javax/swing/plaf/basic/BasicTreeUI.java (paint): Check whether diff --git a/javax/swing/JEditorPane.java b/javax/swing/JEditorPane.java index 4007169bd..4f7ad7119 100644 --- a/javax/swing/JEditorPane.java +++ b/javax/swing/JEditorPane.java @@ -582,13 +582,13 @@ public class JEditorPane extends JTextComponent implements Runnable { private Document doc; - private InputStream in; + private PageStream in; private URL old; - private URL page; - PageLoader(Document doc, InputStream in, int prio, URL old, URL page) + URL page; + PageLoader(Document doc, InputStream in, URL old, URL page) { this.doc = doc; - this.in = in; + this.in = new PageStream(in); this.old = old; this.page = page; } @@ -598,10 +598,6 @@ public class JEditorPane extends JTextComponent try { read(in, doc); - synchronized (JEditorPane.this) - { - loading = null; - } } catch (IOException ex) { @@ -621,7 +617,12 @@ public class JEditorPane extends JTextComponent } }); } - } + } + } + + void cancel() + { + in.cancel(); } } @@ -640,7 +641,7 @@ public class JEditorPane extends JTextComponent /** * The currently loading stream, if any. */ - private PageStream loading; + private PageLoader loader; public JEditorPane() { @@ -885,7 +886,7 @@ public class JEditorPane extends JTextComponent public URL getPage() { - return (URL) getDocument().getProperty(Document.StreamDescriptionProperty); + return loader != null ? loader.page : null; } protected InputStream getStream(URL page) @@ -1075,15 +1076,10 @@ public class JEditorPane extends JTextComponent Document doc = editorKit.createDefaultDocument(); doc.putProperty(Document.StreamDescriptionProperty, page); - // Cancel loading stream, if there is any. - synchronized (this) - { - if (loading != null) - { - loading.cancel(); - loading = null; - } - } + if (loader != null) + loader.cancel(); + loader = new PageLoader(doc, in, old, page); + int prio = -1; if (doc instanceof AbstractDocument) { @@ -1094,20 +1090,15 @@ public class JEditorPane extends JTextComponent { // Load asynchronously. setDocument(doc); - synchronized (this) - { - loading = new PageStream(in); - } - PageLoader loader = new PageLoader(doc, loading, prio, old, - page); - Thread loadThread = new Thread(loader); + Thread loadThread = new Thread(loader, + "JEditorPane.PageLoader"); + loadThread.setDaemon(true); loadThread.setPriority(prio); loadThread.start(); } else { // Load synchronously. - PageLoader loader = new PageLoader(doc, in, prio, old, page); loader.run(); setDocument(doc); } -- cgit v1.2.1