001 /*
002 * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025 package javax.swing.text.rtf;
026
027 import java.awt.*;
028 import java.io.*;
029 import java.net.MalformedURLException;
030 import java.net.URL;
031 import javax.swing.Action;
032 import javax.swing.text.*;
033 import javax.swing.*;
034
035 /**
036 * This is the default implementation of RTF editing
037 * functionality. The RTF support was not written by the
038 * Swing team. In the future we hope to improve the support
039 * provided.
040 *
041 * @author Timothy Prinzing (of this class, not the package!)
042 * @version 1.20 05/05/07
043 */
044 public class RTFEditorKit extends StyledEditorKit {
045
046 /**
047 * Constructs an RTFEditorKit.
048 */
049 public RTFEditorKit() {
050 super ();
051 }
052
053 /**
054 * Get the MIME type of the data that this
055 * kit represents support for. This kit supports
056 * the type <code>text/rtf</code>.
057 *
058 * @return the type
059 */
060 public String getContentType() {
061 return "text/rtf";
062 }
063
064 /**
065 * Insert content from the given stream which is expected
066 * to be in a format appropriate for this kind of content
067 * handler.
068 *
069 * @param in The stream to read from
070 * @param doc The destination for the insertion.
071 * @param pos The location in the document to place the
072 * content.
073 * @exception IOException on any I/O error
074 * @exception BadLocationException if pos represents an invalid
075 * location within the document.
076 */
077 public void read(InputStream in, Document doc, int pos)
078 throws IOException, BadLocationException {
079
080 if (doc instanceof StyledDocument) {
081 // PENDING(prinz) this needs to be fixed to
082 // insert to the given position.
083 RTFReader rdr = new RTFReader((StyledDocument) doc);
084 rdr.readFromStream(in);
085 rdr.close();
086 } else {
087 // treat as text/plain
088 super .read(in, doc, pos);
089 }
090 }
091
092 /**
093 * Write content from a document to the given stream
094 * in a format appropriate for this kind of content handler.
095 *
096 * @param out The stream to write to
097 * @param doc The source for the write.
098 * @param pos The location in the document to fetch the
099 * content.
100 * @param len The amount to write out.
101 * @exception IOException on any I/O error
102 * @exception BadLocationException if pos represents an invalid
103 * location within the document.
104 */
105 public void write(OutputStream out, Document doc, int pos, int len)
106 throws IOException, BadLocationException {
107
108 // PENDING(prinz) this needs to be fixed to
109 // use the given document range.
110 RTFGenerator.writeDocument(doc, out);
111 }
112
113 /**
114 * Insert content from the given stream, which will be
115 * treated as plain text.
116 *
117 * @param in The stream to read from
118 * @param doc The destination for the insertion.
119 * @param pos The location in the document to place the
120 * content.
121 * @exception IOException on any I/O error
122 * @exception BadLocationException if pos represents an invalid
123 * location within the document.
124 */
125 public void read(Reader in, Document doc, int pos)
126 throws IOException, BadLocationException {
127
128 if (doc instanceof StyledDocument) {
129 RTFReader rdr = new RTFReader((StyledDocument) doc);
130 rdr.readFromReader(in);
131 rdr.close();
132 } else {
133 // treat as text/plain
134 super .read(in, doc, pos);
135 }
136 }
137
138 /**
139 * Write content from a document to the given stream
140 * as plain text.
141 *
142 * @param out The stream to write to
143 * @param doc The source for the write.
144 * @param pos The location in the document to fetch the
145 * content.
146 * @param len The amount to write out.
147 * @exception IOException on any I/O error
148 * @exception BadLocationException if pos represents an invalid
149 * location within the document.
150 */
151 public void write(Writer out, Document doc, int pos, int len)
152 throws IOException, BadLocationException {
153
154 throw new IOException("RTF is an 8-bit format");
155 }
156
157 }
|