Class HTMLEditorKit
java.lang.Object
javax.swing.text.EditorKit
javax.swing.text.DefaultEditorKit
javax.swing.text.StyledEditorKit
javax.swing.text.html.HTMLEditorKit
- All Implemented Interfaces:
- Serializable,- Cloneable,- 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.
- Support editing
- 
 It might seem fairly obvious that a plug-in for JEditorPane
 should provide editing support, but that fact has several
 design considerations.  There are a substantial number of HTML
 documents that don't properly conform to an HTML specification.
 These must be normalized somewhat into a correct form if one
 is to edit them.  Additionally, users don't like to be presented
 with an excessive amount of structure editing, so using traditional
 text editing gestures is preferred over using the HTML structure
 exactly as defined in the HTML document.
 The modeling of HTML is provided by the class HTMLDocument. Its documentation describes the details of how the HTML is modeled. The editing support leverages heavily off of the text package.
- Extendable/Scalable
- 
 To maximize the usefulness of this kit, a great deal of effort
 has gone into making it extendable.  These are some of the
 features.
 - The parser is replaceable. 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.
- 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.
- 
   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 HTMLFactoryclass. This can be easily changed by subclassing or replacing the HTMLFactory and reimplementing the getViewFactory method to return the alternative factory.
- 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
 
- Asynchronous Loading
- 
 Larger documents involve a lot of parsing and take some time
 to load.  By default, this kit produces documents that will be
 loaded asynchronously if loaded using JEditorPane.setPage. This is controlled by a property on the document. The methodcreateDefaultDocumentcan be overridden to change this. The batching of work is done by theHTMLDocument.HTMLReaderclass. The actual work is done by theDefaultStyledDocumentandAbstractDocumentclasses in the text package.
- Customization from current LAF
- 
 HTML provides a well known set of features without exactly
 specifying the display characteristics.  Swing has a theme
 mechanism for its look-and-feel implementations.  It is desirable
 for the look-and-feel to feed display characteristics into the
 HTML views.  An user with poor vision for example would want
 high contrast and larger than typical fonts.
 The support for this is provided by the StyleSheetclass. The presentation of the HTML can be heavily influenced by the setting of the StyleSheet property on the EditorKit.
- Not lossy
- An EditorKit has the ability to be read and save documents. It is generally the most pleasing to users if there is no loss of data between the two operation. The policy of the HTMLEditorKit will be to store things not recognized or not necessarily visible so they can be subsequently written out. The model of the HTML document should therefore contain all information discovered while reading the document. This is constrained in some ways by the need to support editing (i.e. incorrect documents sometimes must be normalized). The guiding principle is that information shouldn't be lost, but some might be synthesized to produce a more correct model or it might be rearranged.
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classA factory to build views for HTML.static classAn abstract Action providing some convenience methods that may be useful in inserting HTML into an existing document.static classInsertHTMLTextAction can be used to insert an arbitrary string of HTML into an existing HTML document.static classClass to watch the associated component and fire hyperlink events on it when appropriate.static classInterface to be supported by the parser.static classThe result of parsing drives these callback methods.Nested classes/interfaces declared in class javax.swing.text.StyledEditorKitStyledEditorKit.AlignmentAction, StyledEditorKit.BoldAction, StyledEditorKit.FontFamilyAction, StyledEditorKit.FontSizeAction, StyledEditorKit.ForegroundAction, StyledEditorKit.ItalicAction, StyledEditorKit.StyledTextAction, StyledEditorKit.UnderlineActionNested classes/interfaces declared in class javax.swing.text.DefaultEditorKitDefaultEditorKit.BeepAction, DefaultEditorKit.CopyAction, DefaultEditorKit.CutAction, DefaultEditorKit.DefaultKeyTypedAction, DefaultEditorKit.InsertBreakAction, DefaultEditorKit.InsertContentAction, DefaultEditorKit.InsertTabAction, DefaultEditorKit.PasteAction
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final StringThe bold action identifierstatic final StringThe Color choice action identifier The color is passed as an argumentstatic final StringDefault Cascading Style Sheet file that sets up the tag views.static final StringThe font size increase to next value action identifierstatic final StringThe font size decrease to next value action identifierstatic final StringAlign images at the bottom.static final StringAlign images in the middle.static final StringAlign images at the top.static final StringAlign images at the border.static final StringThe italic action identifierstatic final StringThe logical style choice action identifier The logical style is passed in as an argumentstatic final StringThe paragraph left indent action identifierstatic final StringThe paragraph right indent action identifierFields declared in class javax.swing.text.DefaultEditorKitbackwardAction, beepAction, beginAction, beginLineAction, beginLineUpAction, beginParagraphAction, beginWordAction, copyAction, cutAction, defaultKeyTypedAction, deleteNextCharAction, deleteNextWordAction, deletePrevCharAction, deletePrevWordAction, downAction, endAction, endLineAction, endLineDownAction, EndOfLineStringProperty, endParagraphAction, endWordAction, forwardAction, insertBreakAction, insertContentAction, insertTabAction, nextWordAction, pageDownAction, pageUpAction, pasteAction, previousWordAction, readOnlyAction, selectAllAction, selectionBackwardAction, selectionBeginAction, selectionBeginLineAction, selectionBeginParagraphAction, selectionBeginWordAction, selectionDownAction, selectionEndAction, selectionEndLineAction, selectionEndParagraphAction, selectionEndWordAction, selectionForwardAction, selectionNextWordAction, selectionPreviousWordAction, selectionUpAction, selectLineAction, selectParagraphAction, selectWordAction, upAction, writableAction
- 
Constructor SummaryConstructorsConstructorDescriptionConstructs an HTMLEditorKit, creates a StyleContext, and loads the style sheet.
- 
Method SummaryModifier and TypeMethodDescriptionclone()Creates a copy of the editor kit.Create an uninitialized text storage model that is appropriate for this type of editor.protected voidcreateInputAttributes(Element element, MutableAttributeSet set) Copies the key/values inelements AttributeSet intoset.voidCalled when the kit is being removed from the JEditorPane.returns the AccessibleContext associated with this editor kitAction[]Fetches the command list for the editor.Get the MIME type of the data that this kit represents support for.Returns the default cursor.Gets the input attributes used for the styled editing actions.Returns the cursor to use over hyper links.protected HTMLEditorKit.ParserFetch the parser to use for reading HTML streams.Get the set of styles currently being used to render the HTML elements.Fetch a factory that is suitable for producing views of any models that are produced by this kit.voidinsertHTML(HTMLDocument doc, int offset, String html, int popDepth, int pushDepth, HTML.Tag insertTag) Inserts HTML into an existing document.voidCalled when the kit is being installed into the a JEditorPane.booleanIndicates whether an html form submission is processed automatically or onlyFormSubmitEventis fired.voidInserts content from the given stream.voidsetAutoFormSubmission(boolean isAuto) Specifies if an html form submission is processed automatically or onlyFormSubmitEventis fired.voidsetDefaultCursor(Cursor cursor) Sets the default cursor.voidsetLinkCursor(Cursor cursor) Sets the cursor to use over links.voidSet the set of styles to be used to render the various HTML elements.voidWrite content from a document to the given stream in a format appropriate for this kind of content handler.Methods declared in class javax.swing.text.StyledEditorKitgetCharacterAttributeRunMethods declared in class javax.swing.text.DefaultEditorKitcreateCaret, read, write
- 
Field Details- 
DEFAULT_CSSDefault Cascading Style Sheet file that sets up the tag views.- See Also:
 
- 
BOLD_ACTION
- 
ITALIC_ACTION
- 
PARA_INDENT_LEFT
- 
PARA_INDENT_RIGHT
- 
FONT_CHANGE_BIGGERThe font size increase to next value action identifier- See Also:
 
- 
FONT_CHANGE_SMALLERThe font size decrease to next value action identifier- See Also:
 
- 
COLOR_ACTIONThe Color choice action identifier The color is passed as an argument- See Also:
 
- 
LOGICAL_STYLE_ACTIONThe logical style choice action identifier The logical style is passed in as an argument- See Also:
 
- 
IMG_ALIGN_TOP
- 
IMG_ALIGN_MIDDLE
- 
IMG_ALIGN_BOTTOM
- 
IMG_BORDER
 
- 
- 
Constructor Details- 
HTMLEditorKitpublic HTMLEditorKit()Constructs an HTMLEditorKit, creates a StyleContext, and loads the style sheet.
 
- 
- 
Method Details- 
getContentTypeGet the MIME type of the data that this kit represents support for. This kit supports the typetext/html.- Overrides:
- getContentTypein class- DefaultEditorKit
- Returns:
- the type
 
- 
getViewFactoryFetch a factory that is suitable for producing views of any models that are produced by this kit.- Overrides:
- getViewFactoryin class- StyledEditorKit
- Returns:
- the factory
 
- 
createDefaultDocumentCreate an uninitialized text storage model that is appropriate for this type of editor.- Overrides:
- createDefaultDocumentin class- StyledEditorKit
- Returns:
- the model
 
- 
readInserts content from the given stream. Ifdocis 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:
- readin class- 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
 
- 
insertHTMLpublic 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
- html- the HTML string
- 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:
- BadLocationException- if- offsetis invalid
- IOException- on I/O error
- RuntimeException- (will eventually be a BadLocationException) if pos is invalid
 
- 
writepublic 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:
- writein class- 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- posrepresents an invalid location within the document
 
- 
installCalled when the kit is being installed into the a JEditorPane.- Overrides:
- installin class- StyledEditorKit
- Parameters:
- c- the JEditorPane
 
- 
deinstallCalled when the kit is being removed from the JEditorPane. This is used to unregister any listeners that were attached.- Overrides:
- deinstallin class- StyledEditorKit
- Parameters:
- c- the JEditorPane
 
- 
setStyleSheetSet 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.- Parameters:
- s- a StyleSheet
 
- 
getStyleSheetGet 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.- Returns:
- the StyleSheet
 
- 
getActionsFetches 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:
- getActionsin class- StyledEditorKit
- Returns:
- the command list
 
- 
createInputAttributesCopies the key/values inelements AttributeSet intoset. 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 inset.This is called anytime the caret moves over a different location. - Overrides:
- createInputAttributesin class- StyledEditorKit
- Parameters:
- element- the element
- set- the attributes
 
- 
getInputAttributesGets the input attributes used for the styled editing actions.- Overrides:
- getInputAttributesin class- StyledEditorKit
- Returns:
- the attribute set
 
- 
setDefaultCursorSets the default cursor.- Parameters:
- cursor- a cursor
- Since:
- 1.3
 
- 
getDefaultCursor
- 
setLinkCursorSets the cursor to use over links.- Parameters:
- cursor- a cursor
- Since:
- 1.3
 
- 
getLinkCursorReturns the cursor to use over hyper links.- Returns:
- the cursor
- Since:
- 1.3
 
- 
isAutoFormSubmissionpublic boolean isAutoFormSubmission()Indicates whether an html form submission is processed automatically or onlyFormSubmitEventis fired.- Returns:
- true if html form submission is processed automatically, false otherwise.
- Since:
- 1.5
- See Also:
 
- 
setAutoFormSubmissionpublic void setAutoFormSubmission(boolean isAuto) Specifies if an html form submission is processed automatically or onlyFormSubmitEventis fired. By default it is set to true.- Parameters:
- isAuto- if- true, html form submission is processed automatically.
- Since:
- 1.5
- See Also:
 
- 
cloneCreates a copy of the editor kit.- Overrides:
- clonein class- StyledEditorKit
- Returns:
- the copy
- See Also:
 
- 
getParserFetch 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.- Returns:
- the parser
 
- 
getAccessibleContextreturns the AccessibleContext associated with this editor kit- Specified by:
- getAccessibleContextin interface- Accessible
- Returns:
- the AccessibleContext associated with this editor kit
- Since:
- 1.4
 
 
-