home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Rectangle;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.ObjectOutputStream;
- import java.io.StringReader;
- import java.io.StringWriter;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import javax.accessibility.AccessibleContext;
- import javax.swing.event.HyperlinkEvent;
- import javax.swing.event.HyperlinkListener;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.TextUI;
- import javax.swing.text.AbstractDocument;
- import javax.swing.text.AttributeSet;
- import javax.swing.text.BadLocationException;
- import javax.swing.text.Caret;
- import javax.swing.text.ChangedCharSetException;
- import javax.swing.text.Document;
- import javax.swing.text.EditorKit;
- import javax.swing.text.JTextComponent;
- import javax.swing.text.StyledEditorKit;
- import javax.swing.text.html.HTMLDocument;
- import javax.swing.text.html.HTMLEditorKit;
- import javax.swing.text.html.HTML.Attribute;
- import javax.swing.text.html.HTML.Tag;
-
- public class JEditorPane extends JTextComponent {
- private EditorKit kit;
- private Hashtable pageProperties;
- private Hashtable typeHandlers;
- private String charSetName;
- private static final Object kitRegistryKey = new StringBuffer("JEditorPane.kitRegistry");
- private static final Object kitTypeRegistryKey = new StringBuffer("JEditorPane.kitTypeRegistry");
- private static final Object kitLoaderRegistryKey = new StringBuffer("JEditorPane.kitLoaderRegistry");
- private static final String uiClassID = "EditorPaneUI";
- // $FF: synthetic field
- static Class class$javax$swing$event$HyperlinkListener;
-
- static {
- registerEditorKitForContentType("text/plain", "javax.swing.JEditorPane$PlainEditorKit");
- registerEditorKitForContentType("text/html", "javax.swing.text.html.HTMLEditorKit");
- registerEditorKitForContentType("text/rtf", "javax.swing.text.rtf.RTFEditorKit");
- registerEditorKitForContentType("application/rtf", "javax.swing.text.rtf.RTFEditorKit");
- }
-
- public JEditorPane() {
- this.charSetName = "8859_1";
- }
-
- public JEditorPane(String var1) throws IOException {
- this();
- this.setPage(var1);
- }
-
- public JEditorPane(String var1, String var2) {
- this();
- this.setContentType(var1);
- this.setText(var2);
- }
-
- public JEditorPane(URL var1) throws IOException {
- this();
- this.setPage(var1);
- }
-
- public synchronized void addHyperlinkListener(HyperlinkListener var1) {
- super.listenerList.add(class$javax$swing$event$HyperlinkListener != null ? class$javax$swing$event$HyperlinkListener : (class$javax$swing$event$HyperlinkListener = class$("javax.swing.event.HyperlinkListener")), var1);
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- protected EditorKit createDefaultEditorKit() {
- return new PlainEditorKit();
- }
-
- public static EditorKit createEditorKitForContentType(String var0) {
- EditorKit var1 = null;
- Hashtable var2 = (Hashtable)SwingUtilities.appContextGet(kitRegistryKey);
- if (var2 == null) {
- var2 = new Hashtable();
- SwingUtilities.appContextPut(kitRegistryKey, var2);
- } else {
- var1 = (EditorKit)var2.get(var0);
- }
-
- if (var1 == null) {
- String var3 = (String)getKitTypeRegistry().get(var0);
- ClassLoader var4 = (ClassLoader)getKitLoaderRegistry().get(var0);
-
- try {
- Class var5;
- if (var4 != null) {
- var5 = var4.loadClass(var3);
- } else {
- var5 = Class.forName(var3);
- }
-
- var1 = (EditorKit)var5.newInstance();
- var2.put(var0, var1);
- } catch (Throwable var6) {
- var1 = null;
- }
- }
-
- return var1 != null ? (EditorKit)var1.clone() : null;
- }
-
- public void fireHyperlinkUpdate(HyperlinkEvent var1) {
- Object[] var2 = super.listenerList.getListenerList();
-
- for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
- if (var2[var3] == (class$javax$swing$event$HyperlinkListener != null ? class$javax$swing$event$HyperlinkListener : (class$javax$swing$event$HyperlinkListener = class$("javax.swing.event.HyperlinkListener")))) {
- ((HyperlinkListener)var2[var3 + 1]).hyperlinkUpdate(var1);
- }
- }
-
- }
-
- public AccessibleContext getAccessibleContext() {
- if (super.accessibleContext == null) {
- if (this.getEditorKit() instanceof HTMLEditorKit) {
- super.accessibleContext = new AccessibleJEditorPaneHTML(this);
- } else {
- super.accessibleContext = new AccessibleJEditorPane(this);
- }
- }
-
- return super.accessibleContext;
- }
-
- public final String getContentType() {
- return this.kit != null ? this.kit.getContentType() : null;
- }
-
- public final EditorKit getEditorKit() {
- if (this.kit == null) {
- this.kit = this.createDefaultEditorKit();
- }
-
- return this.kit;
- }
-
- public EditorKit getEditorKitForContentType(String var1) {
- if (this.typeHandlers == null) {
- this.typeHandlers = new Hashtable(3);
- }
-
- EditorKit var2 = (EditorKit)this.typeHandlers.get(var1);
- if (var2 == null) {
- var2 = createEditorKitForContentType(var1);
- if (var2 != null) {
- this.setEditorKitForContentType(var1, var2);
- }
- }
-
- if (var2 == null) {
- var2 = this.createDefaultEditorKit();
- }
-
- return var2;
- }
-
- private static Hashtable getKitLoaderRegistry() {
- Hashtable var0 = (Hashtable)SwingUtilities.appContextGet(kitLoaderRegistryKey);
- if (var0 == null) {
- var0 = new Hashtable();
- SwingUtilities.appContextPut(kitLoaderRegistryKey, var0);
- }
-
- return var0;
- }
-
- private static Hashtable getKitTypeRegistry() {
- Hashtable var0 = (Hashtable)SwingUtilities.appContextGet(kitTypeRegistryKey);
- if (var0 == null) {
- var0 = new Hashtable();
- SwingUtilities.appContextPut(kitTypeRegistryKey, var0);
- }
-
- return var0;
- }
-
- public URL getPage() {
- return (URL)((JTextComponent)this).getDocument().getProperty("stream");
- }
-
- public Dimension getPreferredSize() {
- Dimension var1 = super.getPreferredSize();
- if (((Component)this).getParent() instanceof JViewport) {
- JViewport var2 = (JViewport)((Component)this).getParent();
- TextUI var3 = ((JTextComponent)this).getUI();
- if (!this.getScrollableTracksViewportWidth()) {
- int var4 = ((JComponent)var2).getWidth();
- Dimension var5 = ((ComponentUI)var3).getMinimumSize(this);
- ((ComponentUI)var3).getMaximumSize(this);
- if (var4 < var5.width) {
- var1.width = var5.width;
- }
- }
-
- if (!this.getScrollableTracksViewportHeight()) {
- int var7 = ((JComponent)var2).getHeight();
- Dimension var8 = ((ComponentUI)var3).getMinimumSize(this);
- ((ComponentUI)var3).getMaximumSize(this);
- if (var7 < var8.height) {
- var1.height = var8.height;
- }
- }
- }
-
- return var1;
- }
-
- public boolean getScrollableTracksViewportHeight() {
- if (((Component)this).getParent() instanceof JViewport) {
- JViewport var1 = (JViewport)((Component)this).getParent();
- TextUI var2 = ((JTextComponent)this).getUI();
- int var3 = ((JComponent)var1).getHeight();
- Dimension var4 = ((ComponentUI)var2).getMinimumSize(this);
- Dimension var5 = ((ComponentUI)var2).getMaximumSize(this);
- if (var3 >= var4.height && var3 <= var5.height) {
- return true;
- }
- }
-
- return false;
- }
-
- public boolean getScrollableTracksViewportWidth() {
- if (((Component)this).getParent() instanceof JViewport) {
- JViewport var1 = (JViewport)((Component)this).getParent();
- TextUI var2 = ((JTextComponent)this).getUI();
- int var3 = ((JComponent)var1).getWidth();
- Dimension var4 = ((ComponentUI)var2).getMinimumSize(this);
- Dimension var5 = ((ComponentUI)var2).getMaximumSize(this);
- if (var3 >= var4.width && var3 <= var5.width) {
- return true;
- }
- }
-
- return false;
- }
-
- protected InputStream getStream(URL var1) throws IOException {
- URLConnection var2 = var1.openConnection();
- if (var2 instanceof HttpURLConnection) {
- HttpURLConnection var3 = (HttpURLConnection)var2;
- HttpURLConnection.setFollowRedirects(false);
- int var4 = var3.getResponseCode();
- boolean var5 = var4 >= 300 && var4 <= 399;
- if (var5) {
- String var6 = var2.getHeaderField("Location");
- if (var6.startsWith("http", 0)) {
- var1 = new URL(var6);
- } else {
- var1 = new URL(var1, var6);
- }
-
- return this.getStream(var1);
- }
- }
-
- if (this.pageProperties == null) {
- this.pageProperties = new Hashtable();
- }
-
- String var8 = var2.getContentType();
- if (var8 != null) {
- this.setContentType(var8);
- this.pageProperties.put("content-type", var8);
- }
-
- this.pageProperties.put("stream", var1);
- String var9 = var2.getContentEncoding();
- if (var9 != null) {
- this.pageProperties.put("content-encoding", var9);
- }
-
- InputStream var10 = var2.getInputStream();
- return var10;
- }
-
- public String getText() {
- String var1;
- try {
- StringWriter var2 = new StringWriter();
- ((JTextComponent)this).write(var2);
- var1 = var2.toString();
- } catch (IOException var3) {
- var1 = null;
- }
-
- return var1;
- }
-
- public String getUIClassID() {
- return "EditorPaneUI";
- }
-
- public boolean isManagingFocus() {
- return true;
- }
-
- protected String paramString() {
- String var1 = this.charSetName != null ? this.charSetName : "";
- String var2 = this.kit != null ? this.kit.toString() : "";
- String var3 = this.typeHandlers != null ? this.typeHandlers.toString() : "";
- return super.paramString() + ",charSetName=" + var1 + ",kit=" + var2 + ",typeHandlers=" + var3;
- }
-
- protected void processComponentKeyEvent(KeyEvent var1) {
- super.processComponentKeyEvent(var1);
- if (this.isManagingFocus() && (var1.getKeyCode() == 9 || var1.getKeyChar() == '\t')) {
- ((InputEvent)var1).consume();
- }
-
- }
-
- public void read(InputStream var1, Object var2) throws IOException {
- if (var2 instanceof HTMLDocument && this.kit instanceof HTMLEditorKit) {
- HTMLDocument var3 = (HTMLDocument)var2;
- ((JTextComponent)this).setDocument(var3);
- this.read(var1, (Document)var3);
- } else {
- super.read(new InputStreamReader(var1, this.charSetName), var2);
- }
-
- }
-
- void read(InputStream var1, Document var2) throws IOException {
- try {
- this.kit.read(new InputStreamReader(var1, this.charSetName), var2, 0);
- } catch (BadLocationException var8) {
- throw new IOException(((Throwable)var8).getMessage());
- } catch (ChangedCharSetException var9) {
- String var4 = var9.getCharSetSpec();
- if (var9.keyEqualsCharSet()) {
- this.charSetName = var4;
- } else {
- this.setCharsetFromContentTypeParameters(var4);
- }
-
- var1.close();
- URL var5 = (URL)var2.getProperty("stream");
- URLConnection var6 = var5.openConnection();
- var1 = var6.getInputStream();
-
- try {
- var2.remove(0, var2.getLength());
- } catch (BadLocationException var7) {
- }
-
- var2.putProperty("IgnoreCharsetDirective", new Boolean(true));
- this.read(var1, var2);
- }
-
- }
-
- public static void registerEditorKitForContentType(String var0, String var1) {
- getKitLoaderRegistry().remove(var0);
- getKitTypeRegistry().put(var0, var1);
- }
-
- public static void registerEditorKitForContentType(String var0, String var1, ClassLoader var2) {
- getKitTypeRegistry().put(var0, var1);
- getKitLoaderRegistry().put(var0, var2);
- }
-
- public synchronized void removeHyperlinkListener(HyperlinkListener var1) {
- super.listenerList.remove(class$javax$swing$event$HyperlinkListener != null ? class$javax$swing$event$HyperlinkListener : (class$javax$swing$event$HyperlinkListener = class$("javax.swing.event.HyperlinkListener")), var1);
- }
-
- public void replaceSelection(String var1) {
- if (!((JTextComponent)this).isEditable()) {
- ((Component)this).getToolkit().beep();
- } else {
- EditorKit var2 = this.getEditorKit();
- if (var2 instanceof StyledEditorKit) {
- try {
- Document var3 = ((JTextComponent)this).getDocument();
- Caret var4 = ((JTextComponent)this).getCaret();
- int var5 = Math.min(var4.getDot(), var4.getMark());
- int var6 = Math.max(var4.getDot(), var4.getMark());
- if (var5 != var6) {
- var3.remove(var5, var6 - var5);
- }
-
- if (var1 != null && var1.length() > 0) {
- var3.insertString(var5, var1, ((StyledEditorKit)var2).getInputAttributes());
- }
- } catch (BadLocationException var7) {
- ((Component)this).getToolkit().beep();
- }
- } else {
- super.replaceSelection(var1);
- }
-
- }
- }
-
- protected void scrollToReference(String var1) {
- Document var2 = ((JTextComponent)this).getDocument();
- if (var2 instanceof HTMLDocument) {
- HTMLDocument var3 = (HTMLDocument)var2;
-
- for(HTMLDocument.Iterator var4 = var3.getIterator(Tag.A); var4.isValid(); var4.next()) {
- AttributeSet var5 = var4.getAttributes();
- String var6 = (String)var5.getAttribute(Attribute.NAME);
- if (var6 != null && var6.equals(var1)) {
- try {
- Rectangle var7 = ((JTextComponent)this).modelToView(var4.getStartOffset());
- if (var7 != null) {
- Rectangle var8 = ((JComponent)this).getVisibleRect();
- var7.y -= var8.height / 2;
- var7.height = var8.height;
- ((JComponent)this).scrollRectToVisible(var7);
- }
- } catch (BadLocationException var9) {
- ((Component)this).getToolkit().beep();
- }
- }
- }
- }
-
- }
-
- private void setCharsetFromContentTypeParameters(String var1) {
- Object var2 = null;
-
- try {
- int var3 = var1.indexOf(59);
- if (var3 > -1 && var3 < var1.length() - 1) {
- var1 = var1.substring(var3 + 1);
- }
-
- if (var1.length() > 0) {
- HeaderParser var4 = new HeaderParser(var1);
- String var8 = var4.findValue("charset");
- this.charSetName = var8;
- }
- } catch (IndexOutOfBoundsException var5) {
- } catch (NullPointerException var6) {
- } catch (Exception var7) {
- System.err.println("JEditorPane.getCharsetFromContentTypeParameters failed on: " + var1);
- ((Throwable)var7).printStackTrace();
- }
-
- }
-
- public final void setContentType(String var1) {
- int var2 = var1.indexOf(";");
- if (var2 > -1) {
- String var3 = var1.substring(var2);
- var1 = var1.substring(0, var2).trim();
- if (var1.toLowerCase().startsWith("text/")) {
- this.setCharsetFromContentTypeParameters(var3);
- }
- }
-
- if (this.kit == null || !var1.equals(this.kit.getContentType())) {
- EditorKit var4 = this.getEditorKitForContentType(var1);
- if (var4 != null) {
- this.setEditorKit(var4);
- }
- }
-
- }
-
- public void setEditorKit(EditorKit var1) {
- EditorKit var2 = this.kit;
- if (var2 != null) {
- var2.deinstall(this);
- }
-
- this.kit = var1;
- if (this.kit != null) {
- this.kit.install(this);
- ((JTextComponent)this).setDocument(this.kit.createDefaultDocument());
- }
-
- ((JComponent)this).firePropertyChange("editorKit", var2, var1);
- }
-
- public void setEditorKitForContentType(String var1, EditorKit var2) {
- if (this.typeHandlers == null) {
- this.typeHandlers = new Hashtable(3);
- }
-
- this.typeHandlers.put(var1, var2);
- }
-
- public void setPage(String var1) throws IOException {
- if (var1 == null) {
- throw new IOException("invalid url");
- } else {
- URL var2 = new URL(var1);
- this.setPage(var2);
- }
- }
-
- public void setPage(URL var1) throws IOException {
- if (var1 == null) {
- throw new IOException("invalid url");
- } else {
- URL var2 = this.getPage();
- ((JComponent)this).scrollRectToVisible(new Rectangle(0, 0, 1, 1));
- boolean var3 = false;
- if (var2 == null || !var2.sameFile(var1)) {
- InputStream var4 = this.getStream(var1);
- if (this.kit != null) {
- Document var5 = this.kit.createDefaultDocument();
- if (this.pageProperties != null) {
- Enumeration var6 = this.pageProperties.keys();
-
- while(var6.hasMoreElements()) {
- Object var7 = var6.nextElement();
- var5.putProperty(var7, this.pageProperties.get(var7));
- }
-
- this.pageProperties.clear();
- }
-
- if (var5.getProperty("stream") == null) {
- var5.putProperty("stream", var1);
- }
-
- if (var5 instanceof AbstractDocument) {
- AbstractDocument var10 = (AbstractDocument)var5;
- int var11 = var10.getAsynchronousLoadPriority();
- if (var11 >= 0) {
- ((JTextComponent)this).setDocument(var5);
- PageLoader var8 = new PageLoader(this, var4, var11, var2, var1);
- ((Thread)var8).start();
- return;
- }
- }
-
- this.read(var4, var5);
- ((JTextComponent)this).setDocument(var5);
- var3 = true;
- }
- }
-
- String var9 = var1.getRef();
- if (var9 != null) {
- if (!var3) {
- this.scrollToReference(var9);
- } else {
- SwingUtilities.invokeLater(new 1(var9, this));
- }
- }
-
- ((JComponent)this).firePropertyChange("page", var2, var1);
- }
- }
-
- public void setText(String var1) {
- try {
- Document var2 = ((JTextComponent)this).getDocument();
- var2.remove(0, var2.getLength());
- StringReader var3 = new StringReader(var1);
- EditorKit var4 = this.getEditorKit();
- var4.read(var3, var2, 0);
- } catch (IOException var5) {
- ((Component)this).getToolkit().beep();
- } catch (BadLocationException var6) {
- ((Component)this).getToolkit().beep();
- }
-
- }
-
- private void writeObject(ObjectOutputStream var1) throws IOException {
- var1.defaultWriteObject();
- if (super.ui != null && this.getUIClassID().equals("EditorPaneUI")) {
- super.ui.installUI(this);
- }
-
- }
- }
-