20 package net.sf.gridarta.gui.dialog.help;
22 import java.awt.Component;
23 import java.awt.Cursor;
25 import java.io.IOException;
26 import java.net.MalformedURLException;
28 import java.util.logging.Level;
29 import java.util.logging.Logger;
30 import javax.swing.JEditorPane;
31 import javax.swing.JScrollPane;
32 import javax.swing.JViewport;
33 import javax.swing.SwingUtilities;
34 import javax.swing.event.HyperlinkEvent;
35 import javax.swing.event.HyperlinkEvent.EventType;
36 import javax.swing.event.HyperlinkListener;
37 import javax.swing.text.Document;
39 import org.jetbrains.annotations.NotNull;
40 import org.jetbrains.annotations.Nullable;
46 class HtmlPane extends JScrollPane implements HyperlinkListener {
52 private static final Logger
LOG = Logger.getLogger(
"HtmlPane.class");
63 private final JEditorPane
html;
76 final String s =
"file:" + file.getAbsolutePath();
77 html =
new JEditorPane(s);
84 LOG.info(
"trying: HelpFiles/" + fileName);
85 final URL url2 = ClassLoader.getSystemResource(
"HelpFiles/" + fileName);
87 LOG.info(
"Failed to open help file '" + fileName +
"'!");
88 throw new RuntimeException(
"failed to open help file: " + fileName);
90 html =
new JEditorPane(url2);
92 html =
new JEditorPane(url1);
96 html.setEditable(
false);
97 html.addHyperlinkListener(
this);
98 final JViewport vp = getViewport();
105 getViewport().putClientProperty(
"EnableWindowBlit", Boolean.TRUE);
106 vp.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
111 setAutoscrolls(
true);
112 }
catch (
final NullPointerException e) {
114 throw new RuntimeException(e);
115 }
catch (
final MalformedURLException e) {
116 LOG.log(Level.WARNING,
"Malformed URL: %s", e);
117 throw new RuntimeException(e);
118 }
catch (
final IOException e) {
119 LOG.log(Level.WARNING,
"IOException: %s", e);
120 throw new RuntimeException(e);
130 HtmlPane(@NotNull
final String type, @NotNull
final String text) {
132 html =
new JEditorPane(type, text);
133 html.setEditable(
false);
134 html.addHyperlinkListener(
this);
135 final JViewport vp = getViewport();
142 getViewport().putClientProperty(
"EnableWindowBlit", Boolean.TRUE);
143 vp.setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
149 setAutoscrolls(
true);
158 if (e.getEventType().equals(EventType.ACTIVATED)) {
173 final Cursor cursor =
html.getCursor();
174 final Cursor waitCursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
175 html.setCursor(waitCursor);
176 SwingUtilities.invokeLater(
new PageLoader(u, cursor));
214 final Component parent =
html.getParent();
217 final Document doc =
html.getDocument();
220 }
catch (
final IOException ioe) {
221 html.setDocument(doc);
228 SwingUtilities.invokeLater(
this);