クラスHTMLDocument.HTMLReader
java.lang.Object
javax.swing.text.html.HTMLEditorKit.ParserCallback
javax.swing.text.html.HTMLDocument.HTMLReader
- 含まれているクラス:
HTMLDocument
public class HTMLDocument.HTMLReader extends HTMLEditorKit.ParserCallback
HTMLドキュメントをHTML要素構造とともにロードするためのHTMLリーダーです。 このクラスは、パーサーからのコールバックのセットであり、属性のタグが付いた要素のセットを生成するために実装されます。 解析は必要な要素サブツリーを記述するトークン群(ElementSpec)を組み立て、これを書込みロックのもとでドキュメントの外部クラスの挿入メソッドを使ってドキュメントに挿入します。
リーダーを構成するには、アクションの処理方法を記述したHTMLDocument.HTMLReader.TagAction型のアクションを登録します。 提供されているアクションの基本になっている考え方は、要素構造が結局のところなんらかのスタイルを持つ文字の並びから成る段落であれば、もっとも自然なテキストの編集オペレーションを提供できる、というものです。 構造的に指定した方が自然な場合もあるので、段落上での任意の構造が許可されるようにすべきであり、その場合でも、構造的なアクションを使って編集する必要があります。 つまり、解析中のストリームで指定されているHTML要素の一部は、属性に折りたたまれ、場合によっては段落が合成されます。 HTML要素が属性に変換される場合、情報が失われないように属性キーはHTML.Tag型になり、値はAttributeSet型になります。 これによって、既存のアクションの多くが機能するようになり、ユーザーは入力をキーボードから入力したり、リターン・キー、BackSpaceキー、Deleteキーなどを押したりして、その適切な結果を得ることができます。 選択を生成したり、属性を適用または削除したりすることもできます。以上のことを考慮した上で、リーダーが行う作業は次のようなタスクに分類できます。
- ブロック
- ストリームで指定されたものと同様の構造を構成します。 このタスクは、ほかの要素を格納する要素を生成します。
- 段落
- ブロックと同様ですが、段落要素を合成しなくても済むように、要素が段落ビューとともに使用されることを前提とする点が異なります。
- 文字
- 要素を任意のテキスト位置で開始し、別の任意のテキスト位置で終了する属性として利用します。 これは最終的には、現在平坦化されているすべてのHTML文字要素とともに1つのテキスト中の文字の並びに統合されます。
- 特別
- 埋め込まれたグラフィック要素を生成します。
- フォーム
- 埋込みグラフィック要素と同様の要素を生成します。グラフィック要素との違いは、フォームに関連したコンポーネント・モデルも持っているという点です。
- 非表示
- ドキュメントが読取り専用で表示された場合は隠されてビューには表示されず、ドキュメントが編集される場合は表示される要素を生成します。 これはモデルから情報が失われないようにするのに役立ち、コメントや未知のタグのようなものを格納するために使用します。
現時点では、<APPLET>、<PARAM>、<MAP>、<AREA>、<LINK>、<SCRIPT>、および<STYLE>はサポートされていません。
HTML.Tagで定義されているタグに対して割り当てられているアクションの記述を次の表に示します。
| タグ | ACtion |
|---|---|
HTML.Tag.A
| CharacterAction |
HTML.Tag.ADDRESS
| CharacterAction |
HTML.Tag.APPLET
| HiddenAction |
HTML.Tag.AREA
| AreaAction |
HTML.Tag.B
| CharacterAction |
HTML.Tag.BASE
| BaseAction |
HTML.Tag.BASEFONT
| CharacterAction |
HTML.Tag.BIG
| CharacterAction |
HTML.Tag.BLOCKQUOTE
| BlockAction |
HTML.Tag.BODY
| BlockAction |
HTML.Tag.BR
| SpecialAction |
HTML.Tag.CAPTION
| BlockAction |
HTML.Tag.CENTER
| BlockAction |
HTML.Tag.CITE
| CharacterAction |
HTML.Tag.CODE
| CharacterAction |
HTML.Tag.DD
| BlockAction |
HTML.Tag.DFN
| CharacterAction |
HTML.Tag.DIR
| BlockAction |
HTML.Tag.DIV
| BlockAction |
HTML.Tag.DL
| BlockAction |
HTML.Tag.DT
| ParagraphAction |
HTML.Tag.EM
| CharacterAction |
HTML.Tag.FONT
| CharacterAction |
HTML.Tag.FORM
| 1.4ではBlockAction |
HTML.Tag.FRAME
| SpecialAction |
HTML.Tag.FRAMESET
| BlockAction |
HTML.Tag.H1
| ParagraphAction |
HTML.Tag.H2
| ParagraphAction |
HTML.Tag.H3
| ParagraphAction |
HTML.Tag.H4
| ParagraphAction |
HTML.Tag.H5
| ParagraphAction |
HTML.Tag.H6
| ParagraphAction |
HTML.Tag.HEAD
| HeadAction |
HTML.Tag.HR
| SpecialAction |
HTML.Tag.HTML
| BlockAction |
HTML.Tag.I
| CharacterAction |
HTML.Tag.IMG
| SpecialAction |
HTML.Tag.INPUT
| FormAction |
HTML.Tag.ISINDEX
| IsndexAction |
HTML.Tag.KBD
| CharacterAction |
HTML.Tag.LI
| BlockAction |
HTML.Tag.LINK
| LinkAction |
HTML.Tag.MAP
| MapAction |
HTML.Tag.MENU
| BlockAction |
HTML.Tag.META
| MetaAction |
HTML.Tag.NOFRAMES
| BlockAction |
HTML.Tag.OBJECT
| SpecialAction |
HTML.Tag.OL
| BlockAction |
HTML.Tag.OPTION
| FormAction |
HTML.Tag.P
| ParagraphAction |
HTML.Tag.PARAM
| HiddenAction |
HTML.Tag.PRE
| PreAction |
HTML.Tag.SAMP
| CharacterAction |
HTML.Tag.SCRIPT
| HiddenAction |
HTML.Tag.SELECT
| FormAction |
HTML.Tag.SMALL
| CharacterAction |
HTML.Tag.STRIKE
| CharacterAction |
HTML.Tag.S
| CharacterAction |
HTML.Tag.STRONG
| CharacterAction |
HTML.Tag.STYLE
| StyleAction |
HTML.Tag.SUB
| CharacterAction |
HTML.Tag.SUP
| CharacterAction |
HTML.Tag.TABLE
| BlockAction |
HTML.Tag.TD
| BlockAction |
HTML.Tag.TEXTAREA
| FormAction |
HTML.Tag.TH
| BlockAction |
HTML.Tag.TITLE
| TitleAction |
HTML.Tag.TR
| BlockAction |
HTML.Tag.TT
| CharacterAction |
HTML.Tag.U
| CharacterAction |
HTML.Tag.UL
| BlockAction |
HTML.Tag.VAR
| CharacterAction |
</html>が見つかると、Actionは通知されなくなります。
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明classリーダーのブロック・タスクを処理するためにデフォルトで割り当てられるアクション。classリーダーのCharacterタスクを処理するためにデフォルトで割り当てられるアクション。classフォームの各コントロールを表すための要素をすべて生成して、フォームをサポートするためのアクションです。classリーダーの非表示タスクを処理するためにデフォルトで割り当てられるアクション。classリーダーのIsindexタスクを処理するためにデフォルトで割り当てられるアクション。class読者の段落タスクを処理するためにデフォルトで割り当てられるアクション。classリーダーのPreブロック・タスクを処理するためにデフォルトで割り当てられるアクション。classリーダーの特別タスクを処理するためにデフォルトで割り当てられるアクション。classタグの構文解析に応じて実行されるアクションです。 -
フィールドのサマリー
フィールド修飾子と型フィールド説明protected MutableAttributeSet現在の文字属性セット。protected Vector<DefaultStyledDocument.ElementSpec> 要素を構築し続けるバッファ。クラスjavax.swing.text.html.HTMLEditorKit.ParserCallbackで宣言されたフィールド
IMPLIED -
コンストラクタのサマリー
コンストラクタコンストラクタ説明HTMLReader(int offset) デフォルトのポップおよびプッシュ深度を使用してHTMLReaderを構築し、挿入するタグはなし。HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag) HTMLReaderを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明protected voidaddContent(char[] data, int offs, int length) 現在の文字属性を持つテキストを追加します。protected voidaddContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary) 現在の文字属性を持つテキストを追加します。protected void基本的に属性セット全体で指定されているコンテンツを追加します。protected void解析バッファに命令を追加して、指定した型のブロック要素を閉じます。protected voidblockOpen(HTML.Tag t, MutableAttributeSet attr) 解析バッファに命令を追加して、指定した属性を持つブロック要素を生成します。voidflush()HTMLリーダーで呼び出される最後のメソッドです。voidストリームの解析が終了し、flushの前に呼び出されます。voidhandleEndTag(HTML.Tag t, int pos) パーサーからのコールバックです。voidhandleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) パーサーからのコールバックです。voidhandleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) パーサーからのコールバックです。voidhandleText(char[] data, int pos) テキスト・ブロックが見つかったことを示すために、パーサーによって呼び出されます。protected void以前にプッシュした文字スタイルをスタックからポップして、以前の文字スタイルに戻します。protected voidpreContent(char[] data) PRE要素で検出された指定されたコンテンツを追加します。protected void新しい入れ子の文字スタイルを作成する準備として、現在の文字スタイルをスタックにプッシュします。protected void指定したタグのハンドラを登録します。protected voidtextAreaContent(char[] data) テキスト領域ドキュメントに指定されたコンテンツを追加します。クラスjavax.swing.text.html.HTMLEditorKit.ParserCallbackで宣言されたメソッド
handleComment, handleError
-
フィールド詳細
-
parseBuffer
protected Vector<DefaultStyledDocument.ElementSpec> parseBuffer要素を構築し続けるバッファ。 -
charAttr
protected MutableAttributeSet charAttr現在の文字属性セット。
-
-
コンストラクタの詳細
-
HTMLReader
public HTMLReader(int offset) デフォルトのポップおよびプッシュ深度を使用してHTMLReaderを構築し、挿入するタグはなし。- パラメータ:
offset- 開始オフセット
-
HTMLReader
public HTMLReader(int offset, int popDepth, int pushDepth, HTML.Tag insertTag) HTMLReaderを構築します。- パラメータ:
offset- 開始オフセットpopDepth- 新しい要素を挿入する前にいくつの親が上昇するかpushDepth- 挿入する前に何人の親が降下するか(popDepthを基準にした)insertTag- (nullの場合がある)を挿入するタグ
-
-
メソッドの詳細
-
flush
public void flush() throws BadLocationExceptionHTMLリーダーで呼び出される最後のメソッドです。 保留状態にある変更がドキュメントにフラッシュされるようにします。 現在、同期的にロードしているため、変更のセット全体がこの時点で反映されます。- オーバーライド:
flush、クラスHTMLEditorKit.ParserCallback- スロー:
BadLocationException- 指定された位置が、関連するドキュメント内の有効な位置を示さない場合。
-
handleText
public void handleText(char[] data, int pos) テキスト・ブロックが見つかったことを示すために、パーサーによって呼び出されます。- オーバーライド:
handleText、クラスHTMLEditorKit.ParserCallback- パラメータ:
data- データpos- 位置
-
handleStartTag
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) パーサーからのコールバックです。 このタグの適切なハンドラに配信します。- オーバーライド:
handleStartTag、クラスHTMLEditorKit.ParserCallback- パラメータ:
t- HTMLタグa- 属性のセットpos- 位置
-
handleEndTag
public void handleEndTag(HTML.Tag t, int pos) パーサーからのコールバックです。 このタグの適切なハンドラに配信します。- オーバーライド:
handleEndTag、クラスHTMLEditorKit.ParserCallback- パラメータ:
t- HTMLタグpos- 位置
-
handleSimpleTag
public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) パーサーからのコールバックです。 このタグの適切なハンドラに配信します。- オーバーライド:
handleSimpleTag、クラスHTMLEditorKit.ParserCallback- パラメータ:
t- HTMLタグa- 属性のセットpos- 位置
-
handleEndOfLineString
public void handleEndOfLineString(String eol) ストリームの解析が終了し、flushの前に呼び出されます。eolは、ストリームの解析中にもっとも多く検出される\n、\rまたは\r\nのどれかです。- オーバーライド:
handleEndOfLineString、クラスHTMLEditorKit.ParserCallback- パラメータ:
eol- eolの値- 導入されたバージョン:
- 1.3
-
registerTag
protected void registerTag(HTML.Tag t, HTMLDocument.HTMLReader.TagAction a) 指定したタグのハンドラを登録します。 デフォルトでは、既知のタグはすべて登録されています。 特定のタグの処理を変更したり、カスタム・タグのサポートを追加したりするのに使用されます。- パラメータ:
t- HTMLタグa- タグ・アクション・ハンドラ
-
pushCharacterStyle
protected void pushCharacterStyle()新しい入れ子の文字スタイルを作成する準備として、現在の文字スタイルをスタックにプッシュします。 -
popCharacterStyle
protected void popCharacterStyle()以前にプッシュした文字スタイルをスタックからポップして、以前の文字スタイルに戻します。 -
textAreaContent
protected void textAreaContent(char[] data) テキスト領域ドキュメントに指定されたコンテンツを追加します。 このメソッドは、テキスト領域コンテキストで呼び出されます。 したがって、表示されるテキストはすべてテキスト領域に属し、そのテキスト領域に関連したTextAreaDocumentに追加されます。- パラメータ:
data- 与えられた内容
-
preContent
protected void preContent(char[] data) PRE要素で検出された指定されたコンテンツを追加します。 一連のテキストを保持するための行を合成し、addContentを呼び出して実際にテキストを追加します。- パラメータ:
data- 与えられた内容
-
blockOpen
protected void blockOpen(HTML.Tag t, MutableAttributeSet attr) 解析バッファに命令を追加して、指定した属性を持つブロック要素を生成します。- パラメータ:
t- HTMLタグattr- 属性セット
-
blockClose
-
addContent
protected void addContent(char[] data, int offs, int length) 現在の文字属性を持つテキストを追加します。- パラメータ:
data- 追加するコンテンツoffs- 初期オフセットlength- 長さ
-
addContent
protected void addContent(char[] data, int offs, int length, boolean generateImpliedPIfNecessary) 現在の文字属性を持つテキストを追加します。- パラメータ:
data- 追加するコンテンツoffs- 初期オフセットlength- 長さgenerateImpliedPIfNecessary- 暗黙的に指定された段落を生成するかどうか
-
addSpecialElement
protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a) 基本的に属性セット全体で指定されているコンテンツを追加します。- パラメータ:
t- HTMLタグa- 属性セット
-