javax.swing.text.html

Class HTMLEditorKit

Implemented Interfaces:
Accessible, Cloneable, Serializable

public class HTMLEditorKit
extends StyledEditorKit
implements Accessible

The Swing JEditorPane text component supports different kinds of content via a plug-in mechanism called an EditorKit. Because HTML is a very popular format of content, some support is provided by default. The default support is provided by this class, which supports HTML version 3.2 (with some extensions), and is migrating toward version 4.0. The <applet> tag is not supported, but some support is provided for the <object> tag.

There are several goals of the HTML EditorKit provided, that have an effect upon the way that HTML is modeled. These have influenced its design in a substantial way.

HTMLDocument

  1. The parser is replacable. The default parser is the Hot Java parser which is DTD based. A different DTD can be used, or an entirely different parser can be used. To change the parser, reimplement the getParser method. The default parser is dynamically loaded when first asked for, so the class files will never be loaded if an alternative parser is used. The default parser is in a separate package called parser below this package.
  2. The parser drives the ParserCallback, which is provided by HTMLDocument. To change the callback, subclass HTMLDocument and reimplement the createDefaultDocument method to return document that produces a different reader. The reader controls how the document is structured. Although the Document provides HTML support by default, there is nothing preventing support of non-HTML tags that result in alternative element structures.
  3. The default view of the models are provided as a hierarchy of View implementations, so one can easily customize how a particular element is displayed or add capabilities for new kinds of elements by providing new View implementations. The default set of views are provided by the HTMLFactory class. This can be easily changed by subclassing or replacing the HTMLFactory and reimplementing the getViewFactory method to return the alternative factory.
  4. The View implementations work primarily off of CSS attributes, which are kept in the views. This makes it possible to have multiple views mapped over the same model that appear substantially different. This can be especially useful for printing. For most HTML attributes, the HTML attributes are converted to CSS attributes for display. This helps make the View implementations more general purpose

JEditorPane.setPagecreateDefaultDocumentHTMLDocument.HTMLReaderDefaultStyledDocumentAbstractDocument

StyleSheet

See Also:
Serialized Form

Nested Class Summary

static class
HTMLEditorKit.HTMLFactory
A factory to build views for HTML.
static class
HTMLEditorKit.HTMLTextAction
An abstract Action providing some convenience methods that may be useful in inserting HTML into an existing document.
static class
HTMLEditorKit.InsertHTMLTextAction
InsertHTMLTextAction can be used to insert an arbitrary string of HTML into an existing HTML document.
static class
HTMLEditorKit.LinkController
Class to watch the associated component and fire hyperlink events on it when appropriate.
static class
HTMLEditorKit.Parser
Interface to be supported by the parser.
static class
HTMLEditorKit.ParserCallback
The result of parsing drives these callback methods.

Nested classes/interfaces inherited from class javax.swing.text.StyledEditorKit

StyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineAction

Nested classes/interfaces inherited from class javax.swing.text.DefaultEditorKit

DefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction

Field Summary

static String
BOLD_ACTION
The bold action identifier
static String
COLOR_ACTION
The Color choice action identifier The color is passed as an argument
static String
DEFAULT_CSS
Default Cascading Style Sheet file that sets up the tag views.
static String
FONT_CHANGE_BIGGER
The font size increase to next value action identifier
static String
FONT_CHANGE_SMALLER
The font size decrease to next value action identifier
static String
IMG_ALIGN_BOTTOM
Align images at the bottom.
static String
IMG_ALIGN_MIDDLE
Align images in the middle.
static String
IMG_ALIGN_TOP
Align images at the top.
static String
IMG_BORDER
Align images at the border.
static String
ITALIC_ACTION
The italic action identifier
static String
LOGICAL_STYLE_ACTION
The logical style choice action identifier The logical style is passed in as an argument
static String
PARA_INDENT_LEFT
The paragraph left indent action identifier
static String
PARA_INDENT_RIGHT
The paragraph right indent action identifier

Fields inherited from class javax.swing.text.DefaultEditorKit

EndOfLineStringProperty, backwardAction, beepAction, beginAction, beginLineAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deletePrevCharAction, downAction, endAction, endLineAction, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectLineAction, selectParagraphAction, selectWordAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, upAction, writableAction

Constructor Summary

HTMLEditorKit()
Constructs an HTMLEditorKit, creates a StyleContext, and loads the style sheet.

Method Summary

Object
clone()
Creates a copy of the editor kit.
Document
createDefaultDocument()
Create an uninitialized text storage model that is appropriate for this type of editor.
protected void
createInputAttributes(Element element, MutableAttributeSet set)
Copies the key/values in elements AttributeSet into set.
void
deinstall(JEditorPane c)
Called when the kit is being removed from the JEditorPane.
AccessibleContext
getAccessibleContext()
returns the AccessibleContext associated with this editor kit
Action[]
getActions()
Fetches the command list for the editor.
String
getContentType()
Get the MIME type of the data that this kit represents support for.
Cursor
getDefaultCursor()
Returns the default cursor.
MutableAttributeSet
getInputAttributes()
Gets the input attributes used for the styled editing actions.
Cursor
getLinkCursor()
Returns the cursor to use over hyper links.
protected HTMLEditorKit.Parser
getParser()
Fetch the parser to use for reading HTML streams.
StyleSheet
getStyleSheet()
Get the set of styles currently being used to render the HTML elements.
ViewFactory
getViewFactory()
Fetch a factory that is suitable for producing views of any models that are produced by this kit.
void
insertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag)
Inserts HTML into an existing document.
void
install(JEditorPane c)
Called when the kit is being installed into the a JEditorPane.
boolean
isAutoFormSubmission()
Indicates whether an html form submission is processed automatically or only FormSubmitEvent is fired.
void
read(Reader in, Document doc, int pos)
Inserts content from the given stream.
void
setAutoFormSubmission(boolean isAuto)
Specifies if an html form submission is processed automatically or only FormSubmitEvent is fired.
void
setDefaultCursor(Cursor cursor)
Sets the default cursor.
void
setLinkCursor(Cursor cursor)
Sets the cursor to use over links.
void
setStyleSheet(StyleSheet s)
Set the set of styles to be used to render the various HTML elements.
void
write(Writer out, Document doc, int pos, int len)
Write content from a document to the given stream in a format appropriate for this kind of content handler.

Methods inherited from class javax.swing.text.StyledEditorKit

clone, createDefaultDocument, createInputAttributes, deinstall, getActions, getCharacterAttributeRun, getInputAttributes, getViewFactory, install

Methods inherited from class javax.swing.text.DefaultEditorKit

createCaret, createDefaultDocument, getActions, getContentType, getViewFactory, read, read, write, write

Methods inherited from class javax.swing.text.EditorKit

clone, createCaret, createDefaultDocument, deinstall, getActions, getContentType, getViewFactory, install, read, read, write, write

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

BOLD_ACTION

public static final String BOLD_ACTION
The bold action identifier
Field Value:
"html-bold-action"

COLOR_ACTION

public static final String COLOR_ACTION
The Color choice action identifier The color is passed as an argument
Field Value:
"html-color-action"

DEFAULT_CSS

public static final String DEFAULT_CSS
Default Cascading Style Sheet file that sets up the tag views.
Field Value:
"default.css"

FONT_CHANGE_BIGGER

public static final String FONT_CHANGE_BIGGER
The font size increase to next value action identifier
Field Value:
"html-font-bigger"

FONT_CHANGE_SMALLER

public static final String FONT_CHANGE_SMALLER
The font size decrease to next value action identifier
Field Value:
"html-font-smaller"

IMG_ALIGN_BOTTOM

public static final String IMG_ALIGN_BOTTOM
Align images at the bottom.
Field Value:
"html-image-align-bottom"

IMG_ALIGN_MIDDLE

public static final String IMG_ALIGN_MIDDLE
Align images in the middle.
Field Value:
"html-image-align-middle"

IMG_ALIGN_TOP

public static final String IMG_ALIGN_TOP
Align images at the top.
Field Value:
"html-image-align-top"

IMG_BORDER

public static final String IMG_BORDER
Align images at the border.
Field Value:
"html-image-border"

ITALIC_ACTION

public static final String ITALIC_ACTION
The italic action identifier
Field Value:
"html-italic-action"

LOGICAL_STYLE_ACTION

public static final String LOGICAL_STYLE_ACTION
The logical style choice action identifier The logical style is passed in as an argument
Field Value:
"html-logical-style-action"

PARA_INDENT_LEFT

public static final String PARA_INDENT_LEFT
The paragraph left indent action identifier
Field Value:
"html-para-indent-left"

PARA_INDENT_RIGHT

public static final String PARA_INDENT_RIGHT
The paragraph right indent action identifier
Field Value:
"html-para-indent-right"

Constructor Details

HTMLEditorKit

public HTMLEditorKit()
Constructs an HTMLEditorKit, creates a StyleContext, and loads the style sheet.
Usages and Demos :

View More Examples of HTMLEditorKit()
   1: 
   2:     HTMLEditorKit htmlKit = new HTMLEditorKit();
   3:     HTMLDocument htmlDoc = (HTMLDocument)htmlKit.createDefaultDocument();
   4:     HTMLEditorKit.Parser parser = new ParserDelegator();
   5:     HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);

View Full Code Here
   1: 
   2:         htmlKit = new HTMLEditorKit();
   3:         htmlDoc = (HTMLDocument)(htmlKit.createDefaultDocument());
   4:         
   5:         

View Full Code Here
   1: 
   2:     HTMLEditorKit htmlKit = new HTMLEditorKit();
   3:     HTMLDocument htmlDoc = (HTMLDocument)htmlKit.createDefaultDocument();
   4:     HTMLEditorKit.Parser parser = new ParserDelegator();
   5:     HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);

View Full Code Here
   1:         setOpaque(false);
   2:         setEditorKit(new HTMLEditorKit());
   3:         addHyperlinkListener(new HyperlinkListener() {
   4:             public void hyperlinkUpdate(HyperlinkEvent e) {
   5:                 if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED))

View Full Code Here
   1:         StringReader s = new StringReader(originalSuite);
   2:         HTMLEditorKit k = new HTMLEditorKit();
   3:         HTMLDocument doc = (HTMLDocument) k.createDefaultDocument();
   4:         Parser parser = doc.getParser();
   5:         HrefConverter p = new HrefConverter(originalSuite);

View Full Code Here

Method Details

clone

public Object clone()
Creates a copy of the editor kit.
Overrides:
clone in interface StyledEditorKit
Returns:
the copy

createDefaultDocument

public Document createDefaultDocument()
Create an uninitialized text storage model that is appropriate for this type of editor.
Overrides:
createDefaultDocument in interface StyledEditorKit
Returns:
the model

createInputAttributes

protected void createInputAttributes(Element element,
                                     MutableAttributeSet set)
Copies the key/values in elements AttributeSet into set. This does not copy component, icon, or element names attributes. Subclasses may wish to refine what is and what isn't copied here. But be sure to first remove all the attributes that are in set.

This is called anytime the caret moves over a different location.

Overrides:
createInputAttributes in interface StyledEditorKit

deinstall

public void deinstall(JEditorPane c)
Called when the kit is being removed from the JEditorPane. This is used to unregister any listeners that were attached.
Overrides:
deinstall in interface StyledEditorKit
Parameters:
c - the JEditorPane

getAccessibleContext

public AccessibleContext getAccessibleContext()
returns the AccessibleContext associated with this editor kit
Specified by:
getAccessibleContext in interface Accessible
Returns:
the AccessibleContext associated with this editor kit
Since:
1.4

getActions

public Action[] getActions()
Fetches the command list for the editor. This is the list of commands supported by the superclass augmented by the collection of commands defined locally for style operations.
Overrides:
getActions in interface StyledEditorKit
Returns:
the command list

getContentType

public String getContentType()
Get the MIME type of the data that this kit represents support for. This kit supports the type text/html.
Overrides:
getContentType in interface DefaultEditorKit
Returns:
the type

getDefaultCursor

public Cursor getDefaultCursor()
Returns the default cursor.
Since:
1.3

getInputAttributes

public MutableAttributeSet getInputAttributes()
Gets the input attributes used for the styled editing actions.
Overrides:
getInputAttributes in interface StyledEditorKit
Returns:
the attribute set

getLinkCursor

public Cursor getLinkCursor()
Returns the cursor to use over hyper links.

getParser

protected HTMLEditorKit.Parser getParser()
Fetch the parser to use for reading HTML streams. This can be reimplemented to provide a different parser. The default implementation is loaded dynamically to avoid the overhead of loading the default parser if it's not used. The default parser is the HotJava parser using an HTML 3.2 DTD.

getStyleSheet

public StyleSheet getStyleSheet()
Get the set of styles currently being used to render the HTML elements. By default the resource specified by DEFAULT_CSS gets loaded, and is shared by all HTMLEditorKit instances.
Usages and Demos :

View More Examples of getStyleSheet()
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import javax.swing.text.html.StyleSheet;
   4:         ...
   5: 
   6:         textPane.setEditorKit(new HTMLEditorKit());
   7: 
   8:         ...
   9: 
  10:     protected HTMLDocument createDefaultDocument(HTMLEditorKit kit) {
  11:         ...
  12:         StyleSheet styles = kit.getStyleSheet();

View Full Code Here
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import javax.swing.text.html.StyleSheet;
   4:         ...
   5: {
   6:     protected static HTMLEditorKit htmlKit = null;
   7:     protected static StyleSheet theStyleSheet = null;
   8:         ...
   9:         if (htmlKit==null) {
  10:             htmlKit = new HTMLEditorKit();
  11:         ...
  12:             theStyleSheet = htmlKit.getStyleSheet();

View Full Code Here
   1: 
   2:    private class Callback extends HTMLEditorKit.ParserCallback
   3:    {
   4:         ...
   5:       {
   6:          HTMLEditorKit kit;
   7:         ...
   8:          kit = (HTMLEditorKit) getEditorKitForContentType ("text/html");
   9:         ...
  10:          StyleSheet ss = kit.getStyleSheet();

View Full Code Here

getViewFactory

public ViewFactory getViewFactory()
Fetch a factory that is suitable for producing views of any models that are produced by this kit.
Overrides:
getViewFactory in interface StyledEditorKit
Returns:
the factory

insertHTML

public void insertHTML(HTMLDocument doc,
                       int offset,
                       String html,
                       int popDepth,
                       int pushDepth,
                       HTML.Tag insertTag)
            throws BadLocationException,
                   IOException
Inserts HTML into an existing document.
Parameters:
doc - the document to insert into
offset - the offset to insert HTML at
popDepth - the number of ElementSpec.EndTagTypes to generate before inserting
pushDepth - the number of ElementSpec.StartTagTypes with a direction of ElementSpec.JoinNextDirection that should be generated before inserting, but after the end tags have been generated
insertTag - the first tag to start inserting into document
Throws:
RuntimeException - (will eventually be a BadLocationException) if pos is invalid

install

public void install(JEditorPane c)
Called when the kit is being installed into the a JEditorPane.
Overrides:
install in interface StyledEditorKit
Parameters:
c - the JEditorPane
Usages and Demos :

View More Examples of install(JEditorPane c)
   1: import javax.swing.*;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import java.awt.*;
   4:         ...
   5:         JEditorPane editorPane = new JEditorPane();
   6:         HTMLEditorKit editorKit = new HTMLEditorKit();
   7:         ...
   8:         editorKit.install(editorPane);
   9:         editorPane.setEditorKit(editorKit);

View Full Code Here
   1: import javax.swing.*;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import java.awt.*;
   4:         ...
   5:         JEditorPane editorPane = new JEditorPane();
   6:         HTMLEditorKit editorKit = new HTMLEditorKit();
   7:         ...
   8:         editorKit.install(editorPane);
   9:         editorPane.setEditorKit(editorKit);

View Full Code Here

isAutoFormSubmission

public boolean isAutoFormSubmission()
Indicates whether an html form submission is processed automatically or only FormSubmitEvent is fired.
Returns:
true if html form submission is processed automatically, false otherwise.
Since:
1.5

read

public void read(Reader in,
                 Document doc,
                 int pos)
            throws IOException,
                   BadLocationException
Inserts content from the given stream. If doc is an instance of HTMLDocument, this will read HTML 3.2 text. Inserting HTML into a non-empty document must be inside the body Element, if you do not insert into the body an exception will be thrown. When inserting into a non-empty document all tags outside of the body (head, title) will be dropped.
Overrides:
read in interface DefaultEditorKit
Parameters:
in - the stream to read from
doc - the destination for the insertion
pos - the location in the document to place the content
Throws:
IOException - on any I/O error
BadLocationException - if pos represents an invalid location within the document
RuntimeException - (will eventually be a BadLocationException) if pos is invalid
Usages and Demos :

View More Examples of read(Reader in,Document doc,int pos)
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: 
   4:         ...
   5:     private JScrollPane newPane;
   6:     private HTMLEditorKit htmlKit;
   7:     private HTMLDocument htmlDoc;
   8:         ...
   9: 
  10:         htmlKit = new HTMLEditorKit();
  11:         htmlDoc = (HTMLDocument)(htmlKit.createDefaultDocument());
  12:         ...
  13:                 r = new InputStreamReader(new FileInputStream(helpfile));
  14:                 htmlKit.read(r, htmlDoc, 0);

View Full Code Here
   1: import javax.swing.text.html.HTML;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import javax.swing.text.html.parser.ParserDelegator;
   4:         ...
   5: 
   6: public class HtmlInputStreamToFileParser extends HTMLEditorKit.ParserCallback {
   7:     
   8:         ...
   9:             ioe.printStackTrace();
  10:             HTMLEditorKit kit = new HTMLEditorKit();
  11:             Document doc = kit.createDefaultDocument();
  12:         ...
  13:             try {
  14:                 kit.read(reader, doc, 0);

View Full Code Here
   1: import javax.swing.text.html.HTML;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import javax.swing.text.html.parser.ParserDelegator;
   4:         ...
   5: 
   6: public class SimpleHtmlToPlainParser extends HTMLEditorKit.ParserCallback {
   7:     private boolean ignoreText;
   8:         ...
   9:             ioe.printStackTrace();
  10:             HTMLEditorKit kit = new HTMLEditorKit();
  11:             Document doc = kit.createDefaultDocument();
  12:         ...
  13:             try {
  14:                 kit.read(reader, doc, 0);

View Full Code Here
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: import javax.swing.text.html.StyleSheet;
   4:         ...
   5: 
   6:         textPane.setEditorKit(new HTMLEditorKit());
   7: 
   8:         ...
   9: 
  10:     protected HTMLDocument createDefaultDocument(HTMLEditorKit kit) {
  11:         StyleSheet styles = kit.getStyleSheet();
  12:         ...
  13:         doc.setBase(collateralURL);
  14:         kit.read(htmlInput,doc,0);

View Full Code Here
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: 
   4:         ...
   5:     {
   6:         HTMLEditorKit kit = new HTMLEditorKit();
   7:         HTMLDocument html = (HTMLDocument) kit.createDefaultDocument();
   8:         ...
   9:         {
  10:             kit.read(reader, html, 0);
  11:         }

View Full Code Here

setAutoFormSubmission

public void setAutoFormSubmission(boolean isAuto)
Specifies if an html form submission is processed automatically or only FormSubmitEvent is fired. By default it is set to true.
Since:
1.5

setDefaultCursor

public void setDefaultCursor(Cursor cursor)
Sets the default cursor.
Since:
1.3

setLinkCursor

public void setLinkCursor(Cursor cursor)
Sets the cursor to use over links.
Since:
1.3

setStyleSheet

public void setStyleSheet(StyleSheet s)
Set the set of styles to be used to render the various HTML elements. These styles are specified in terms of CSS specifications. Each document produced by the kit will have a copy of the sheet which it can add the document specific styles to. By default, the StyleSheet specified is shared by all HTMLEditorKit instances. This should be reimplemented to provide a finer granularity if desired.

write

public void write(Writer out,
                  Document doc,
                  int pos,
                  int len)
            throws IOException,
                   BadLocationException
Write content from a document to the given stream in a format appropriate for this kind of content handler.
Overrides:
write in interface DefaultEditorKit
Parameters:
out - the stream to write to
doc - the source for the write
pos - the location in the document to fetch the content
len - the amount to write out
Throws:
IOException - on any I/O error
BadLocationException - if pos represents an invalid location within the document
Usages and Demos :

View More Examples of write(Writer out,Document doc,int pos,int len)
   1: import javax.swing.text.html.HTMLDocument;
   2: import javax.swing.text.html.HTMLEditorKit;
   3: 
   4:         ...
   5:         }
   6:         HTMLEditorKit editorKit = new HTMLEditorKit();
   7:         try
   8:         ...
   9:         {
  10:             editorKit.write(outputStream, html, 0, html.getLength());
  11:         } catch (IOException e)

View Full Code Here