Commit 18e479e2 by Michael Koch

[multiple changes]

2005-04-19  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/xml/dom/html2/DomHTMLParser.java:
	Changed 'enum' references to become 'enumeration'.

2005-04-19  Audrius Meskauskas  <audriusa@bluewin.ch>

	* gnu/xml/dom/html2/DomHTMLParser.java: New file.

2005-04-19  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/javax/swing/text/html/parser/htmlAttributeSet.java:
	(getAttributeNames()): Replaced 'enum' with 'enumeration'.
	* gnu/javax/swing/text/html/parser/htmlValidator.java:
	(validateParameters(TagElement,htmlAttributeSet)):
	Replaced 'enum' with 'enumeration'.
	(validateAttribute(TagElement,htmlAttributeSet,Enumeration,Enumeration)):
	Likewise.

2005-04-19  Audrius Meskauskas  <audriusa@bluewin.ch>

	* javax/swing/text/html/parser/Entity.java (getType): New method.
	* javax/swing/text/html/parser/DocumentParser.java:
	Inherit from javax.swing.text.html.parser.Parser.

2005-04-19  Chris Burdess  <dog@gnu.org>

	* gnu/xml/dom/html2/DomHTMLDocument.java: Fixed element creation and
	check for HTML/XHTML namespace.

2005-04-19  Audrius Meskauskas  <audriusa@bluewin.ch>

	* javax/swing/text/html/parser/Parser.java,
	javax/swing/text/html/parser/Entity.java:
	Inheriting from DTDConstants.
	* javax/swing/text/html/parser/AttributeList.java
	(getValues): Changed return type.
	* javax/swing/text/html/parser/DocumentParser
	(parse): Adding the callback parameter that receives
	the parsing events.

2005-04-19  Chris Burdess  <dog@gnu.org>

	* gnu/xml/dom/DomImpl.java,
	gnu/xml/dom/html2/DomHTMLAnchorElement.java,
	gnu/xml/dom/html2/DomHTMLDocument.java,
	gnu/xml/dom/html2/DomHTMLElement.java,
	gnu/xml/dom/html2/DomHTMLFormElement.java,
	gnu/xml/dom/html2/DomHTMLFrameElement.java,
	gnu/xml/dom/html2/DomHTMLIFrameElement.java,
	gnu/xml/dom/html2/DomHTMLImpl.java,
	gnu/xml/dom/html2/DomHTMLInputElement.java,
	gnu/xml/dom/html2/DomHTMLObjectElement.java,
	gnu/xml/dom/html2/DomHTMLOptionElement.java,
	gnu/xml/dom/html2/DomHTMLSelectElement.java,
	gnu/xml/dom/html2/DomHTMLTableCellElement.java,
	gnu/xml/dom/html2/DomHTMLTableElement.java,
	gnu/xml/dom/html2/DomHTMLTableRowElement.java,
	gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
	gnu/xml/dom/html2/DomHTMLTextAreaElement.java: JAXP integration,
	UI events, and tree utility functions.

2005-04-19  Michael Koch  <konqueror@gmx.de>

	* gnu/javax/swing/text/html/parser/HTML_401F.java,
	gnu/javax/swing/text/html/parser/gnuDTD.java,
	gnu/javax/swing/text/html/parser/models/node.java:
	Reworked import statements.

2005-04-19  Audrius Meskauskas, Lithuania  <AudriusA@Bioinformatics.org>

	* javax/swing/text/html/HTMLDocument.java: New file.

2005-04-19  Michael Koch  <konqueror@gmx.de>

	* javax/swing/text/html/HTMLFrameHyperlinkEvent.java:
	Reformatted.
	* javax/swing/text/html/parser/AttributeList.java:
	Fixed order of modifiers.
	(AttributeList): Made final.
	* javax/swing/text/html/parser/ContentModel.java:
	Fixed html characters in javadocs.
	* javax/swing/text/html/parser/DTD.java
	(DTD): Don't implement java.io.Serializable directly.
	(getElement): Simplified.
	* javax/swing/text/html/parser/DTDConstants.java:
	Reformatted file.
	* javax/swing/text/html/parser/Element.java:
	Fixed order of modifiers.
	* javax/swing/text/html/parser/Parser.java:
	Reformatted. Don't use fully-qualified class names.
	* javax/swing/text/html/parser/ParserDelegator.java:
	Fixed order of modifiers.
	* javax/swing/text/rtf/RTFParser.java:
	Re-ordered import statements.
	* javax/swing/text/rtf/RTFScanner.java:
	Removed unused import statement.

2005-04-19  Chris Burdess  <dog@gnu.org>

	* gnu/xml/dom/html2/DomHTMLButtonElement.java,
	gnu/xml/dom/html2/DomHTMLCollection.java,
	gnu/xml/dom/html2/DomHTMLDocument.java,
	gnu/xml/dom/html2/DomHTMLElement.java: Extensions for new element
	types.
	* gnu/xml/dom/html2/DomHTMLDListElement.java,
	gnu/xml/dom/html2/DomHTMLDirectoryElement.java,
	gnu/xml/dom/html2/DomHTMLDivElement.java,
	gnu/xml/dom/html2/DomHTMLFieldSetElement.java,
	gnu/xml/dom/html2/DomHTMLFontElement.java,
	gnu/xml/dom/html2/DomHTMLFormElement.java,
	gnu/xml/dom/html2/DomHTMLFrameElement.java,
	gnu/xml/dom/html2/DomHTMLFrameSetElement.java,
	gnu/xml/dom/html2/DomHTMLHRElement.java,
	gnu/xml/dom/html2/DomHTMLHeadElement.java,
	gnu/xml/dom/html2/DomHTMLHeadingElement.java,
	gnu/xml/dom/html2/DomHTMLHtmlElement.java,
	gnu/xml/dom/html2/DomHTMLIFrameElement.java,
	gnu/xml/dom/html2/DomHTMLImageElement.java,
	gnu/xml/dom/html2/DomHTMLInputElement.java,
	gnu/xml/dom/html2/DomHTMLIsIndexElement.java,
	gnu/xml/dom/html2/DomHTMLLIElement.java,
	gnu/xml/dom/html2/DomHTMLLabelElement.java,
	gnu/xml/dom/html2/DomHTMLLegendElement.java,
	gnu/xml/dom/html2/DomHTMLLinkElement.java,
	gnu/xml/dom/html2/DomHTMLMapElement.java,
	gnu/xml/dom/html2/DomHTMLMenuElement.java,
	gnu/xml/dom/html2/DomHTMLMetaElement.java,
	gnu/xml/dom/html2/DomHTMLModElement.java,
	gnu/xml/dom/html2/DomHTMLOListElement.java,
	gnu/xml/dom/html2/DomHTMLObjectElement.java,
	gnu/xml/dom/html2/DomHTMLOptGroupElement.java,
	gnu/xml/dom/html2/DomHTMLOptionElement.java,
	gnu/xml/dom/html2/DomHTMLParagraphElement.java,
	gnu/xml/dom/html2/DomHTMLParamElement.java,
	gnu/xml/dom/html2/DomHTMLPreElement.java,
	gnu/xml/dom/html2/DomHTMLQuoteElement.java,
	gnu/xml/dom/html2/DomHTMLScriptElement.java,
	gnu/xml/dom/html2/DomHTMLSelectElement.java,
	gnu/xml/dom/html2/DomHTMLStyleElement.java,
	gnu/xml/dom/html2/DomHTMLTableCaptionElement.java,
	gnu/xml/dom/html2/DomHTMLTableCellElement.java,
	gnu/xml/dom/html2/DomHTMLTableColElement.java,
	gnu/xml/dom/html2/DomHTMLTableElement.java,
	gnu/xml/dom/html2/DomHTMLTableRowElement.java,
	gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
	gnu/xml/dom/html2/DomHTMLTextAreaElement.java,
	gnu/xml/dom/html2/DomHTMLTitleElement.java,
	gnu/xml/dom/html2/DomHTMLUListElement.java: New files.

2005-04-19  Audrius Meskauskas  <audriusa@bluewin.ch>

	* javax/swing/text/ChangedCharSetException.java,
	javax/swing/text/html/HTMLEditorKit.java,
	javax/swing/text/html/HTMLFrameHyperlinkEvent.java,
	javax/swing/text/html/parser/AttributeList.java,
	javax/swing/text/html/parser/ContentModel.java,
	javax/swing/text/html/parser/DocumentParser.java,
	javax/swing/text/html/parser/DTD.java,
	javax/swing/text/html/parser/DTDConstants.java,
	javax/swing/text/html/parser/Element.java,
	javax/swing/text/html/parser/Entity.java,
	javax/swing/text/html/parser/Parser.java,
	javax/swing/text/html/parser/TagElement.java,
	gnu/javax/swing/text/html/package.html,
	gnu/javax/swing/text/html/parser/gnuDTD.java,
	gnu/javax/swing/text/html/parser/HTML_401F.java,
	gnu/javax/swing/text/html/parser/htmlAttributeSet.java,
	gnu/javax/swing/text/html/parser/htmlValidator.java,
	gnu/javax/swing/text/html/parser/package.html,
	gnu/javax/swing/text/html/parser/models/list.java,
	gnu/javax/swing/text/html/parser/models/node.java,
	gnu/javax/swing/text/html/parser/models/noTagModel.java,
	gnu/javax/swing/text/html/parser/models/package.html,
	gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java,
	gnu/javax/swing/text/html/parser/models/TableRowContentModel.java,
	gnu/javax/swing/text/html/parser/models/transformer.java,
	gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java,
	gnu/javax/swing/text/html/parser/support/package.html,
	gnu/javax/swing/text/html/parser/support/parameterDefaulter.java,
	gnu/javax/swing/text/html/parser/support/Parser.java,
	gnu/javax/swing/text/html/parser/support/textPreProcessor.java,
	gnu/javax/swing/text/html/parser/support/low/Buffer.java,
	gnu/javax/swing/text/html/parser/support/low/Constants.java,
	gnu/javax/swing/text/html/parser/support/low/Location.java,
	gnu/javax/swing/text/html/parser/support/low/node.java,
	gnu/javax/swing/text/html/parser/support/low/package.html,
	gnu/javax/swing/text/html/parser/support/low/ParseException.java,
	gnu/javax/swing/text/html/parser/support/low/pattern.java,
	gnu/javax/swing/text/html/parser/support/low/Queue.java,
	gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java:
	New files.
	* javax/swing/text/html/HTML.java,
	javax/swing/text/html/parser/ParserDelegator.java:
	New files (replacing).
	* javax/swing/text/html/package.html,
	javax/swing/text/html/parser/package.html: Documenting the
	packages.

2005-04-19  Chris Burdess  <dog@gnu.org>

	* gnu/xml/dom/html2/DomHTMLAnchorElement.java,
	gnu/xml/dom/html2/DomHTMLAppletElement.java,
	gnu/xml/dom/html2/DomHTMLAreaElement.java,
	gnu/xml/dom/html2/DomHTMLBaseElement.java,
	gnu/xml/dom/html2/DomHTMLBaseFontElement.java,
	gnu/xml/dom/html2/DomHTMLBodyElement.java,
	gnu/xml/dom/html2/DomHTMLBRElement.java,
	gnu/xml/dom/html2/DomHTMLButtonElement.java,
	gnu/xml/dom/html2/DomHTMLCollection.java,
	gnu/xml/dom/html2/DomHTMLDocument.java,
	gnu/xml/dom/html2/DomHTMLElement.java: New files.

2005-04-19  Michael Koch  <konqueror@gmx.de>

	* Makefile.am: Added new files.
	* Makefile.in: Regenerated.

From-SVN: r98406
parent c5f083ef
2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/xml/dom/html2/DomHTMLParser.java:
Changed 'enum' references to become 'enumeration'.
2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
* gnu/xml/dom/html2/DomHTMLParser.java: New file.
2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
* gnu/javax/swing/text/html/parser/htmlAttributeSet.java:
(getAttributeNames()): Replaced 'enum' with 'enumeration'.
* gnu/javax/swing/text/html/parser/htmlValidator.java:
(validateParameters(TagElement,htmlAttributeSet)):
Replaced 'enum' with 'enumeration'.
(validateAttribute(TagElement,htmlAttributeSet,Enumeration,Enumeration)):
Likewise.
2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
* javax/swing/text/html/parser/Entity.java (getType): New method.
* javax/swing/text/html/parser/DocumentParser.java:
Inherit from javax.swing.text.html.parser.Parser.
2005-04-19 Chris Burdess <dog@gnu.org>
* gnu/xml/dom/html2/DomHTMLDocument.java: Fixed element creation and
check for HTML/XHTML namespace.
2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
* javax/swing/text/html/parser/Parser.java,
javax/swing/text/html/parser/Entity.java:
Inheriting from DTDConstants.
* javax/swing/text/html/parser/AttributeList.java
(getValues): Changed return type.
* javax/swing/text/html/parser/DocumentParser
(parse): Adding the callback parameter that receives
the parsing events.
2005-04-19 Chris Burdess <dog@gnu.org>
* gnu/xml/dom/DomImpl.java,
gnu/xml/dom/html2/DomHTMLAnchorElement.java,
gnu/xml/dom/html2/DomHTMLDocument.java,
gnu/xml/dom/html2/DomHTMLElement.java,
gnu/xml/dom/html2/DomHTMLFormElement.java,
gnu/xml/dom/html2/DomHTMLFrameElement.java,
gnu/xml/dom/html2/DomHTMLIFrameElement.java,
gnu/xml/dom/html2/DomHTMLImpl.java,
gnu/xml/dom/html2/DomHTMLInputElement.java,
gnu/xml/dom/html2/DomHTMLObjectElement.java,
gnu/xml/dom/html2/DomHTMLOptionElement.java,
gnu/xml/dom/html2/DomHTMLSelectElement.java,
gnu/xml/dom/html2/DomHTMLTableCellElement.java,
gnu/xml/dom/html2/DomHTMLTableElement.java,
gnu/xml/dom/html2/DomHTMLTableRowElement.java,
gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
gnu/xml/dom/html2/DomHTMLTextAreaElement.java: JAXP integration,
UI events, and tree utility functions.
2005-04-19 Michael Koch <konqueror@gmx.de>
* gnu/javax/swing/text/html/parser/HTML_401F.java,
gnu/javax/swing/text/html/parser/gnuDTD.java,
gnu/javax/swing/text/html/parser/models/node.java:
Reworked import statements.
2005-04-19 Audrius Meskauskas, Lithuania <AudriusA@Bioinformatics.org>
* javax/swing/text/html/HTMLDocument.java: New file.
2005-04-19 Michael Koch <konqueror@gmx.de>
* javax/swing/text/html/HTMLFrameHyperlinkEvent.java:
Reformatted.
* javax/swing/text/html/parser/AttributeList.java:
Fixed order of modifiers.
(AttributeList): Made final.
* javax/swing/text/html/parser/ContentModel.java:
Fixed html characters in javadocs.
* javax/swing/text/html/parser/DTD.java
(DTD): Don't implement java.io.Serializable directly.
(getElement): Simplified.
* javax/swing/text/html/parser/DTDConstants.java:
Reformatted file.
* javax/swing/text/html/parser/Element.java:
Fixed order of modifiers.
* javax/swing/text/html/parser/Parser.java:
Reformatted. Don't use fully-qualified class names.
* javax/swing/text/html/parser/ParserDelegator.java:
Fixed order of modifiers.
* javax/swing/text/rtf/RTFParser.java:
Re-ordered import statements.
* javax/swing/text/rtf/RTFScanner.java:
Removed unused import statement.
2005-04-19 Chris Burdess <dog@gnu.org>
* gnu/xml/dom/html2/DomHTMLButtonElement.java,
gnu/xml/dom/html2/DomHTMLCollection.java,
gnu/xml/dom/html2/DomHTMLDocument.java,
gnu/xml/dom/html2/DomHTMLElement.java: Extensions for new element
types.
* gnu/xml/dom/html2/DomHTMLDListElement.java,
gnu/xml/dom/html2/DomHTMLDirectoryElement.java,
gnu/xml/dom/html2/DomHTMLDivElement.java,
gnu/xml/dom/html2/DomHTMLFieldSetElement.java,
gnu/xml/dom/html2/DomHTMLFontElement.java,
gnu/xml/dom/html2/DomHTMLFormElement.java,
gnu/xml/dom/html2/DomHTMLFrameElement.java,
gnu/xml/dom/html2/DomHTMLFrameSetElement.java,
gnu/xml/dom/html2/DomHTMLHRElement.java,
gnu/xml/dom/html2/DomHTMLHeadElement.java,
gnu/xml/dom/html2/DomHTMLHeadingElement.java,
gnu/xml/dom/html2/DomHTMLHtmlElement.java,
gnu/xml/dom/html2/DomHTMLIFrameElement.java,
gnu/xml/dom/html2/DomHTMLImageElement.java,
gnu/xml/dom/html2/DomHTMLInputElement.java,
gnu/xml/dom/html2/DomHTMLIsIndexElement.java,
gnu/xml/dom/html2/DomHTMLLIElement.java,
gnu/xml/dom/html2/DomHTMLLabelElement.java,
gnu/xml/dom/html2/DomHTMLLegendElement.java,
gnu/xml/dom/html2/DomHTMLLinkElement.java,
gnu/xml/dom/html2/DomHTMLMapElement.java,
gnu/xml/dom/html2/DomHTMLMenuElement.java,
gnu/xml/dom/html2/DomHTMLMetaElement.java,
gnu/xml/dom/html2/DomHTMLModElement.java,
gnu/xml/dom/html2/DomHTMLOListElement.java,
gnu/xml/dom/html2/DomHTMLObjectElement.java,
gnu/xml/dom/html2/DomHTMLOptGroupElement.java,
gnu/xml/dom/html2/DomHTMLOptionElement.java,
gnu/xml/dom/html2/DomHTMLParagraphElement.java,
gnu/xml/dom/html2/DomHTMLParamElement.java,
gnu/xml/dom/html2/DomHTMLPreElement.java,
gnu/xml/dom/html2/DomHTMLQuoteElement.java,
gnu/xml/dom/html2/DomHTMLScriptElement.java,
gnu/xml/dom/html2/DomHTMLSelectElement.java,
gnu/xml/dom/html2/DomHTMLStyleElement.java,
gnu/xml/dom/html2/DomHTMLTableCaptionElement.java,
gnu/xml/dom/html2/DomHTMLTableCellElement.java,
gnu/xml/dom/html2/DomHTMLTableColElement.java,
gnu/xml/dom/html2/DomHTMLTableElement.java,
gnu/xml/dom/html2/DomHTMLTableRowElement.java,
gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
gnu/xml/dom/html2/DomHTMLTextAreaElement.java,
gnu/xml/dom/html2/DomHTMLTitleElement.java,
gnu/xml/dom/html2/DomHTMLUListElement.java: New files.
2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
* javax/swing/text/ChangedCharSetException.java,
javax/swing/text/html/HTMLEditorKit.java,
javax/swing/text/html/HTMLFrameHyperlinkEvent.java,
javax/swing/text/html/parser/AttributeList.java,
javax/swing/text/html/parser/ContentModel.java,
javax/swing/text/html/parser/DocumentParser.java,
javax/swing/text/html/parser/DTD.java,
javax/swing/text/html/parser/DTDConstants.java,
javax/swing/text/html/parser/Element.java,
javax/swing/text/html/parser/Entity.java,
javax/swing/text/html/parser/Parser.java,
javax/swing/text/html/parser/TagElement.java,
gnu/javax/swing/text/html/package.html,
gnu/javax/swing/text/html/parser/gnuDTD.java,
gnu/javax/swing/text/html/parser/HTML_401F.java,
gnu/javax/swing/text/html/parser/htmlAttributeSet.java,
gnu/javax/swing/text/html/parser/htmlValidator.java,
gnu/javax/swing/text/html/parser/package.html,
gnu/javax/swing/text/html/parser/models/list.java,
gnu/javax/swing/text/html/parser/models/node.java,
gnu/javax/swing/text/html/parser/models/noTagModel.java,
gnu/javax/swing/text/html/parser/models/package.html,
gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java,
gnu/javax/swing/text/html/parser/models/TableRowContentModel.java,
gnu/javax/swing/text/html/parser/models/transformer.java,
gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java,
gnu/javax/swing/text/html/parser/support/package.html,
gnu/javax/swing/text/html/parser/support/parameterDefaulter.java,
gnu/javax/swing/text/html/parser/support/Parser.java,
gnu/javax/swing/text/html/parser/support/textPreProcessor.java,
gnu/javax/swing/text/html/parser/support/low/Buffer.java,
gnu/javax/swing/text/html/parser/support/low/Constants.java,
gnu/javax/swing/text/html/parser/support/low/Location.java,
gnu/javax/swing/text/html/parser/support/low/node.java,
gnu/javax/swing/text/html/parser/support/low/package.html,
gnu/javax/swing/text/html/parser/support/low/ParseException.java,
gnu/javax/swing/text/html/parser/support/low/pattern.java,
gnu/javax/swing/text/html/parser/support/low/Queue.java,
gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java:
New files.
* javax/swing/text/html/HTML.java,
javax/swing/text/html/parser/ParserDelegator.java:
New files (replacing).
* javax/swing/text/html/package.html,
javax/swing/text/html/parser/package.html: Documenting the
packages.
2005-04-19 Chris Burdess <dog@gnu.org>
* gnu/xml/dom/html2/DomHTMLAnchorElement.java,
gnu/xml/dom/html2/DomHTMLAppletElement.java,
gnu/xml/dom/html2/DomHTMLAreaElement.java,
gnu/xml/dom/html2/DomHTMLBaseElement.java,
gnu/xml/dom/html2/DomHTMLBaseFontElement.java,
gnu/xml/dom/html2/DomHTMLBodyElement.java,
gnu/xml/dom/html2/DomHTMLBRElement.java,
gnu/xml/dom/html2/DomHTMLButtonElement.java,
gnu/xml/dom/html2/DomHTMLCollection.java,
gnu/xml/dom/html2/DomHTMLDocument.java,
gnu/xml/dom/html2/DomHTMLElement.java: New files.
2005-04-19 Michael Koch <konqueror@gmx.de>
* Makefile.am: Added new files.
* Makefile.in: Regenerated.
2005-04-19 Roman Kennke <roman@kennke.org>
* javax/swing/text/JTextComponent.java
......
......@@ -1223,6 +1223,29 @@ gnu/java/awt/peer/EmbeddedWindowPeer.java \
gnu/java/awt/peer/GLightweightPeer.java \
gnu/java/awt/peer/ClasspathFontPeer.java \
gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java \
gnu/javax/swing/text/html/parser/support/parameterDefaulter.java \
gnu/javax/swing/text/html/parser/support/Parser.java \
gnu/javax/swing/text/html/parser/support/textPreProcessor.java \
gnu/javax/swing/text/html/parser/support/low/Buffer.java \
gnu/javax/swing/text/html/parser/support/low/Constants.java \
gnu/javax/swing/text/html/parser/support/low/Location.java \
gnu/javax/swing/text/html/parser/support/low/node.java \
gnu/javax/swing/text/html/parser/support/low/ParseException.java \
gnu/javax/swing/text/html/parser/support/low/pattern.java \
gnu/javax/swing/text/html/parser/support/low/Queue.java \
gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java \
gnu/javax/swing/text/html/parser/support/low/Token.java \
gnu/javax/swing/text/html/parser/gnuDTD.java \
gnu/javax/swing/text/html/parser/HTML_401F.java \
gnu/javax/swing/text/html/parser/htmlAttributeSet.java \
gnu/javax/swing/text/html/parser/htmlValidator.java \
gnu/javax/swing/text/html/parser/models/list.java \
gnu/javax/swing/text/html/parser/models/node.java \
gnu/javax/swing/text/html/parser/models/noTagModel.java \
gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java \
gnu/javax/swing/text/html/parser/models/TableRowContentModel.java \
gnu/javax/swing/text/html/parser/models/transformer.java \
java/applet/Applet.java \
java/applet/AppletStub.java \
java/applet/AppletContext.java \
......@@ -1869,6 +1892,7 @@ javax/swing/text/AbstractDocument.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
javax/swing/text/ChangedCharSetException.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
......@@ -1907,7 +1931,19 @@ javax/swing/text/Utilities.java \
javax/swing/text/View.java \
javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
javax/swing/text/html/HTMLDocument.java \
javax/swing/text/html/HTMLEditorKit.java \
javax/swing/text/html/HTMLFrameHyperlinkEvent.java \
javax/swing/text/html/parser/AttributeList.java \
javax/swing/text/html/parser/ContentModel.java \
javax/swing/text/html/parser/DTD.java \
javax/swing/text/html/parser/DTDConstants.java \
javax/swing/text/html/parser/DocumentParser.java \
javax/swing/text/html/parser/Element.java \
javax/swing/text/html/parser/Entity.java \
javax/swing/text/html/parser/Parser.java \
javax/swing/text/html/parser/ParserDelegator.java \
javax/swing/text/html/parser/TagElement.java \
javax/swing/text/rtf/ControlWordToken.java \
javax/swing/text/rtf/RTFEditorKit.java \
javax/swing/text/rtf/RTFParseException.java \
......@@ -2713,6 +2749,63 @@ gnu/xml/dom/DomEvent.java \
gnu/xml/dom/DomEntity.java \
gnu/xml/dom/DomCDATASection.java \
gnu/xml/dom/DomDOMException.java \
gnu/xml/dom/html2/DomHTMLAnchorElement.java \
gnu/xml/dom/html2/DomHTMLAppletElement.java \
gnu/xml/dom/html2/DomHTMLAreaElement.java \
gnu/xml/dom/html2/DomHTMLBaseElement.java \
gnu/xml/dom/html2/DomHTMLBaseFontElement.java \
gnu/xml/dom/html2/DomHTMLBodyElement.java \
gnu/xml/dom/html2/DomHTMLBRElement.java \
gnu/xml/dom/html2/DomHTMLButtonElement.java \
gnu/xml/dom/html2/DomHTMLCollection.java \
gnu/xml/dom/html2/DomHTMLDirectoryElement.java \
gnu/xml/dom/html2/DomHTMLDivElement.java \
gnu/xml/dom/html2/DomHTMLDListElement.java \
gnu/xml/dom/html2/DomHTMLDocument.java \
gnu/xml/dom/html2/DomHTMLElement.java \
gnu/xml/dom/html2/DomHTMLFieldSetElement.java \
gnu/xml/dom/html2/DomHTMLFontElement.java \
gnu/xml/dom/html2/DomHTMLFormElement.java \
gnu/xml/dom/html2/DomHTMLFrameElement.java \
gnu/xml/dom/html2/DomHTMLFrameSetElement.java \
gnu/xml/dom/html2/DomHTMLHeadElement.java \
gnu/xml/dom/html2/DomHTMLHeadingElement.java \
gnu/xml/dom/html2/DomHTMLHRElement.java \
gnu/xml/dom/html2/DomHTMLHtmlElement.java \
gnu/xml/dom/html2/DomHTMLIFrameElement.java \
gnu/xml/dom/html2/DomHTMLImageElement.java \
gnu/xml/dom/html2/DomHTMLImpl.java \
gnu/xml/dom/html2/DomHTMLInputElement.java \
gnu/xml/dom/html2/DomHTMLIsIndexElement.java \
gnu/xml/dom/html2/DomHTMLLabelElement.java \
gnu/xml/dom/html2/DomHTMLLegendElement.java \
gnu/xml/dom/html2/DomHTMLLIElement.java \
gnu/xml/dom/html2/DomHTMLLinkElement.java \
gnu/xml/dom/html2/DomHTMLMapElement.java \
gnu/xml/dom/html2/DomHTMLMenuElement.java \
gnu/xml/dom/html2/DomHTMLMetaElement.java \
gnu/xml/dom/html2/DomHTMLModElement.java \
gnu/xml/dom/html2/DomHTMLObjectElement.java \
gnu/xml/dom/html2/DomHTMLOListElement.java \
gnu/xml/dom/html2/DomHTMLOptGroupElement.java \
gnu/xml/dom/html2/DomHTMLOptionElement.java \
gnu/xml/dom/html2/DomHTMLParagraphElement.java \
gnu/xml/dom/html2/DomHTMLParamElement.java \
gnu/xml/dom/html2/DomHTMLParser.java \
gnu/xml/dom/html2/DomHTMLPreElement.java \
gnu/xml/dom/html2/DomHTMLQuoteElement.java \
gnu/xml/dom/html2/DomHTMLScriptElement.java \
gnu/xml/dom/html2/DomHTMLSelectElement.java \
gnu/xml/dom/html2/DomHTMLStyleElement.java \
gnu/xml/dom/html2/DomHTMLTableCaptionElement.java \
gnu/xml/dom/html2/DomHTMLTableCellElement.java \
gnu/xml/dom/html2/DomHTMLTableColElement.java \
gnu/xml/dom/html2/DomHTMLTableElement.java \
gnu/xml/dom/html2/DomHTMLTableRowElement.java \
gnu/xml/dom/html2/DomHTMLTableSectionElement.java \
gnu/xml/dom/html2/DomHTMLTextAreaElement.java \
gnu/xml/dom/html2/DomHTMLTitleElement.java \
gnu/xml/dom/html2/DomHTMLUListElement.java \
gnu/xml/transform/GenerateIdFunction.java \
gnu/xml/transform/FormatNumberFunction.java \
gnu/xml/transform/ValueOfNode.java \
......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in javax.swing.text.html package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - javax.swing.text.html</title></head>
<body>
<p> Provides supporting classes for web browsers,
web robots, web page content analysers, web editors and
other applications applications working with Hypertext
Markup Language (HTML).
</p>
</body>
</html>
This source diff could not be displayed because it is too large. You can view the blob instead.
/* htmlAttributeSet.java -- A set to store HTML attributes
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser;
import java.util.Enumeration;
import javax.swing.text.AttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.html.HTML;
/**
* A set, adapted to store HTML attributes.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class htmlAttributeSet
extends SimpleAttributeSet
{
public static final htmlAttributeSet EMPTY_HTML_ATTRIBUTE_SET =
new htmlAttributeSet();
AttributeSet parent;
/**
* Looks in this set and, if not found, later looks in the parent set.
* Calls toString(), allowing to pass as HTML.Attribute, as String
* to this method.
* @param key A key to search for a value.
* @return The value, if one is defined.
*/
public Object getAttribute(Object _key)
{
Object key = _key.toString().toLowerCase();
Object v = super.getAttribute(key);
if (v != null)
return v;
else if (parent != null)
return parent.getAttribute(key);
else
return null;
}
/**
* The name set must return HTML.Attribute and not a string,
* where applicable.
*/
public Enumeration getAttributeNames()
{
// Replace the string keys by HTML.attribute, where applicable
final Enumeration enumeration = super.getAttributeNames();
return new Enumeration()
{
public boolean hasMoreElements()
{
return enumeration.hasMoreElements();
}
public Object nextElement()
{
Object key = enumeration.nextElement();
HTML.Attribute hKey = HTML.getAttributeKey((String) key);
if (hKey != null)
return hKey;
else
return key;
}
};
}
/**
* Set the parent set, containing the default values.
* @param a_parent
*/
public void setResolveParent(AttributeSet a_parent)
{
parent = a_parent;
}
/**
* Get the parent set, containing the default values.
* @return
*/
public AttributeSet getResolveParent()
{
return parent;
}
/**
* Add the attribute to this attribute set.
* @param key Attribute key (will be case insensitive)
* @param value Attribute value
*/
public void addAttribute(Object key, Object value)
{
super.addAttribute(key.toString().toLowerCase(), value);
}
}
/* PCDATAonly_model.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.models;
import java.io.Serializable;
/**
* The model, allowing only PCDATA in it (like for element OPTION).
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class PCDATAonly_model
extends node
implements Serializable
{
private static final long serialVersionUID = 1;
public PCDATAonly_model()
{
super((char) 0, (char) 0, null);
}
public Object show(Object x)
{
return x.toString().equalsIgnoreCase("#pcdata") ? Boolean.TRUE : Boolean.FALSE;
}
}
/* TableRowContentModel.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.models;
import java.io.Serializable;
import javax.swing.text.html.parser.DTD;
import javax.swing.text.html.parser.Element;
/**
* Table row content model.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class TableRowContentModel
extends node
implements Serializable
{
private static final long serialVersionUID = 1;
final Element TD;
public TableRowContentModel(DTD dtd)
{
super((char) 0, (char) 0, null);
TD = dtd.getElement("TD");
}
public Object show(Object x)
{
// Always accept TD and TH
String s = x.toString();
if (s.equalsIgnoreCase("TD") || s.equalsIgnoreCase("TH"))
return Boolean.TRUE;
// Suggest closing in response to TR:
if (s.equalsIgnoreCase("TR"))
return Boolean.FALSE;
// Recommend TD for other cases:
return TD;
}
}
/* noTagModel.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.models;
import java.io.Serializable;
/**
* Disallows a single given tag at the current content level only.
* <p>@author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)</p>
*/
public class noTagModel
extends node
implements Serializable
{
private static final long serialVersionUID = 1;
final String[] no;
public noTagModel(String[] noTag)
{
super((char) 0, (char) 0, null);
no = noTag;
}
public noTagModel(String noTag)
{
super((char) 0, (char) 0, null);
no = new String[] { noTag };
}
public Object show(Object x)
{
for (int i = 0; i < no.length; i++)
{
if (x.toString().equalsIgnoreCase(no [ i ]))
return Boolean.FALSE;
}
return Boolean.TRUE;
}
}
/* node.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.models;
import java.io.Serializable;
/**
* Part of the internal representation of the content model.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class node
implements Serializable
{
private static final long serialVersionUID = 1;
/**
* The token to match (can be instance of list).
*/
public Object token;
/**
* True for the node that cannot be visited again.
*/
public boolean _closed;
/**
* The binary operation for this node.
*/
public char binary;
/**
* The unary opeation for this node.
*/
public char unary;
/**
* The number of times the node already was visited.
*/
public int visits;
/**
* The previous node in content model (used for closing nodes).
*/
public node previous;
/**
* Creates a new node.
* @param binary_operator The operator, connecting all nodes in the list.
* The nodes, connected by the different operators, must be arranged into
* the different lists.
* @param unary_operator The unary operator for this node or zero if
* no such was specified.
* @param token The token to match. This can be either a string or
* the new instance of the list.
* @param a_previous The previous node in the list, null for the first
* node. This is used for propagating the closing operation for the
* comma delimited list.
*/
public node(char binary_operator, char unary_operator, Object a_token)
{
if (a_token != null)
if (a_token.getClass().equals(node.class))
throw new Error("Creating node in node is redundant and ineffective.");
binary = binary_operator;
unary = unary_operator;
token = a_token;
}
/**
* Checks if this node is in the closed state.
* @return True if the node is closed.
*/
public boolean isClosed()
{
return _closed;
}
/**
* Check if closing this node means closing the previous node.
*/
public boolean closePrevious()
{
return binary == ',';
}
/**
* Return the token object if it could match as a next token in
* a token list of null if it could not.
* @return
*/
public Object findFreeNode()
{
boolean ok;
if (isClosed() || silenceAllowed())
return null;
// Try if the node would stay valid after a one more visit.
visits++;
ok = valid();
visits--;
if (ok)
{
if (token instanceof node)
return ((node) token).findFreeNode();
else
return token;
}
else
return null;
}
/**
* Check if the current situation is such that the node must be closed
* now.
*/
public boolean mustClose()
{
switch (unary)
{
case 0 :
return true;
case '*' :
return false;
case '+' :
return false;
case '?' :
return visits <= 1;
default :
throw new Error("Invalid unary operation " + unary + " ( '" +
(char) unary + "' )"
);
}
}
/**
* Do the match operation with the given token. This sets various
* flags.
* @param token The token to match.
* @return true if the the token matches node, false if it does not match
* or if the node is closed.
*/
public boolean performMatch(Object a_token)
{
if (isClosed())
return false;
boolean matches = compare(a_token);
if (matches)
matches();
return matches;
}
/**
* Prepares the node for matching against a new list of tokens.
*/
public void reset()
{
_closed = false;
visits = 0;
}
/**
* Check if the provided token can match this node.
* In the case of match, the node state changes, moving
* current position after the matched token. However if this method
* returns a suggested new token to insert before the provided one,
* the state of the list does not change.
* @return Boolean.TRUE if the match is found,
* Boolean.FALSE if the match is not possible and no token can be
* inserted to make the match valid. Otherwise, returns the
* token object that can be inserted before the last token in the
* list, probably (not for sure) making the match valid.
*/
public Object show(Object x)
{
if (compare(x))
return performMatch(x) ? Boolean.TRUE : Boolean.FALSE;
Object recommended = findFreeNode();
return recommended != null ? recommended : Boolean.FALSE;
}
/**
* Check if it would be a valid case if this node is visited zero times.
* Nodes with unary operator * or ? need not be matched to make a
* model valid.
*/
public boolean silenceAllowed()
{
return unary == '?' || unary == '*';
}
/**
* Returns a string representation of the list.
* @return String representation, similar to BNF expression.
*/
public String toString()
{
StringBuffer b = new StringBuffer();
b.append(token);
if (unary != 0)
b.append((char) unary);
else
b.append('\'');
return b.toString();
}
/**
* Check if the node state is valid.
*/
public boolean valid()
{
switch (unary)
{
case 0 :
if (binary == '|')
return true;
else
return visits == 1;
case '*' :
return true;
case '+' :
return visits > 0;
case '?' :
return visits <= 1;
default :
throw new Error("Invalid unary operation " + unary + " ( '" +
(char) unary + "' )"
);
}
}
public boolean validPreliminary()
{
return visits == 0 || valid();
}
/**
* Closes this node and, if closePrevious() returs true, calls close() for
* the previous node.
*/
protected void close()
{
_closed = true;
if (previous != null && closePrevious())
previous.close();
}
/**
* Compare the provided token object with the token object of this node.
*/
protected boolean compare(Object a_token)
{
if (token instanceof Object[])
throw new Error("Invalid token object, probably the 'list' " +
"should be used. "
);
if (token instanceof node[])
throw new Error("Do not use 'node' for the array of nodes, use 'list'. ");
if (token instanceof node)
{
return ((node) token).performMatch(a_token);
}
boolean rt = false;
if (token == a_token)
rt = true;
if (token.equals(a_token))
rt = true;
if (token.toString().equalsIgnoreCase(a_token.toString()))
rt = true;
return rt;
}
/**
* Fire the changes that must happen then the token matches this node.
*/
protected void matches()
{
visits++;
if (mustClose())
close();
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in javax.swing.text.html.parser package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.models</title></head>
<body>
<p>This package contains classes for working with content models. In this implementation, the
standardized content model is pre-processed by <code>transformer</code> into an instance of
<code>node</code>. Node holds a single element of the content model with the optional unary operation.
The derived class <code>list</code> holds multiple nodes connected by the same binary operation.
As the members of this <code>list</code> can also be lists itself, these structures support
the most of required operations. Several cases when the model cannot be expressed using
BNF syntax are handled providing specialised classes that are also derived from <code>node</code>.
</p>
@author Audrius Meskauskas, Lithuania
</body>
</html>
/* transformer.java -- Content model transforms.
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.models;
import java.io.Serializable;
import javax.swing.text.html.parser.ContentModel;
import javax.swing.text.html.parser.DTD;
/**
* Transforms the standard ContentModel tree into the internal representation,
* used in this implementation.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class transformer
implements Serializable
{
private static final long serialVersionUID = 1;
/**
* All binary operators.
*/
protected static String binary = "&|,";
/**
* All unary operators.
*/
protected static String unary = "+*?";
/**
* Measure length of the linked list of the content models.
* @param c The heading element of the linked list.
* @return the length of the list (0 for null 1 if c!=null and c.next==null,
* etc.
*/
public static int measureChainLength(ContentModel c)
{
if (c == null)
return 0;
else
return measureChainLength(c.next) + 1;
}
/**
* Transform into internal representation without usind dtd.
* This should be used only for testing.
*/
public static node transform(ContentModel c)
{
return transform(c, null);
}
/**
* Transform into internal representation.
* @param c a model to transform
* @return a transformed model
* @throws Error if the model structure contains errors.
*/
public static node transform(ContentModel c, DTD dtd)
{
// Handle the special cases first.
if (c.content instanceof node)
return (node) c.content;
// Do the typical transform.
node n;
/* Case with the single token */
if (c.next == null)
{
n = optionalTransform(c, dtd);
}
else /* Case with the chain of the multiple tokens. */
{
node[] l = new node[ measureChainLength(c) ];
ContentModel m = c;
for (int i = 0; i < l.length; i++)
{
if (m.content instanceof ContentModel)
{
ContentModel nested = (ContentModel) m.content;
if (nested.next == null &&
!(nested.content instanceof ContentModel)
)
{
l [ i ] =
new node((char) m.type, (char) nested.type, nested.content);
}
else
{
l [ i ] = transform(nested, dtd);
}
}
else
l [ i ] = new node((char) 0, (char) 0, m.content);
addtype(l [ i ], (char) m.type);
m = m.next;
}
if (isBinary(c.type))
for (int i = 0; i < l.length; i++)
{
l [ i ].binary = (char) c.type;
}
n = new list(l);
}
addtype(n, (char) c.type);
return n;
}
/**
* True for binary operator
* @param c a character to test
* @return true for [ ,&| ], false otherwise.
*/
private static boolean isBinary(int c)
{
return binary.indexOf((char) c) >= 0;
}
/**
* True for unary operator.
* @param c a character to test
* @return true for [ +?* ], false otherwise.
*/
private static boolean isUnary(int c)
{
return unary.indexOf((char) c) >= 0;
}
/**
* Assign an operation type for the given node.
* @param n A node to set the operation to.
* @param type Either binary or unary operation, is assigned to the
* corresponding field of the node.
* @throws error if the operation type is not
* representing a valid unary or binary operation.
*/
private static void addtype(node n, char type)
{
if (isBinary(type))
n.binary = type;
else if (isUnary(type))
n.unary = type;
else if (type != 0)
throw new Error("Invalid operation '" + (char) type + "'");
}
private static node optionalTransform(ContentModel c, DTD dtd)
{
node n;
if (c.content instanceof ContentModel)
n = transform((ContentModel) c.content, dtd);
else
/* A single token with the specified operation */
n = new node((char) 0, (char) 0, c.content);
return n;
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in javax.swing.text.html.parser package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - javax.swing.text.html.parser</title></head>
<body>
<p>Provides the error tolerant, DTD-driven HTML 4.01 parser.
The parser that is used in web robots, html content analysers,
web browsers, web editors and other related applications.
It should compativle with the older HTML versions, supporting
obsoleted HTML featues. This package also includes some
supporting classes.</p>
@author Audrius Meskauskas, Lithuania
</body>
</html>
/* gnuStringIntMapper.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/**
* A helper class, mapping between the strings and they unique integer
* identifiers.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public abstract class gnuStringIntMapper
{
/**
* Maps argument integer values from DTDConstants into they string
* names. Initialized on demand.
*/
private Map is_Map;
/**
* Maps argument string names into they integer values from DTDConstants.
* Initialized on demand.
*/
private Map si_Map;
/**
* Get string from id or null if no such id is present in the mapper.
*/
public final String get(int id)
{
if (is_Map == null)
createTheMap();
return (String) is_Map.get(new Integer(id));
}
/** Get id from string or 0 if no such string is present in the mapper. */
public final int get(String id)
{
if (si_Map == null)
createTheMap();
Integer i = (Integer) si_Map.get(id);
return i != null ? i.intValue() : 0;
}
/**
* Create the mapping table for this mapper by adding the required
* String/int pairs. The method is invoked
* only once for each instance, after the first invocation of the any
* form of the <code>get</code> method. Use <code>add</code> to
* create a map for a concrete instance.
*/
protected abstract void create();
/**
* Add an id/string pair to this mapper. This is called from
* the method <code>create</code> only.
*/
protected void add(String name, int id)
{
Integer i = new Integer(id);
si_Map.put(name, i);
is_Map.put(i, name);
}
private void createTheMap()
{
is_Map = new HashMap();
si_Map = new TreeMap();
create();
}
}
/* Buffer.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* A string buffer that additionally holds line and absolute postion
* information.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class Buffer
{
public static int INITIAL_SIZE = 2048;
/**
* True if the \n symbol has been seen.
*/
public boolean n_seen;
/**
* True if the \r symbol has been seen.
*/
public boolean r_seen;
char[] chr = new char[ INITIAL_SIZE ];
int[] line = new int[ INITIAL_SIZE ];
int[] position = new int[ INITIAL_SIZE ];
/**
* Current line.
*/
int current_line = 0;
/**
* Point to the next free position.
*/
int length;
public Buffer()
{
}
public Buffer(String content)
{
for (int i = 0; i < content.length(); i++)
{
append(content.charAt(i), i);
}
}
/**
* Get the characters into array.
* @param srcBegin From, inclusive
* @param srcEnd To, exclusive.
* @param dst Into
* @param dstBegin Offset.
*/
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
{
System.arraycopy(chr, srcBegin, dst, dstBegin, (srcEnd - srcBegin));
}
/**
* Return the sequence, used to separate lines in the document.
* @return one of \n, \r or \r\n.
*/
public String getEndOfLineSequence()
{
if (r_seen && n_seen)
return "\r\n";
else if (r_seen)
return "\r";
else
// This also is returned for single-line document.
return "\n";
}
/**
* Truncate.
* @param n The length to truncate till.
*/
public void setLength(int n)
{
length = n;
}
/**
* Get location information for the given region.
* @param from Region start, inclusive.
* @param to Region end, exclusive.
* @return The location, covering the region.
*/
public Location getLocation(int from, int to)
{
Location l = new Location();
l.beginLine = line [ from ];
l.endLine = line [ to - 1 ];
l.startPosition = position [ from ];
l.endPosition = position [ to - 1 ] + 1;
return l;
}
/**
* Add the character.
* @param c The character.
* @param pos The character position in the stream (the line number
* is handled internally in the buffer).
*/
public void append(char c, int pos)
{
if (length >= chr.length)
expand();
chr [ length ] = c;
position [ length ] = pos;
if (c == '\n')
{
if (!r_seen)
current_line++;
n_seen = true;
}
else if (c == '\r')
{
current_line++;
r_seen = true;
}
line [ length ] = current_line;
length++;
}
/**
* Return char at the given positon.
*/
public char charAt(int i)
{
return chr [ i ];
}
/**
* Delete the range
* @param from Start position, inclusive.
* @param to End position, exclusive.
*/
public void delete(int from, int to)
{
int len = to - from;
if (len < 1)
throw new AssertionError("Deleting " + from + " till " + to);
int tail = length - to;
System.arraycopy(chr, to, chr, from, tail);
System.arraycopy(position, to, position, from, tail);
System.arraycopy(line, to, line, from, tail);
length = length - len;
}
/**
* Double the buffer size.
*/
public void expand()
{
int nSize = 2 * chr.length;
char[] nchr = new char[ nSize ];
int[] nposition = new int[ nSize ];
int[] nline = new int[ nSize ];
System.arraycopy(chr, 0, nchr, 0, chr.length);
System.arraycopy(position, 0, nposition, 0, position.length);
System.arraycopy(line, 0, nline, 0, line.length);
chr = nchr;
position = nposition;
line = nline;
}
/**
* Return length of the occupied part of the buffer.
*/
public int length()
{
return length;
}
/**
* Prepare for parsing the new document.
*/
public void reset()
{
setLength(0);
r_seen = n_seen = false;
}
public String toString()
{
return new String(chr, 0, length);
}
}
/* Location.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* Defines a region in the text: its bounding positions and the line number.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class Location
{
/**
* The line number, where the token starts.
*/
public int beginLine;
/**
* The line, where the token ends.
*/
public int endLine;
/**
* The absolute token end position in the input stream,
* exclusive.
*/
public int endPosition;
/**
* The absolute token start position in the input stream,
* inclusive.
*/
public int startPosition;
public Location()
{
}
/**
* Special case, used to mark EOF.
* @param p The total stream length.
*/
public Location(int p)
{
startPosition = p;
endPosition = p + 1;
beginLine = endLine = -1;
}
}
/* ParseException.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* This can be thrown from various parsing methods.
*/
public class ParseException
extends RuntimeException
{
public ParseException(String s, Throwable cause)
{
super(s, cause);
}
}
/* Queue.java -- a token queue.
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
import java.util.Arrays;
/**
* A token queue.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class Queue
{
Token[] m = new Token[ 64 ];
int a = 0;
int b = 0;
/**
* True for the empty queue.
*/
public boolean isEmpty()
{
return size() == 0;
}
/**
* Add this trace to the end of the queue.
*/
public void add(Token u)
{
if (a < m.length)
{
m [ a ] = u;
a++;
}
else // The end of array has been reached.
{
if (b > 0) // If some elements were deleted from the start of the queue, shift.
{
int d = b;
System.arraycopy(m, b, m, 0, a - b);
b = b - d;
a = a - d;
m [ a ] = u;
a++;
}
else // Enlarge the queue, doubling the size.
{
int n = m.length * 2;
Token[] nm = new Token[ 2 * n ];
System.arraycopy(m, 0, nm, 0, m.length);
Arrays.fill(m, null);
nm [ a ] = u;
m = nm;
a++;
}
}
}
/**
* Clear the queue.
*/
public void clear()
{
a = b = 0;
Arrays.fill(m, null);
}
/**
* Read the value ahead. 0 is the value that will be returned with
* the following next. This method does not remove values from the
* queue. To test if there is enough tokens in the queue, size() must
* be checked before calling this method.
*/
public Token get(int ahead)
{
int p = b + ahead;
if (p < a)
return m [ p ];
else
throw new ArrayIndexOutOfBoundsException("Not enough tokens");
}
/**
* Read the oldest value from the queue and remove this value from
* the queue.
*/
public Token next()
{
if (a == b)
throw new ArrayIndexOutOfBoundsException("queue empty");
Token r = m [ b ];
m [ b ] = null;
b++;
return r;
}
/**
* Size of the queue.
*/
public int size()
{
return a - b;
}
}
/* ReaderTokenizer.java -- splits the input char sequence int tokens.
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
import java.io.IOException;
import java.io.Reader;
/**
* Reader splits the input char sequence into tokens.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class ReaderTokenizer
extends Constants
{
/**
* This is set to true each time the getNextToken is called.
* Used in preventing loops when all patterns refuse to accept
* the invalid input.
*/
protected boolean advanced;
/**
* If true, the returned tokens are also placed in the backup
* queue.
*/
protected boolean backupMode;
/**
* The buffer to read document into.
*/
Buffer buffer = new Buffer();
/**
* The queue for supporting mark().
*/
Queue backup = new Queue();
/**
* The queue of found tokens.
*/
Queue queue = new Queue();
/**
* The reader to read the document from.
*/
Reader reader;
/**
* Array of char tokens
*/
char[] charTokens;
/**
* Array of string tokens.
*/
String[] stringTokens;
/**
* The current reader position.
*/
int readerPosition = -1;
/**
* Creates a new ReaderTokenizer. The reset(...) method must be
* subsequently called to set the reader.
*/
public ReaderTokenizer()
{
}
/**
* Return the sequence, used to separate lines in the document.
* @return one of \n, \r or \r\n.
*/
public String getEndOfLineSequence()
{
return buffer.getEndOfLineSequence();
}
/**
* Get the next token.
* @return
*/
public Token getNextToken()
{
Token rt;
advanced = true;
try
{
if (queue.isEmpty())
read(1);
if (!queue.isEmpty())
rt = queue.next();
else
rt = new Token(EOF, new Location(readerPosition));
}
catch (IOException ex)
{
throw new ParseException("IO Exception", ex);
}
if (backupMode)
backup.add(rt);
return rt;
}
/**
* Get a token, lying the given number of tokens
* ahead. getToken(0) will return the same token,
* what would be returned by getNextToken().
* getToken(..) does change the current position
* in the input stream. If the end of stream is
* reached, the EOF token is always returned.
*/
public Token getTokenAhead(int ahead)
{
try
{
read(ahead - queue.size() + 1);
return queue.size() >= ahead ? queue.get(ahead) : eofToken();
}
catch (IOException ex)
{
throw new ParseException("IO Exception", ex);
}
}
/**
* Get a token, bein immediatley ahead.
* If the end of stream is
* reached, the EOF token is always returned.
* The method is equivalent calling getTokenAhead(0).
*/
public Token getTokenAhead()
{
try
{
if (queue.isEmpty())
read(1);
if (!queue.isEmpty())
return queue.get(0);
else
return eofToken();
}
catch (IOException ex)
{
throw new ParseException("IO Exception", ex);
}
}
/**
* Invokes the error handler.
*/
public void error(String msg, Token at)
{
System.out.println(msg);
}
/**
* Turns the backup mode on or off.
* It is possible to return where the mark(true) was last called
* by calling reset().
* @param mode True if it is required to save tokens, making
* returning to the current point possible.
*/
public void mark(boolean mode)
{
backup.clear();
backupMode = mode;
}
/**
* Prepare for new parsing from the given stream.
* @param a_reader A reader to parse from.
*/
public void reset(Reader a_reader)
{
reader = a_reader;
readerPosition = -1;
buffer.reset();
queue.clear();
}
/**
* Reset the internal cursor to the position where the mark()
* was last time called. Switches the backup mode off.
*/
public void reset()
{
if (!backupMode)
throw new AssertionError("Call mark(true) before using reset()!");
backupMode = false;
// That is now in the queue, will be appended to the end of backup.
while (!queue.isEmpty())
backup.add(queue.next());
Queue t = queue;
queue = backup;
backup = t;
backup.clear();
}
/**
* Read the given number of the tokens. Add the needed number of EOF
* tokens if there are no more data in the stream.
* @param amount The number of additional tokens to read.
*/
void read(int numberOfTokens)
throws IOException
{
if (numberOfTokens <= 0)
return;
reading:
for (int i = 0; i < numberOfTokens; i++)
readToken();
}
/**
* Read next token from the reader, add it to the queue
*/
void readToken()
throws IOException
{
Token t;
int ch;
enlarging:
while (true)
{
t = tokenMatches();
if (t != null)
break enlarging;
else
{
ch = reader.read();
readerPosition++;
if (ch == ETX)
ch = ' ';
if (ch < 0)
{
if (buffer.length() == 0)
{
queue.add(eofToken());
return;
}
else
{
if (buffer.charAt(buffer.length() - 1) != ETX)
buffer.append(ETX, readerPosition++);
else
{
// Discard terminating ETX
buffer.setLength(buffer.length() - 1);
if (buffer.length() > 0)
{
t = new Token(OTHER, buffer.toString(),
buffer.getLocation(0, buffer.length())
);
queue.add(t);
buffer.setLength(0);
}
return;
}
}
}
else
buffer.append((char) ch, readerPosition);
}
}
}
/**
* Check if the end of buffer matches one of the tokens. If it does,
* return this token and remove the token sequence from the end of
* buffer.
* @return The matching token.
*/
Token tokenMatches()
{
Token rt = endMatches(buffer);
if (rt != null) // Remove the matched image
{
// Consume future character if it was an entity and the future
// character is semicolon.
if (rt.kind == ENTITY)
{
if (buffer.charAt(buffer.length() - 1) == ';')
buffer.setLength(buffer.length() - rt.getImage().length() - 1);
else
{
error("Missing closing semicolon for entity '" + rt.getImage() +
"'", rt
);
consumeBuffer(rt);
}
}
else
{
consumeBuffer(rt);
}
}
// If the buffer is not empty, some sequence does not match any tokens.
// Add it to the queue as "OTHER".
if (rt != null)
{
if (buffer.length() > 1)
{
String rest = buffer.toString();
rest = rest.substring(0, rest.length() - 1);
Token other =
new Token(OTHER, rest, buffer.getLocation(0, buffer.length));
queue.add(other);
consumeBuffer(other);
}
queue.add(rt);
}
return rt;
}
private void consumeBuffer(Token rt)
{
buffer.delete(buffer.length() - rt.getImage().length() - 1,
buffer.length() - 1
);
}
/**
* Create EOF token.
*/
private Token eofToken()
{
return new Token(EOF, "#", new Location(readerPosition));
}
}
/* Token.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* A token.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class Token
{
/**
* The place of this token in the document.
*/
public Location where;
/**
* The additional category of token.
*/
public int category;
/**
* An integer that describes the kind of this token.
*/
public int kind;
/**
* The string image of the token, null if the char image must be used.
*/
private String stringImage;
/**
* The char image of the token.
*/
private char charImage;
/**
* Creates a new token with fields, initialized to the default values.
*/
public Token()
{
}
/**
* Creates a new token of the given kind.
*/
public Token(int _kind, Location _where)
{
kind = _kind;
where = _where;
}
/**
* Creates a new token of the given kind and given single char image.
*/
public Token(int _kind, char _image, Location _where)
{
kind = _kind;
charImage = _image;
where = _where;
}
/**
* Creates a new token of the given kind and given string image.
*/
public Token(int _kind, String _image, Location _where)
{
kind = _kind;
stringImage = _image;
where = _where;
}
/**
* Creates a new token of the given kind, category and given string image.
*/
public Token(int _kind, int _category, String _image, Location _where)
{
kind = _kind;
category = _category;
stringImage = _image;
where = _where;
}
/**
* Creates a new token, where location fields are set as for token,
* spanning over two provided tokens and any tokens between them.
* The image field is initialized to null, the kind field is set to -1.
*/
public Token(Token fromInclusive, Token toInclusive)
{
where = new Location();
where.beginLine = fromInclusive.where.beginLine;
where.startPosition = fromInclusive.where.startPosition;
where.endLine = toInclusive.where.endLine;
where.endPosition = toInclusive.where.endPosition;
}
public String getImage()
{
if (kind == 3)
return "#";
if (stringImage == null)
{
if (charImage == 0)
return null;
stringImage = new String(new char[] { charImage });
}
return stringImage;
}
/**
* Append the token image to the given string buffer.
* This may be more effective that buffer.append(this.getImage()).
* @param buffer A buffer to append.
*/
public void appendTo(StringBuffer buffer)
{
if (charImage == 0)
buffer.append(getImage());
else
buffer.append(charImage);
}
/**
* Returns the string image or, if null, the bounding positions.
*/
public String toString()
{
return getImage() != null ? kind + "'" + getImage()
: "<line " + where.beginLine + ", abs pos " + where.startPosition +
".." + where.endPosition + ">";
}
}
/* node.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* A text level content model node. The only required unary operations
* here are "appears" and "optionally appears" ('?').
* <p>@author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)</p>
*/
public class node
{
/**
* True for node that is optional for the given position.
*/
public boolean optional;
/**
* The kind of the token to match.
*/
public int kind;
/**
* Creates the new node for matching a given kind of the token.
* @param kind The kind of the token to match.
* @param modifier The modifier (*?+).
*/
public node(int kind, boolean _optional)
{
this.kind = kind;
optional = _optional;
}
/**
* Creates the node, indicating that token must match exactluy one time.
* @param kind The kind of token to match.
*/
public node(int kind)
{
this.kind = kind;
optional = false;
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in javax.swing.text.html.parser package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.support.low</title></head>
<body>
<p>This package contains classes that are directly used to process
the text input: adapted stream tokenizer, specialized buffer and text-level content models .</p>
@author Audrius Meskauskas, Lithuania
</body>
</html>
/* pattern.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support.low;
/**
* The simple pattern, consisting from the sequence of tokens that
* may have the unary modifier '?'. Choices and grouping
* are not required here.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class pattern
{
/**
* The nodes of this pattern.
*/
public final node[] nodes;
/**
* Create a pattern, containing the given list of nodes.
* @param a_nodes
*/
public pattern(node[] a_nodes)
{
nodes = a_nodes;
}
/**
* Checks if the pattern can match the tokens in this
* tokenizer. Does not change the state of tokenizer.
* @param stream The tokenizer to read data from
* @return True if the pattern sequence matches the
* beginning of the tokenizer content.
*/
public boolean matches(ReaderTokenizer stream)
{
try
{
int pt = 0;
int pn = 0;
Token t;
node n;
while (pn < nodes.length)
{
n = nodes [ pn ];
t = stream.getTokenAhead(pt);
if (t.kind == n.kind)
{
pn++;
pt++;
}
else
{
if (!n.optional)
return false;
else
pn++;
}
}
return true;
}
catch (Exception ex)
{
throw new ParseException("Exception", ex);
}
}
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in javax.swing.text.html.parser package.
Copyright (C) 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. -->
<html>
<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.support</title></head>
<body>
<p>This package provides various specialised classes, needed by HTML parser.
</p>
@author Audrius Meskauskas, Lithuania
</body>
</html>
/* parameterDefaulter.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support;
import gnu.javax.swing.text.html.parser.htmlAttributeSet;
import java.util.Hashtable;
import javax.swing.text.html.parser.AttributeList;
import javax.swing.text.html.parser.DTD;
import javax.swing.text.html.parser.Element;
/**
* Returns an attribute set, containing default
* parameters for the given element. Caches sets of default
* parameters.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class parameterDefaulter
{
public final DTD dtd;
Hashtable sets = new Hashtable();
/**
* Create a parameterDefaulter that looks for the default attribute
* values in the given DTD.
* @param a_dtd
*/
public parameterDefaulter(DTD a_dtd)
{
dtd = a_dtd;
}
/**
* Get the default parameter set for the given element.
* @param element The element name (case insensitive).
* @return the default attrbute set.
*/
public htmlAttributeSet getDefaultParameters(String element)
{
String key = element.toLowerCase();
htmlAttributeSet atts = (htmlAttributeSet) sets.get(key);
if (atts == null)
{
htmlAttributeSet set = new htmlAttributeSet();
Element e = (Element) dtd.elementHash.get(element.toLowerCase());
if (e != null)
{
AttributeList a = e.getAttributes();
while (a != null)
{
if (a.value != null)
set.addAttribute(a.name, a.value);
a = a.next;
}
}
if (set.getAttributeCount() > 0)
sets.put(key, set);
else
sets.put(key, htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET);
atts = set;
}
return atts;
}
}
/* textPreProcessor.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.javax.swing.text.html.parser.support;
import gnu.javax.swing.text.html.parser.support.low.Constants;
/**
* Pre - processes text in text parts of the html document.
* Not thread - safe.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class textPreProcessor
{
/**
* Pre - process non-preformatted text.
* \t, \r and \n mutate into spaces, then multiple spaces mutate
* into single one, all whitespace around tags is consumed.
* The content of the passed buffer is destroyed.
* @param text A text to pre-process.
*/
public char[] preprocess(StringBuffer a_text)
{
if (a_text.length() == 0)
return null;
char[] text = toCharArray(a_text);
int a = 0;
int b = text.length - 1;
try
{
while (Constants.bWHITESPACE.get(text [ a ]))
a++;
while (Constants.bWHITESPACE.get(text [ b ]))
b--;
}
catch (ArrayIndexOutOfBoundsException sx)
{
// A text fragment, consisting from line breaks only.
return null;
}
a_text.setLength(0);
boolean spacesWere = false;
boolean spaceNow;
char c;
chars:
for (int i = a; i <= b; i++)
{
c = text [ i ];
spaceNow = Constants.bWHITESPACE.get(c);
if (spacesWere && spaceNow)
continue chars;
if (spaceNow)
a_text.append(' ');
else
a_text.append(c);
spacesWere = spaceNow;
}
if (a_text.length() == text.length)
{
a_text.getChars(0, a_text.length(), text, 0);
return text;
}
else
return toCharArray(a_text);
}
/**
* Pre - process pre-formatted text.
* Heading/closing spaces and tabs preserved.
* ONE bounding \r, \n or \r\n is removed.
* \r or \r\n mutate into \n. Tabs are
* preserved.
* The content of the passed buffer is destroyed.
* @param text
* @return
*/
public char[] preprocessPreformatted(StringBuffer a_text)
{
if (a_text.length() == 0)
return null;
char[] text = toCharArray(a_text);
int a = 0;
int n = text.length - 1;
int b = n;
if (text [ 0 ] == '\n')
a++;
else
{
if (text [ 0 ] == '\r')
{
a++;
if (text.length > 1 && text [ 1 ] == '\n')
a++;
}
}
if (text [ n ] == '\r')
b--;
else
{
if (text [ n ] == '\n')
{
b--;
if (n > 0 && text [ n - 1 ] == '\r')
b--;
}
}
a_text.setLength(0);
if (a > b)
return null;
char c;
for (int i = a; i <= b; i++)
{
c = text [ i ];
if (c == '\r')
{
if (i == b || text [ i + 1 ] != '\n')
a_text.append('\n');
}
else
a_text.append(c);
}
if (a_text.length() == text.length)
{
a_text.getChars(0, a_text.length(), text, 0);
return text;
}
else
return toCharArray(a_text);
}
/**
* Return array of chars, present in the given buffer.
* @param a_text The buffer
* @return
*/
private static char[] toCharArray(StringBuffer a_text)
{
char[] text = new char[ a_text.length() ];
a_text.getChars(0, text.length, text, 0);
return text;
}
}
......@@ -47,6 +47,7 @@ import org.w3c.dom.ls.LSInput;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSParser;
import org.w3c.dom.ls.LSSerializer;
import gnu.xml.dom.html2.DomHTMLImpl;
import gnu.xml.dom.ls.DomLSInput;
import gnu.xml.dom.ls.DomLSOutput;
import gnu.xml.dom.ls.DomLSParser;
......@@ -150,6 +151,12 @@ public class DomImpl
"".equals(version) ||
"3.0".equals(version));
}
else if ("html".equals(name) || "xhtml".equals(name))
{
return (version == null ||
"".equals(version) ||
"2.0".equals(version));
}
// views
// stylesheets
......@@ -199,7 +206,7 @@ public class DomImpl
String rootName,
DocumentType doctype)
{
Document doc = new DomDocument(this);
Document doc = createDocument();
Element root = null;
if (rootName != null)
......@@ -223,12 +230,22 @@ public class DomImpl
return doc;
}
protected Document createDocument()
{
return new DomDocument(this);
}
// DOM Level 3
public Object getFeature(String feature, String version)
{
if (hasFeature(feature, version))
{
if ("html".equalsIgnoreCase(feature) ||
"xhtml".equalsIgnoreCase(feature))
{
return new DomHTMLImpl();
}
return this;
}
return null;
......
/* DomHTMLAnchorElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLAnchorElement;
/**
* An HTML 'A' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLAnchorElement
extends DomHTMLElement
implements HTMLAnchorElement
{
protected DomHTMLAnchorElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAccessKey()
{
return getHTMLAttribute("accesskey");
}
public void setAccessKey(String accessKey)
{
setHTMLAttribute("accesskey", accessKey);
}
public String getCharset()
{
return getHTMLAttribute("charset");
}
public void setCharset(String charset)
{
setHTMLAttribute("charset", charset);
}
public String getCoords()
{
return getHTMLAttribute("coords");
}
public void setCoords(String coords)
{
setHTMLAttribute("coords", coords);
}
public String getHref()
{
return getHTMLAttribute("href");
}
public void setHref(String href)
{
setHTMLAttribute("href", href);
}
public String getHreflang()
{
return getHTMLAttribute("hreflang");
}
public void setHreflang(String hreflang)
{
setHTMLAttribute("hreflang", hreflang);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getRel()
{
return getHTMLAttribute("rel");
}
public void setRel(String rel)
{
setHTMLAttribute("rel", rel);
}
public String getRev()
{
return getHTMLAttribute("rev");
}
public void setRev(String rev)
{
setHTMLAttribute("rev", rev);
}
public String getShape()
{
return getHTMLAttribute("shape");
}
public void setShape(String shape)
{
setHTMLAttribute("shape", shape);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getTarget()
{
return getHTMLAttribute("target");
}
public void setTarget(String target)
{
setHTMLAttribute("target", target);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
public void blur()
{
dispatchUIEvent("blur");
}
public void focus()
{
dispatchUIEvent("focus");
}
}
/* DomHTMLAppletElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLAppletElement;
/**
* An HTML 'APPLET' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLAppletElement
extends DomHTMLElement
implements HTMLAppletElement
{
protected DomHTMLAppletElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
public String getAlt()
{
return getHTMLAttribute("alt");
}
public void setAlt(String alt)
{
setHTMLAttribute("alt", alt);
}
public String getArchive()
{
return getHTMLAttribute("archive");
}
public void setArchive(String archive)
{
setHTMLAttribute("archive", archive);
}
public String getCode()
{
return getHTMLAttribute("code");
}
public void setCode(String code)
{
setHTMLAttribute("code", code);
}
public String getCodeBase()
{
return getHTMLAttribute("codebase");
}
public void setCodeBase(String codeBase)
{
setHTMLAttribute("codebase", codeBase);
}
public String getHeight()
{
return getHTMLAttribute("height");
}
public void setHeight(String height)
{
setHTMLAttribute("height", height);
}
public int getHspace()
{
return getIntHTMLAttribute("hspace");
}
public void setHspace(int hspace)
{
setIntHTMLAttribute("hspace", hspace);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getObject()
{
return getHTMLAttribute("object");
}
public void setObject(String object)
{
setHTMLAttribute("object", object);
}
public int getVspace()
{
return getIntHTMLAttribute("vspace");
}
public void setVspace(int vspace)
{
setIntHTMLAttribute("vspace", vspace);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
}
/* DomHTMLAreaElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLAreaElement;
/**
* An HTML 'AREA' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLAreaElement
extends DomHTMLElement
implements HTMLAreaElement
{
protected DomHTMLAreaElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAccessKey()
{
return getHTMLAttribute("accesskey");
}
public void setAccessKey(String accessKey)
{
setHTMLAttribute("accesskey", accessKey);
}
public String getAlt()
{
return getHTMLAttribute("alt");
}
public void setAlt(String alt)
{
setHTMLAttribute("alt", alt);
}
public String getCoords()
{
return getHTMLAttribute("coords");
}
public void setCoords(String coords)
{
setHTMLAttribute("coords", coords);
}
public String getHref()
{
return getHTMLAttribute("href");
}
public void setHref(String href)
{
setHTMLAttribute("href", href);
}
public boolean getNoHref()
{
return getBooleanHTMLAttribute("nohref");
}
public void setNoHref(boolean nohref)
{
setBooleanHTMLAttribute("nohref", nohref);
}
public String getShape()
{
return getHTMLAttribute("shape");
}
public void setShape(String shape)
{
setHTMLAttribute("shape", shape);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getTarget()
{
return getHTMLAttribute("target");
}
public void setTarget(String target)
{
setHTMLAttribute("target", target);
}
}
/* DomHTMLBRElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLBRElement;
/**
* An HTML 'BR' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLBRElement
extends DomHTMLElement
implements HTMLBRElement
{
protected DomHTMLBRElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getClear()
{
return getHTMLAttribute("clear");
}
public void setClear(String clear)
{
setHTMLAttribute("clear", clear);
}
}
/* DomHTMLBaseElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLBaseElement;
/**
* An HTML 'BASE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLBaseElement
extends DomHTMLElement
implements HTMLBaseElement
{
protected DomHTMLBaseElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getHref()
{
return getHTMLAttribute("href");
}
public void setHref(String href)
{
setHTMLAttribute("href", href);
}
public String getTarget()
{
return getHTMLAttribute("target");
}
public void setTarget(String target)
{
setHTMLAttribute("target", target);
}
}
/* DomHTMLBaseFontElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLBaseFontElement;
/**
* An HTML 'BASEFONT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLBaseFontElement
extends DomHTMLElement
implements HTMLBaseFontElement
{
protected DomHTMLBaseFontElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getColor()
{
return getHTMLAttribute("color");
}
public void setColor(String color)
{
setHTMLAttribute("color", color);
}
public String getFace()
{
return getHTMLAttribute("face");
}
public void setFace(String face)
{
setHTMLAttribute("face", face);
}
public int getSize()
{
return getIntHTMLAttribute("size");
}
public void setSize(int size)
{
setIntHTMLAttribute("size", size);
}
}
/* DomHTMLBodyElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLBodyElement;
/**
* An HTML 'BODY' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLBodyElement
extends DomHTMLElement
implements HTMLBodyElement
{
protected DomHTMLBodyElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getALink()
{
return getHTMLAttribute("alink");
}
public void setALink(String alink)
{
setHTMLAttribute("alink", alink);
}
public String getBackground()
{
return getHTMLAttribute("background");
}
public void setBackground(String background)
{
setHTMLAttribute("background", background);
}
public String getBgColor()
{
return getHTMLAttribute("bgcolor");
}
public void setBgColor(String bgcolor)
{
setHTMLAttribute("bgcolor", bgcolor);
}
public String getLink()
{
return getHTMLAttribute("link");
}
public void setLink(String link)
{
setHTMLAttribute("link", link);
}
public String getText()
{
return getHTMLAttribute("text");
}
public void setText(String text)
{
setHTMLAttribute("text", text);
}
public String getVLink()
{
return getHTMLAttribute("vlink");
}
public void setVLink(String vlink)
{
setHTMLAttribute("vlink", vlink);
}
}
/* DomHTMLButtonElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLButtonElement;
import org.w3c.dom.html2.HTMLFormElement;
/**
* An HTML 'BUTTON' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLButtonElement
extends DomHTMLElement
implements HTMLButtonElement
{
protected DomHTMLButtonElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public String getAccessKey()
{
return getHTMLAttribute("accesskey");
}
public void setAccessKey(String accessKey)
{
setHTMLAttribute("accesskey", accessKey);
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getType()
{
return getHTMLAttribute("type");
}
public String getValue()
{
return getHTMLAttribute("value");
}
public void setValue(String value)
{
setHTMLAttribute("value", value);
}
}
/* DomHTMLCollection.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import gnu.xml.dom.DomDOMException;
import gnu.xml.dom.DomElement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.w3c.dom.DOMException;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLOptionsCollection;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;
/**
* An HTML element collection.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
class DomHTMLCollection
implements HTMLCollection, HTMLOptionsCollection, NodeList, NodeFilter
{
final DomHTMLDocument doc;
final Node root;
List nodeNames;
List attributeNames;
List results;
DomHTMLCollection(DomHTMLDocument doc, Node root)
{
this.doc = doc;
this.root = root;
}
// -- Node name and attribute filtering --
void addNodeName(String name)
{
if (nodeNames == null)
{
nodeNames = new LinkedList();
}
nodeNames.add(name);
}
void addAttributeName(String name)
{
if (attributeNames == null)
{
attributeNames = new LinkedList();
}
attributeNames.add(name);
}
public short acceptNode(Node n)
{
if (n.getNodeType() != Node.ELEMENT_NODE)
{
return NodeFilter.FILTER_SKIP;
}
if (nodeNames != null && !acceptName(n.getLocalName()))
{
return NodeFilter.FILTER_SKIP;
}
if (attributeNames != null && !acceptAttributes(n.getAttributes()))
{
return NodeFilter.FILTER_SKIP;
}
return NodeFilter.FILTER_ACCEPT;
}
private boolean acceptName(String name)
{
for (Iterator i = nodeNames.iterator(); i.hasNext(); )
{
String nodeName = (String) i.next();
if (nodeName.equalsIgnoreCase(name))
{
return true;
}
}
return false;
}
private boolean acceptAttributes(NamedNodeMap attrs)
{
for (Iterator i = attributeNames.iterator(); i.hasNext(); )
{
String attributeName = (String) i.next();
Node attr = getNamedItem(attrs, attributeName);
if (attr != null)
{
// Check that attribute has a non-null value
String nodeValue = attr.getNodeValue();
if (nodeValue != null && nodeValue.length() > 0)
{
return true;
}
}
}
return false;
}
/**
* Case-insensitive version of getNamedItem.
*/
private Node getNamedItem(NamedNodeMap attrs, String name)
{
int len = attrs.getLength();
for (int i = 0; i < len; i++)
{
Node attr = attrs.item(i);
String attrName = attr.getLocalName();
if (name.equalsIgnoreCase(attrName))
{
return attr;
}
}
return null;
}
// -- Perform query --
void evaluate()
{
NodeIterator i = doc.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
this, true);
results = new ArrayList();
for (Node node = i.nextNode(); node != null; node = i.nextNode())
{
results.add(node);
}
}
// -- HTMLCollection/NodeList interface --
public int getLength()
{
return results.size();
}
public void setLength(int length)
{
throw new DomDOMException(DOMException.NOT_SUPPORTED_ERR);
}
public Node item(int index)
{
return (Node) results.get(index);
}
public Node namedItem(String name)
{
boolean xhtml = false; // FIXME detect XHTML document
for (Iterator i = results.iterator(); i.hasNext(); )
{
Node node = (Node) i.next();
NamedNodeMap attrs = node.getAttributes();
Node attr = getNamedItem(attrs, "id");
if (name.equals(attr.getTextContent()))
{
return node;
}
if (!xhtml)
{
attr = getNamedItem(attrs, "name");
if (name.equals(attr.getTextContent()))
{
return node;
}
}
}
return null;
}
}
/* DomHTMLDListElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLDListElement;
/**
* An HTML 'DL' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLDListElement
extends DomHTMLElement
implements HTMLDListElement
{
protected DomHTMLDListElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getCompact()
{
return getBooleanHTMLAttribute("compact");
}
public void setCompact(boolean compact)
{
setBooleanHTMLAttribute("compact", compact);
}
}
/* DomHTMLDirectoryElement.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package gnu.xml.dom.html2;
import org.w3c.dom.html2.HTMLDirectoryElement;
/**
* An HTML 'DIR' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLDirectoryElement
extends DomHTMLElement
implements HTMLDirectoryElement
{
protected DomHTMLDirectoryElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getCompact()
{
return getBooleanHTMLAttribute("compact");
}
public void setCompact(boolean compact)
{
setBooleanHTMLAttribute("compact", compact);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment