[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
This commit is contained in:
Michael Koch
2005-04-19 12:19:44 +00:00
parent c5f083efc5
commit 18e479e213
104 changed files with 22587 additions and 27 deletions
@@ -0,0 +1,50 @@
<!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>
File diff suppressed because it is too large Load Diff
+422
View File
@@ -0,0 +1,422 @@
/* gnuDTD.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;
import java.io.PrintStream;
import java.io.Serializable;
import java.util.BitSet;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Vector;
import javax.swing.text.html.parser.AttributeList;
import javax.swing.text.html.parser.ContentModel;
import javax.swing.text.html.parser.Element;
import javax.swing.text.html.parser.Entity;
/**
* <p>
* The class is derived from {@link gnu.javax.swing.text.html.parser.DTD }
* making structure creation methods public. This is required when
* creating the DTD by SGML parser that must have access to the structure.
*
* SGML DTD representation. Provides basis for describing a syntax of the
* HTML documents. The fields of this class are NOT initialized in
* constructor. You need to do this separately before passing this data
* structure to the parser constructor.</p>
*
* <p>This implementation also provides you the derived class
* <code>gnu.javax.swing.text.html.parser.DTD.HTML_4_0_1</code>, where
* all fields are initialized to the values, representing HTML 4.01
* ("-//W3C//DTD HTML 4.01 Frameset//EN") DTD. You can use it if you do not care
* about the portability between different implementations of the core
* class libraries. </p>
* <p>Use {@link javax.swing.HTML.HTMLEditorKit.Parser#parse }
* for parsing in accordance with "-//W3C//DTD HTML 4.01 Frameset//EN"
* without specifying DTD separately.</p>
*
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class gnuDTD
extends javax.swing.text.html.parser.DTD
implements javax.swing.text.html.parser.DTDConstants, Serializable
{
/* The undocumented element types, used to specify types, not defined
in DTDConstants. */
/**
* The URI element type (not defined in DTDConstants).
*/
public static final int URI = 512;
/**
* The Length element type
*/
public static final int Length = 513;
/**
* The Char element type
*/
public static final int Char = 514;
/**
* The Color element type
*/
public static final int Color = 515;
/**
* Creates a new instance of gnuDTD.
* @param name the name of the DTD.
*/
public gnuDTD(String name)
{
super(name);
}
/**
* Creates and returns new attribute (not an attribute list).
* @param name the name of this attribute
* @param type the type of this attribute (FIXED, IMPLIED or
* REQUIRED from <code>DTDConstants</code>).
* @param modifier the modifier of this attribute
* @param default_value the default value of this attribute or null if
* it is not specified.
* @param allowed_values the allowed values of this attribute. The multiple
* possible values in this parameter are supposed to be separated by
* '|', same as in SGML DTD <code>&lt;!ATTLIST </code>tag. This parameter
* can be null if no list of allowed values is specified.
* @param atts the previous attribute of this element. This is
* placed to the field
* {@link javax.swing.text.html.parser.AttributeList#next },
* creating a linked list.
* @return
*/
public AttributeList defAttributeList(String name, int type, int modifier,
String default_value,
String allowed_values,
AttributeList atts
)
{
return super.defAttributeList(name, type, modifier, default_value,
allowed_values, atts
);
}
/**
* Define the attributes for the element with the given name.
* If the element is not exist, it is created. This method is
* needed if the element attributes are defined befor the
* element itself.
* @param forElement
* @param attributes
*/
public void defAttrsFor(String forElement, AttributeList attributes)
{
super.defineAttributes(forElement, attributes);
}
/**
* Creates a new content model.
* @param type specifies the BNF operation for this content model.
* The valid operations are documented in the
* {@link javax.swing.text.html.parser.ContentModel#type }.
* @param content the content of this content model
* @param next if the content model is specified by BNF-like
* expression, contains the rest of this expression.
* @return The newly created content model.
*/
public ContentModel defContentModel(int type, Object content,
ContentModel next
)
{
return super.defContentModel(type, content, next);
}
/**
* Defines a new element and adds it to the element table.
* If the element alredy exists,
* overrides it settings with the specified values.
* @param name the name of the new element
* @param type the type of the element
* @param headless true if the element needs no starting tag
* @param tailless true if the element needs no closing tag
* @param content the element content.
* @param exclusions the elements that must be excluded from the
* content of this element, in all levels of the hierarchy.
* @param inclusions the elements that can be included as the
* content of this element.
* @param attributes the element attributes.
* @return the created or updated element.
*/
public Element defElement(String name, int type, boolean headless,
boolean tailless, ContentModel content,
String[] exclusions, String[] inclusions,
AttributeList attributes
)
{
return super.defElement(name, type, headless, tailless, content,
exclusions, inclusions, attributes
);
}
/**
* Defines a new element and adds it to the element table.
* If the element alredy exists,
* overrides it settings with the specified values.
* @param name the name of the new element
* @param type the type of the element
* @param headless true if the element needs no starting tag
* @param tailless true if the element needs no closing tag
* @param content the element content.
* @param exclusions the elements that must be excluded from the
* content of this element, in all levels of the hierarchy.
* @param inclusions the elements that can be included as the
* content of this element.
* @param attributes the element attributes.
* @return the created or updated element.
*/
public Element defElement(String name, int type, boolean headless,
boolean tailless, ContentModel content,
Collection exclusions, Collection inclusions,
AttributeList attributes
)
{
return super.defElement(name, type, headless, tailless, content,
toStringArray(exclusions),
toStringArray(inclusions), attributes
);
}
/**
* Defines a new element and adds it to the element table.
* If the element alredy exists,
* overrides it settings with the specified values.
* @param name the name of the new element
* @param type the type of the element
* @param headless true if the element needs no starting tag
* @param tailless true if the element needs no closing tag
* @param content the element content.
* @param exclusions the elements that must be excluded from the
* content of this element, in all levels of the hierarchy.
* @param inclusions the elements that can be included as the
* content of this element.
* @param attributes the element attributes (an array and not a
* linked list). The attributes are chained into the linked list
* inside this method.
* @return the created or updated element.
*/
public Element defElement(String name, int type, boolean headless,
boolean tailless, ContentModel content,
String[] exclusions, String[] inclusions,
AttributeList[] attributes
)
{
AttributeList list;
if (attributes == null || attributes.length == 0)
list = null;
else
{
if (attributes.length > 1)
for (int i = 1; i < attributes.length; i++)
{
attributes [ i - 1 ].next = attributes [ i ];
}
list = attributes [ 0 ];
}
Element e =
super.defElement(name, type, headless, tailless, content, exclusions,
inclusions, list
);
return e;
}
/**
* Creates, adds into the internal table and returns the
* character entity like <code>&amp;lt;</code>
* (means '<code>&lt;</code>' );
* This method inactivates the recursive refenrences to the same
* entity.
* @param name The entity name (without heading &amp; and closing ;)
* @param type The entity type
* @param character The entity value (single character)
* @return The created entity
*/
public Entity defEntity(String name, int type, String data)
{
int r;
String eref = "%" + name + ";";
do
{
r = data.indexOf(eref);
if (r > 0)
{
data = data.substring(0, r) + data.substring(r + 1);
}
}
while (r > 0);
return super.defEntity(name, type, data);
}
/**
* Summarises the document content into the given PrintStream.
*/
public void dump(PrintStream p)
{
Iterator iter = entityHash.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry item = (Map.Entry) iter.next();
Entity e = (Entity) item.getValue();
if (e.isGeneral())
p.println("Entity " + e.getName() + ": " + e.getString());
}
iter = elementHash.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry item = (Map.Entry) iter.next();
Element e = (Element) item.getValue();
p.println("Element " + e.getName());
System.out.println(" includes:");
dump(e.inclusions);
System.out.println(" excludes:");
dump(e.exclusions);
System.out.println(" attributes:");
AttributeList atts = e.atts;
while (atts != null)
{
p.print(" " + atts.name + " = " + atts.value);
if (atts.values == null || atts.values.size() == 0)
p.println();
else
{
Iterator viter = atts.values.iterator();
System.out.print(" ( ");
while (viter.hasNext())
{
System.out.print(viter.next());
if (viter.hasNext())
System.out.print(" | ");
}
System.out.println(" ) ");
}
atts = atts.next;
}
}
}
/**
* Prints the content of the given attribute set to the System.out.
* @param b
*/
public void dump(BitSet b)
{
if (b != null)
{
for (int i = 0; i < b.size(); i++)
{
if (b.get(i))
System.out.println(" " + elements.get(i));
}
}
else
System.out.println(" NULL set");
}
/**
* Creates the attribute.
* @param name The attribute name.
* @param type The attribute type.
* @param modifier The attribute modifier.
* @param defaultValue Default value (or null)
* @param allowed_values Allowed values (or null)
* @return The newly created AttributeList. The <code>next</code>
* field is initialized to null.
*/
protected AttributeList attr(String name, String default_value,
String[] allowed_values, int type, int modifier
)
{
Vector allowed = null;
if (allowed_values != null)
{
allowed = new Vector(allowed_values.length);
for (int i = 0; i < allowed_values.length; i++)
{
allowed.add(allowed_values [ i ]);
}
}
;
AttributeList attr =
new AttributeList(name, type, modifier, default_value, allowed, null);
return attr;
}
/**
* Define the general entity, holding a single character.
* @param name The entity name (for example, 'amp').
* The defined entity <b>is</b> stored into the entity table.
* @param character The entity character (for example, '&').
*/
protected void defineEntity(String name, int character)
{
super.defEntity(name, GENERAL, character);
}
private String[] toStringArray(Collection c)
{
String[] s = new String[ c.size() ];
Iterator iter = c.iterator();
for (int i = 0; i < s.length; i++)
{
s [ i ] = iter.next().toString();
}
return s;
}
}
@@ -0,0 +1,133 @@
/* 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);
}
}
@@ -0,0 +1,610 @@
/* tagStack.java -- The HTML tag stack.
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 gnu.javax.swing.text.html.parser.models.node;
import gnu.javax.swing.text.html.parser.models.transformer;
import java.util.BitSet;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.ListIterator;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.parser.*;
/**
* <p>The HTML content validator, is responsible for opening and
* closing elements with optional start/end tags, detecting
* the wrongly placed html tags and reporting errors. The working instance
* is the inner class inside the {@link javax.swing.text.html.parser.Parser }
* </p>
* <p>This class could potentially
* provide basis for automated closing and insertion of the html tags,
* correcting the found html errors.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public abstract class htmlValidator
{
/**
* The tag reference, holding additional information that the tag
* has been forcibly closed.
*/
protected class hTag
{
protected final Element element;
protected final HTML.Tag tag;
protected final TagElement tgElement;
protected boolean forcibly_closed;
protected node validationTrace;
protected hTag(TagElement an_element)
{
element = an_element.getElement();
tag = an_element.getHTMLTag();
tgElement = an_element;
if (element.content != null)
validationTrace = transformer.transform(element.content, dtd);
}
/**
* This is called when the tag must be forcibly closed because
* it would make the newly appearing tag invalid.
* The parser is not notified about such event (just the error
* is reported). For such tags, the closing message does not
* appear when later reaching the end of stream. The exception is
* the &lt;head&gt; tag: the parser is notified about its silent closing
* when &lt;body&gt; or other html content appears.
*/
protected void forciblyCloseDueContext()
{
forcibly_closed = true;
}
/**
* This is called when the tag must be forcibly closed after
* reaching the end of stream. The parser is notified as if
* closing the tag explicitly.
*/
protected void forciblyCloseDueEndOfStream()
{
forcibly_closed = true;
handleSupposedEndTag(element);
}
}
/**
* The DTD, providing information about the valid document structure.
*/
protected final DTD dtd;
/**
* The stack, holding the current tag context.
*/
protected final LinkedList stack = new LinkedList();
/**
* Creates a new tag stack, using the given DTD.
* @param a_dtd A DTD, providing the information about the valid
* tag content.
*/
public htmlValidator(DTD a_dtd)
{
dtd = a_dtd;
}
/**
* Close all opened tags (called at the end of parsing).
*/
public void closeAll()
{
hTag h;
while (!stack.isEmpty())
{
h = (hTag) stack.getLast();
if (!h.forcibly_closed && !h.element.omitEnd())
s_error("Unclosed <" + h.tag + ">, closing at the end of stream");
handleSupposedEndTag(h.element);
closeTag(h.tgElement);
}
}
/**
* Remove the given tag from the stack or (if found) from the list
* of the forcibly closed tags.
*/
public void closeTag(TagElement tElement)
{
HTML.Tag tag = tElement.getHTMLTag();
hTag x;
hTag close;
if (!stack.isEmpty())
{
ListIterator iter = stack.listIterator(stack.size());
while (iter.hasPrevious())
{
x = (hTag) iter.previous();
if (tag.equals(x.tag))
{
if (x.forcibly_closed && !x.element.omitEnd())
s_error("The tag <" + x.tag +
"> has already been forcibly closed"
);
// If the tag has a content model defined, forcibly close all
// tags that were opened after the tag being currently closed.
closing:
if (x.element.content != null)
{
iter = stack.listIterator(stack.size());
while (iter.hasPrevious())
{
close = (hTag) iter.previous();
if (close == x)
break closing;
handleSupposedEndTag(close.element);
iter.remove();
}
}
stack.remove(x);
return;
}
}
}
s_error("Closing unopened <" + tag + ">");
}
/**
* Add the given HTML tag to the stack of the opened tags. Forcibly closes
* all tags in the stack that does not allow this tag in they content (error
* is reported).
* @param element
*/
public void openTag(TagElement tElement, htmlAttributeSet parameters)
{
// If this is a fictional call, the message from the parser
// has recursively returned - ignore.
if (tElement.fictional())
return;
validateParameters(tElement, parameters);
// If the stack is empty, start from HTML
if (stack.isEmpty() && tElement.getHTMLTag() != HTML.Tag.HTML)
{
Element html = dtd.getElement(HTML.Tag.HTML.toString());
openFictionalTag(html);
}
Object v = tagIsValidForContext(tElement);
if (v != Boolean.TRUE)
{
// The tag is not valid for context, the content
// model suggest to open another tag.
if (v instanceof Element)
{
int n = 0;
while (v instanceof Element && (n++ < 100))
{
Element fe = (Element) v;
// notify the content model that we add the proposed tag
getCurrentContentModel().show(fe);
openFictionalTag(fe);
Object vv = tagIsValidForContext(tElement);
if (vv instanceof Element) // One level of nesting is supported.
{
openFictionalTag((Element) vv);
Object vx = tagIsValidForContext(tElement);
if (vx instanceof Element)
openFictionalTag((Element) vx);
}
else if (vv == Boolean.FALSE)
{
// The tag is still not valid for the current
// content after opening a fictional element.
if (fe.omitEnd())
{
// close the previously opened fictional tag.
closeLast();
vv = tagIsValidForContext(tElement);
if (vv instanceof Element)
// another tag was suggested by the content model
openFictionalTag((Element) vv);
}
}
v = tagIsValidForContext(tElement);
}
}
else // If the current element has the optional end tag, close it.
{
if (!stack.isEmpty())
{
closing:
do
{
hTag last = (hTag) stack.getLast();
if (last.element.omitEnd())
{
closeLast();
v = tagIsValidForContext(tElement);
if (v instanceof Element) // another tag was suggested by the content model
{
openFictionalTag((Element) v);
break closing;
}
}
else
break closing;
}
while (v == Boolean.FALSE && !stack.isEmpty());
}
}
}
stack.add(new hTag(tElement));
}
/**
* Clear the stack.
*/
public void restart()
{
stack.clear();
}
/**
* Check if this tag is valid for the current context.
* Return Boolean.True if it is OK, Boolean.False
* if it is surely not OK or the Element that the
* content model recommends to insert making the situation
* ok. If Boolean.True is returned, the content model current
* position is moved forward. Otherwise this position remains
* the same.
* @param tElement
* @return
*/
public Object tagIsValidForContext(TagElement tElement)
{
// Check the current content model, if one is available.
node cv = getCurrentContentModel();
if (cv != null)
return cv.show(tElement.getElement());
// Check exclusions and inclusions.
ListIterator iter = stack.listIterator(stack.size());
hTag t;
final int idx = tElement.getElement().index;
// Check only known tags.
if (idx >= 0)
{
BitSet inclusions = new BitSet();
while (iter.hasPrevious())
{
t = (hTag) iter.previous();
if (!t.forcibly_closed)
{
if (t.element.exclusions != null &&
t.element.exclusions.get(idx)
)
return Boolean.FALSE;
if (t.element.inclusions != null)
inclusions.or(t.element.inclusions);
}
}
if (!inclusions.get(idx))
return Boolean.FALSE;
}
return Boolean.TRUE;
}
/**
* Validate tag without storing in into the tag stack. This is called
* for the empty tags and results the subsequent calls to the openTag
* and closeTag.
*/
public void validateTag(TagElement tElement, htmlAttributeSet parameters)
{
openTag(tElement, parameters);
closeTag(tElement);
}
/**
* Check for mandatory elements, subsequent to the last tag:
* @param tElement The element that will be inserted next.
*/
protected void checkContentModel(TagElement tElement, boolean first)
{
if (stack.isEmpty())
return;
hTag last = (hTag) stack.getLast();
if (last.validationTrace == null)
return;
Object r = last.validationTrace.show(tElement.getElement());
if (r == Boolean.FALSE)
s_error("The <" + last.element + "> does not match the content model " +
last.validationTrace
);
else if (r instanceof Element) // The content model recommends insertion of this element
{
if (!first)
closeTag(last.tgElement);
handleSupposedStartTag((Element) r);
openTag(new TagElement((Element) r), null);
}
}
/**
* The method is called when the tag must be closed because
* it does not allow the subsequent elements inside its context
* or the end of stream has been reached. The parser is only
* informed if the element being closed does not require the
* end tag (the "omitEnd" flag is set).
* The closing message must be passed to the parser mechanism
* before passing message about the opening the next tag.
*
* @param element The tag being fictionally (forcibly) closed.
*/
protected abstract void handleSupposedEndTag(Element element);
/**
* The method is called when the validator decides to open the
* tag on its own initiative. This may happen if the content model
* includes the element with the optional (supposed) start tag.
*
* @param element The tag being opened.
*/
protected abstract void handleSupposedStartTag(Element element);
/**
* Handles the error message. This method must be overridden to pass
* the message where required.
* @param msg The message text.
*/
protected abstract void s_error(String msg);
/**
* Validate the parameters, report the error if the given parameter is
* not in the parameter set, valid for the given attribute. The information
* about the valid parameter set is taken from the Element, enclosed
* inside the tag. The method does not validate the default parameters.
* @param tag The tag
* @param parameters The parameters of this tag.
*/
protected void validateParameters(TagElement tag, htmlAttributeSet parameters)
{
if (parameters == null ||
parameters == htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET ||
parameters == SimpleAttributeSet.EMPTY
)
return;
Enumeration enumeration = parameters.getAttributeNames();
while (enumeration.hasMoreElements())
{
validateAttribute(tag, parameters, enumeration);
}
// Check for missing required values.
AttributeList a = tag.getElement().getAttributes();
while (a != null)
{
if (a.getModifier() == DTDConstants.REQUIRED)
if (parameters.getAttribute(a.getName()) == null)
{
s_error("Missing required attribute '" + a.getName() + "' for <" +
tag.getHTMLTag() + ">"
);
}
a = a.next;
}
}
private node getCurrentContentModel()
{
if (!stack.isEmpty())
{
hTag last = (hTag) stack.getLast();
return last.validationTrace;
}
else
return null;
}
private void closeLast()
{
handleSupposedEndTag(((hTag) stack.getLast()).element);
stack.removeLast();
}
private void openFictionalTag(Element e)
{
handleSupposedStartTag(e);
stack.add(new hTag(new TagElement(e, true)));
if (!e.omitStart())
s_error("<" + e + "> is expected (supposing it)");
}
private void validateAttribute(TagElement tag, htmlAttributeSet parameters,
Enumeration enumeration
)
{
Object foundAttribute;
AttributeList dtdAttribute;
foundAttribute = enumeration.nextElement();
dtdAttribute = tag.getElement().getAttribute(foundAttribute.toString());
if (dtdAttribute == null)
{
StringBuffer valid =
new StringBuffer("The tag <" + tag.getHTMLTag() +
"> cannot contain the attribute '" + foundAttribute +
"'. The valid attributes for this tag are: "
);
AttributeList a = tag.getElement().getAttributes();
while (a != null)
{
valid.append(a.name.toUpperCase());
valid.append(' ');
a = a.next;
}
s_error(valid.toString());
}
else
{
String value = parameters.getAttribute(foundAttribute).toString();
if (dtdAttribute.type == DTDConstants.NUMBER)
validateNumberAttribute(tag, foundAttribute, value);
if (dtdAttribute.type == DTDConstants.NAME ||
dtdAttribute.type == DTDConstants.ID
)
validateNameOrIdAttribute(tag, foundAttribute, value);
if (dtdAttribute.values != null)
validateAttributeWithValueList(tag, foundAttribute, dtdAttribute,
value
);
}
}
private void validateAttributeWithValueList(TagElement tag,
Object foundAttribute,
AttributeList dtdAttribute,
String value
)
{
if (!dtdAttribute.values.contains(value.toLowerCase()) &&
!dtdAttribute.values.contains(value.toUpperCase())
)
{
StringBuffer valid;
if (dtdAttribute.values.size() == 1)
valid =
new StringBuffer("The attribute '" + foundAttribute +
"' of the tag <" + tag.getHTMLTag() +
"> cannot have the value '" + value +
"'. The only valid value is "
);
else
valid =
new StringBuffer("The attribute '" + foundAttribute +
"' of the tag <" + tag.getHTMLTag() +
"> cannot have the value '" + value + "'. The " +
dtdAttribute.values.size() +
" valid values are: "
);
Enumeration vv = dtdAttribute.values.elements();
while (vv.hasMoreElements())
{
valid.append('"');
valid.append(vv.nextElement());
valid.append("\" ");
}
s_error(valid.toString());
}
}
private void validateNameOrIdAttribute(TagElement tag, Object foundAttribute,
String value
)
{
boolean ok = true;
if (!Character.isLetter(value.charAt(0)))
ok = false;
char c;
for (int i = 0; i < value.length(); i++)
{
c = value.charAt(i);
if (!(
Character.isLetter(c) || Character.isDigit(c) ||
"".indexOf(c) >= 0
)
)
ok = false;
}
if (!ok)
s_error("The '" + foundAttribute + "' attribute of the tag <" +
tag.getHTMLTag() + "> must start from letter and consist of " +
"letters, digits, hypens, colons, underscores and periods. " +
"It cannot be '" + value + "'"
);
}
private void validateNumberAttribute(TagElement tag, Object foundAttribute,
String value
)
{
try
{
Integer.parseInt(value);
}
catch (NumberFormatException ex)
{
s_error("The '" + foundAttribute + "' attribute of the tag <" +
tag.getHTMLTag() + "> must be a valid number and not '" +
value + "'"
);
}
}
}
@@ -0,0 +1,62 @@
/* 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;
}
}
@@ -0,0 +1,77 @@
/* 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;
}
}
+382
View File
@@ -0,0 +1,382 @@
/* list.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 list
extends node
implements Serializable
{
private static final long serialVersionUID = 1;
/**
* Setting to true means that the list nodes must always be connected
* by the same operation. This is far safer and clearer, but not
* required by default standard.
*/
public static boolean CLEAR;
/**
* A list of nodes.
*/
public final node[] nodes;
/**
* Creates a new model list that is a member of some enclosing list.
* @param binary_operator An operator with that this list is connected
* with other members of the enclosing list.
* @param unary_operator The unary operator for this list.
* @param a_nodes The nodes inside this list.
*/
public list(char binary_operator, char unary_operator, node[] a_nodes)
{
super(binary_operator, unary_operator, a_nodes);
nodes = a_nodes;
}
/**
* Creates a new model list. Assigns the previous field.
* @param a_nodes The nodes for this list.
* @throws an error if the node elements are connected by the
* different operations. This is not supported, use grouping.
*/
public list(node[] a_nodes)
throws Error
{
this(',', (char) 0, a_nodes);
int operation = nodes [ 0 ].binary;
for (int i = 0; i < nodes.length; i++)
{
if (CLEAR && nodes [ i ].binary != operation)
throw new Error("List members can only be connected by " +
"the same operation, use grouping"
);
if (i > 0)
nodes [ i ].previous = nodes [ i - 1 ];
}
}
/**
* Returns true if all members in the list are closed.
*/
public boolean isClosed()
{
if (super.isClosed())
return true;
for (int i = 0; i < nodes.length; i++)
{
if (!nodes [ i ].isClosed())
return false;
}
return true;
}
/**
* Find the token that could match as the next token in
* the token list.
*
* @return Such token object or null if none is found.
*/
public Object findFreeNode()
{
Object fn;
for (int j = 0; j < nodes.length; j++)
{
if (!nodes [ j ].isClosed())
{
fn = nodes [ j ].findFreeNode();
if (fn != null)
return fn;
}
}
return null;
}
/**
* Tries to match this list agains the given token sequence.
* @param tokens the sequence of the tokens to match.
* @return true if the valid match is found.
*/
public boolean matches(Object[] tokens)
{
reset();
Object x;
boolean m;
boolean matched = false;
for (int i = 0; i < tokens.length; i++)
{
matched = false;
x = tokens [ i ];
nodescan:
for (int j = 0; j < nodes.length; j++)
{
if (!nodes [ j ].isClosed())
{
m = nodes [ j ].performMatch(x);
if (m)
{
matched = true;
break nodescan;
}
}
}
if (!matched)
return false;
}
boolean valid = true;
for (int i = 0; i < nodes.length; i++)
{
if (!nodes [ i ].valid())
valid = false;
}
return valid;
}
/**
* The list never closes, despite it is trated as closed
* if all members in the list are closed.
* @return false.
*/
public boolean mustClose()
{
return false;
}
/**
* Perform a match operation for the single token
* against this list.
* @param token a token to match.
* @return true if the match is found.
*/
public boolean performMatch(Object token)
{
boolean ok = false;
Matching:
for (int i = 0; i < nodes.length; i++)
{
ok = nodes [ i ].performMatch(token);
if (ok)
break Matching;
}
if (ok)
matches();
return ok;
}
/**
* Prepeares the list for the next matching operation.
*/
public void reset()
{
super.reset();
for (int i = 0; i < nodes.length; i++)
nodes [ i ].reset();
}
/**
* Check if the provided token can match as a next token in the
* list. In the case of match, the list 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.
* If the object is an instance of Element or TagElement,
* it is first ensured that the object flag "omit start" is set.
*/
public Object show(Object x)
{
boolean m;
boolean matched = false;
nodescan:
for (int j = 0; j < nodes.length; j++)
{
if (!nodes [ j ].isClosed())
{
m = nodes [ j ].performMatch(x);
if (m)
{
matched = true;
break nodescan;
}
else
{
// For comma operation, only first not closed
// node must be tested for a match.
// unless it allows matching zero times.
if (binary == ',' &&
!(nodes [ j ].unary == '?' || nodes [ j ].unary == '*')
)
break nodescan;
}
}
}
if (!matched)
{
// Find and return that would be matched.
Object freeNode = findFreeNode();
if (freeNode == null)
return Boolean.FALSE;
else
return freeNode;
}
for (int i = 0; i < nodes.length; i++)
if (!nodes [ i ].validPreliminary())
{
return Boolean.FALSE;
}
return Boolean.TRUE;
}
/**
* Returns a string representation of the list.
* @return String representation, similar to BNF expression.
*/
public String toString()
{
StringBuffer b = new StringBuffer();
b.append(" ( ");
for (int i = 0; i < nodes.length; i++)
{
if (i > 0)
b.append(" " + (char) nodes [ i ].binary + " ");
b.append(nodes [ i ]);
}
b.append(" )");
if (unary != 0)
b.append((char) unary);
else
b.append(' ');
return b.toString();
}
/**
* Returns true if all memebers in the list are valid.
*/
public boolean valid()
{
for (int i = 0; i < nodes.length; i++)
{
if (!nodes [ i ].valid())
return false;
}
return true;
}
/**
* Returns true if all memebers in the list are either valid
* or unvisited. The unvisited members can become valid after
* more tokens will be shown.
*/
public boolean validPreliminary()
{
if (silenceAllowed())
{
boolean everVisited = false;
for (int i = 0; i < nodes.length; i++)
{
if (nodes [ i ].visits > 0)
{
everVisited = true;
break;
}
}
if (!everVisited)
return true;
}
for (int i = 0; i < nodes.length; i++)
{
if (!nodes [ i ].validPreliminary())
return false;
}
return true;
}
/**
* Closes all members in the list.
*/
protected void close()
{
super.close();
for (int i = 0; i < nodes.length; i++)
{
nodes [ i ].close();
}
}
/**
* Compare given token with the token of this node.
* If the token represents a <code>list</code>, the call may be
* delegeted to the child subnodes.
* @param a_token A token to compare.
* @return True if the token matches the token of this node.
*/
protected boolean compare(Object a_token)
{
return performMatch(a_token);
}
}
@@ -0,0 +1,75 @@
/* 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;
}
}
+337
View File
@@ -0,0 +1,337 @@
/* 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();
}
}
@@ -0,0 +1,53 @@
<!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>
@@ -0,0 +1,201 @@
/* 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;
}
}
@@ -0,0 +1,51 @@
<!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>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,112 @@
/* 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();
}
}
@@ -0,0 +1,238 @@
/* 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);
}
}
@@ -0,0 +1,422 @@
/* Constants.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;
import java.util.BitSet;
/**
* The parser constants and operations, directly related to the parser
* constants.
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
*/
public class Constants
{
/* Single character tokens are reflected into they ASCII codes. */
/**
* Start of HTML token.
*/
public static final int BEGIN = '<';
/**
* End of HTML token.
*/
public static final int END = '>';
/**
* Exclamation (indicates SGML or comment).
*/
public static final int EXCLAMATION = '!';
/**
* Slash (indicates closing tag).
*/
public static final int SLASH = '/';
/**
* Equals sign.
*/
public static final int EQ = '=';
/**
* Quoting sign.
*/
public static final int AP = '\'';
/**
* Quoting sign.
*/
public static final int QUOT = '"';
/* The numbers of other tokens start outside the ascii space. */
/* String tokens */
/**
* Double dash (--)
*/
public static final int DOUBLE_DASH = 1000;
/**
* The STYLE tag (needs special handling).
*/
public static final int STYLE = 1001;
/**
* The SCRIPT tag (needs special handling).
*/
public static final int SCRIPT = 1002;
/* Pattern tokens */
/**
* HTML whitespace.
*/
public static final int WS = 1003;
/**
* Named or numeric entity,
*/
public static final int ENTITY = 1004;
/**
* Sequence of valid name characters (can start from digit).
*/
public static final int NUMTOKEN = 1005;
/* Complex tokens */
/**
* Comment opening sequence.
*/
public static final pattern COMMENT_OPEN =
new pattern(new node[]
{
new node(BEGIN), new node(WS, true), new node(EXCLAMATION),
new node(WS, true), new node(DOUBLE_DASH),
}
);
/**
* Comment closing sequence
*/
public static final pattern COMMENT_END =
new pattern(new node[]
{
new node(DOUBLE_DASH), new node(WS, true), new node(END)
}
);
/**
* Special case ---> (also is treated as end of comment).
*/
public static final pattern COMMENT_TRIPLEDASH_END =
new pattern(new node[]
{
new node(DOUBLE_DASH), new node(NUMTOKEN), new node(END)
}
);
/**
* STYLE element heading pattern.
*/
public static final pattern STYLE_OPEN =
new pattern(new node[] { new node(BEGIN), new node(WS, true), new node(STYLE) });
/**
* SCRIPT element heading pattern.
*/
public static final pattern SCRIPT_OPEN =
new pattern(new node[] { new node(BEGIN), new node(WS, true), new node(SCRIPT) });
/**
* SGML element heading pattern.
*/
public static final pattern SGML =
new pattern(new node[]
{
new node(BEGIN), new node(WS, true), new node(EXCLAMATION)
}
);
/**
* SCRIPT element closing pattern.
*/
public static final pattern SCRIPT_CLOSE =
new pattern(new node[]
{
new node(BEGIN), new node(WS, true), new node(SLASH),
new node(WS, true), new node(SCRIPT), new node(WS, true),
new node(END)
}
);
/**
* STYLE element closing pattern.
*/
public static final pattern STYLE_CLOSE =
new pattern(new node[]
{
new node(BEGIN), new node(WS, true), new node(SLASH),
new node(WS, true), new node(STYLE), new node(WS, true),
new node(END)
}
);
/**
* Ordinary HTML tag heading pattern.
*/
public static final pattern TAG =
new pattern(new node[]
{
new node(BEGIN), new node(WS, true), new node(SLASH, true),
new node(WS, true), new node(NUMTOKEN)
}
);
/* Special tokens */
/**
* All other tokens.
*/
public static final int OTHER = 1999;
/**
* The UNICODE "end of text" control code
*/
static final char ETX = 3;
/**
* End of file.
*/
public static final int EOF = ETX;
/* Character categories */
/**
* All single char tokens.
*/
public static final BitSet bSINGLE_CHAR_TOKEN = new BitSet();
/**
* Non letters and non numbers, allowed in HTML names.
*/
public static final BitSet bSPECIAL = new BitSet();
/**
* All letters, used in HTML names.
*/
public static final BitSet bLETTER = new BitSet();
/**
* Digits.
*/
public static final BitSet bDIGIT = new BitSet();
/**
* Both line breaks.
*/
public static final BitSet bLINEBREAK = new BitSet();
/**
* All whitespace.
*/
public static final BitSet bWHITESPACE = new BitSet();
/**
* Both quoting characters.
*/
public static final BitSet bQUOTING = new BitSet();
/**
* Valid name characters.
*/
public static final BitSet bNAME = new BitSet();
/* Entity subcategories */
/**
* Named entity.
*/
public static final int ENTITY_NAMED = 1;
/**
* Numeric entity.
*/
public static final int ENTITY_NUMERIC = 2;
static
{
bQUOTING.set(AP);
bQUOTING.set(QUOT);
bSINGLE_CHAR_TOKEN.set(BEGIN);
bSINGLE_CHAR_TOKEN.set(END);
bSINGLE_CHAR_TOKEN.set(EXCLAMATION);
bSINGLE_CHAR_TOKEN.set(SLASH);
bSINGLE_CHAR_TOKEN.set(EQ);
bSINGLE_CHAR_TOKEN.set(EOF);
bSINGLE_CHAR_TOKEN.or(bQUOTING);
bLINEBREAK.set('\r');
bLINEBREAK.set('\n');
bWHITESPACE.set(' ');
bWHITESPACE.set('\t');
bWHITESPACE.set(0xC);
bWHITESPACE.or(bLINEBREAK);
for (char i = '0'; i <= '9'; i++)
{
bDIGIT.set(i);
}
for (char i = 'a'; i <= 'z'; i++)
{
bLETTER.set(i);
}
for (char i = 'A'; i <= 'Z'; i++)
{
bLETTER.set(i);
}
bSPECIAL.set('-');
bSPECIAL.set('_');
bSPECIAL.set(':');
bSPECIAL.set('.');
bNAME.or(bLETTER);
bNAME.or(bDIGIT);
bNAME.or(bSPECIAL);
}
/**
* Verifies if one of the tokens matches the end of string
* buffer. The last character in the string buffer is the
* "future character", some tokens needs to verify it the
* token does not continue "towards the future". If the token
* matches, it matches till "pre-last" character in the buffer.
* @param b
* @return
*/
public Token endMatches(Buffer b)
{
if (b.length() < 2)
return null;
int p = b.length() - 2;
if (b.length() > 2 && b.charAt(p) == '-' && b.charAt(p - 1) == '-')
return new Token(DOUBLE_DASH, "--", b.getLocation(p - 1, p + 1));
char last = b.charAt(p);
if (bSINGLE_CHAR_TOKEN.get(last))
return new Token(last, last, b.getLocation(p, p + 1));
char future = b.charAt(p + 1);
// Check for numtokens, script and style:
if (bNAME.get(last) && !bNAME.get(future))
{
// Scan the history up:
int u = p - 1;
while (u >= 0 && bNAME.get(b.charAt(u)))
u--;
u++;
char[] token = new char[ p - u + 1 ];
// Found a numtoken
b.getChars(u, p + 1, token, 0);
// Verify for the built-in tokens:
String e = new String(token);
// found the entity reference
if (u > 0 && b.charAt(u - 1) == '&')
{
// The subsequent semicolon may be the part of the token
// as well. The semicolon must be ignored. This must be
// handled elsewhere.
return new Token(ENTITY, ENTITY_NAMED, "&" + e,
b.getLocation(u - 1, p + 1)
);
}
// found the numeric entity reference
if (u > 1 && b.charAt(u - 1) == '#' && b.charAt(u - 2) == '&')
{
// The subsequent semicolon may be the part of the token
// as well. The semicolon must be ignored. This must be
// handled elsewhere.
return new Token(ENTITY, ENTITY_NUMERIC, "&#" + e,
b.getLocation(u - 2, p + 2)
);
}
Location le = b.getLocation(u, p + 1);
if (e.equalsIgnoreCase("SCRIPT"))
return new Token(SCRIPT, e, le);
else if (e.equalsIgnoreCase("STYLE"))
return new Token(STYLE, e, le);
else
return new Token(NUMTOKEN, e, le);
}
// Check for whitespace
if (bWHITESPACE.get(last) && !bWHITESPACE.get(future))
{
// Scan the history up:
int u = p - 1;
while (u >= 0 && bWHITESPACE.get(b.charAt(u)))
u--;
u++;
char[] token = new char[ p - u + 1 ];
b.getChars(u, p + 1, token, 0);
return new Token(WS, new String(token), b.getLocation(u, p + 1));
}
return null;
}
}
@@ -0,0 +1,83 @@
/* 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;
}
}
@@ -0,0 +1,51 @@
/* 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);
}
}
@@ -0,0 +1,142 @@
/* 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;
}
}
@@ -0,0 +1,374 @@
/* 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));
}
}
@@ -0,0 +1,169 @@
/* 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 + ">";
}
}
@@ -0,0 +1,78 @@
/* 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;
}
}
@@ -0,0 +1,47 @@
<!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>
@@ -0,0 +1,105 @@
/* 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);
}
}
}
@@ -0,0 +1,47 @@
<!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>
@@ -0,0 +1,106 @@
/* 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;
}
}
@@ -0,0 +1,193 @@
/* 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;
}
}
+18 -1
View File
@@ -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;
@@ -0,0 +1,189 @@
/* 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");
}
}
@@ -0,0 +1,169 @@
/* 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);
}
}
@@ -0,0 +1,139 @@
/* 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);
}
}
@@ -0,0 +1,69 @@
/* 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);
}
}
@@ -0,0 +1,79 @@
/* 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);
}
}
@@ -0,0 +1,89 @@
/* 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);
}
}
@@ -0,0 +1,119 @@
/* 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);
}
}
@@ -0,0 +1,121 @@
/* 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);
}
}
@@ -0,0 +1,218 @@
/* 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;
}
}
@@ -0,0 +1,69 @@
/* 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);
}
}
@@ -0,0 +1,69 @@
/* 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);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLDivElement.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.HTMLDivElement;
/**
* An HTML 'DIV' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLDivElement
extends DomHTMLElement
implements HTMLDivElement
{
protected DomHTMLDivElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
}
@@ -0,0 +1,425 @@
/* DomHTMLDocument.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.DomDocument;
import gnu.xml.dom.DomDOMException;
import java.lang.reflect.Constructor;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLDocument;
import org.w3c.dom.html2.HTMLElement;
/**
* An HTML document.
* This is the factory object used to create HTML elements.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLDocument
extends DomDocument
implements HTMLDocument
{
private static final Class[] ELEMENT_PT = new Class[] {
DomHTMLDocument.class,
String.class,
String.class
};
private static Map ELEMENT_CLASSES;
static
{
Map map = new HashMap();
map.put("a", DomHTMLAnchorElement.class);
map.put("applet", DomHTMLAppletElement.class);
map.put("area", DomHTMLAreaElement.class);
map.put("base", DomHTMLBaseElement.class);
map.put("basefont", DomHTMLBaseFontElement.class);
map.put("body", DomHTMLBodyElement.class);
map.put("br", DomHTMLBRElement.class);
map.put("button", DomHTMLButtonElement.class);
map.put("dir", DomHTMLDirectoryElement.class);
map.put("div", DomHTMLDivElement.class);
map.put("dlist", DomHTMLDListElement.class);
map.put("fieldset", DomHTMLFieldSetElement.class);
map.put("font", DomHTMLFontElement.class);
map.put("form", DomHTMLFormElement.class);
map.put("frame", DomHTMLFrameElement.class);
map.put("frameset", DomHTMLFrameSetElement.class);
map.put("head", DomHTMLHeadElement.class);
map.put("h1", DomHTMLHeadingElement.class);
map.put("h2", DomHTMLHeadingElement.class);
map.put("h3", DomHTMLHeadingElement.class);
map.put("h4", DomHTMLHeadingElement.class);
map.put("h5", DomHTMLHeadingElement.class);
map.put("h6", DomHTMLHeadingElement.class);
map.put("html", DomHTMLHtmlElement.class);
map.put("iframe", DomHTMLIFrameElement.class);
map.put("img", DomHTMLImageElement.class);
map.put("input", DomHTMLInputElement.class);
map.put("isindex", DomHTMLIsIndexElement.class);
map.put("label", DomHTMLLabelElement.class);
map.put("legend", DomHTMLLegendElement.class);
map.put("li", DomHTMLLIElement.class);
map.put("link", DomHTMLLinkElement.class);
map.put("map", DomHTMLMapElement.class);
map.put("menu", DomHTMLMenuElement.class);
map.put("meta", DomHTMLMetaElement.class);
map.put("ins", DomHTMLModElement.class);
map.put("del", DomHTMLModElement.class);
map.put("object", DomHTMLObjectElement.class);
map.put("ol", DomHTMLOListElement.class);
map.put("optgroup", DomHTMLOptGroupElement.class);
map.put("option", DomHTMLOptionElement.class);
map.put("p", DomHTMLParagraphElement.class);
map.put("param", DomHTMLParamElement.class);
map.put("pre", DomHTMLPreElement.class);
map.put("q", DomHTMLQuoteElement.class);
map.put("blockquote", DomHTMLQuoteElement.class);
map.put("script", DomHTMLScriptElement.class);
map.put("select", DomHTMLSelectElement.class);
map.put("style", DomHTMLStyleElement.class);
map.put("caption", DomHTMLTableCaptionElement.class);
map.put("th", DomHTMLTableCellElement.class);
map.put("td", DomHTMLTableCellElement.class);
map.put("col", DomHTMLTableColElement.class);
map.put("colgroup", DomHTMLTableColElement.class);
map.put("table", DomHTMLTableElement.class);
map.put("tr", DomHTMLTableRowElement.class);
map.put("thead", DomHTMLTableSectionElement.class);
map.put("tfoot", DomHTMLTableSectionElement.class);
map.put("tbody", DomHTMLTableSectionElement.class);
map.put("textarea", DomHTMLTextAreaElement.class);
map.put("title", DomHTMLTitleElement.class);
map.put("ul", DomHTMLUListElement.class);
ELEMENT_CLASSES = Collections.unmodifiableMap(map);
}
private static Set HTML_NS_URIS;
static
{
Set set = new HashSet();
set.add("http://www.w3.org/TR/html4/strict");
set.add("http://www.w3.org/TR/html4/loose");
set.add("http://www.w3.org/TR/html4/frameset");
set.add("http://www.w3.org/1999/xhtml");
set.add("http://www.w3.org/TR/xhtml1/strict");
set.add("http://www.w3.org/TR/xhtml1/loose");
set.add("http://www.w3.org/TR/xhtml1/frameset");
HTML_NS_URIS = Collections.unmodifiableSet(set);
}
/**
* Convenience constructor.
*/
public DomHTMLDocument()
{
this(new DomHTMLImpl());
}
/**
* Constructor.
* This is called by the DOMImplementation.
*/
public DomHTMLDocument(DomHTMLImpl impl)
{
super(impl);
}
private Node getChildNodeByName(Node parent, String name)
{
for (Node ctx = parent.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (name.equalsIgnoreCase(ctx.getNodeName()))
{
return ctx;
}
}
return null;
}
public String getTitle()
{
Node html = getDocumentElement();
if (html != null)
{
Node head = getChildNodeByName(html, "head");
if (head != null)
{
Node title = getChildNodeByName(head, "title");
if (title != null)
{
return title.getTextContent();
}
}
}
return null;
}
public void setTitle(String title)
{
Node html = getDocumentElement();
if (html == null)
{
html = createElement("html");
appendChild(html);
}
Node head = getChildNodeByName(html, "head");
if (head == null)
{
head = createElement("head");
Node first = html.getFirstChild();
if (first != null)
{
html.insertBefore(first, head);
}
else
{
html.appendChild(head);
}
}
Node titleNode = getChildNodeByName(head, "title");
if (titleNode == null)
{
titleNode = createElement("title");
Node first = head.getFirstChild();
if (first != null)
{
head.insertBefore(first, titleNode);
}
else
{
head.appendChild(titleNode);
}
}
titleNode.setTextContent(title);
}
public String getReferrer()
{
// TODO getReferrer
return null;
}
public String getDomain()
{
try
{
URL url = new URL(getDocumentURI());
return url.getHost();
}
catch (MalformedURLException e)
{
return null;
}
}
public String getURL()
{
return getDocumentURI();
}
public HTMLElement getBody()
{
Node html = getDocumentElement();
if (html != null)
{
Node body = getChildNodeByName(html, "body");
if (body == null)
{
body = getChildNodeByName(html, "frameset");
}
return (HTMLElement) body;
}
return null;
}
public void setBody(HTMLElement body)
{
Node html = getDocumentElement();
if (html == null)
{
html = createElement("html");
appendChild(html);
}
Node ref = getBody();
if (ref == null)
{
html.appendChild(body);
}
else
{
html.replaceChild(body, ref);
}
}
public HTMLCollection getImages()
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName("img");
ret.evaluate();
return ret;
}
public HTMLCollection getApplets()
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName("object");
ret.addNodeName("applet");
ret.evaluate();
return ret;
}
public HTMLCollection getLinks()
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName("area");
ret.addNodeName("a");
ret.evaluate();
return ret;
}
public HTMLCollection getForms()
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName("form");
ret.evaluate();
return ret;
}
public HTMLCollection getAnchors()
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName("a");
ret.addAttributeName("name");
ret.evaluate();
return ret;
}
public String getCookie()
{
// TODO getCookie
return null;
}
public void setCookie(String cookie)
{
// TODO setCookie
}
public void open()
{
// TODO open
}
public void close()
{
// TODO close
}
public void write(String text)
{
// TODO write
}
public void writeln(String text)
{
// TODO write
}
public NodeList getElementsByName(String name)
{
DomHTMLCollection ret = new DomHTMLCollection(this, this);
ret.addNodeName(name);
ret.evaluate();
return ret;
// TODO xhtml: return only form controls (?)
}
public Element createElement(String tagName)
{
return createElementNS(null, tagName);
}
public Element createElementNS(String uri, String qName)
{
/* If a non-HTML element, use the default implementation. */
if (uri != null && !HTML_NS_URIS.contains(uri))
{
return super.createElementNS(uri, qName);
}
String localName = qName.toLowerCase();
int ci = qName.indexOf(':');
if (ci != -1)
{
localName = qName.substring(ci + 1);
}
Class t = (Class) ELEMENT_CLASSES.get(localName);
/* If a non-HTML element, use the default implementation. */
if (t == null)
{
return super.createElementNS(uri, qName);
}
try
{
Constructor c = t.getDeclaredConstructor(ELEMENT_PT);
Object[] args = new Object[] { this, uri, qName };
return (Element) c.newInstance(args);
}
catch (Exception e)
{
DOMException e2 = new DomDOMException(DOMException.TYPE_MISMATCH_ERR);
e2.initCause(e);
throw e2;
}
}
}
@@ -0,0 +1,269 @@
/* DomHTMLElement.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 gnu.xml.dom.DomEvent;
import org.w3c.dom.DOMException;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.events.UIEvent;
import org.w3c.dom.html2.HTMLElement;
/**
* Abstract implementation of an HTML element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public abstract class DomHTMLElement
extends DomElement
implements HTMLElement
{
protected DomHTMLElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
/**
* Returns the value of the specified attribute.
* The attribute name is case insensitive.
*/
protected String getHTMLAttribute(String name)
{
if (hasAttributes())
{
NamedNodeMap attrs = getAttributes();
int len = attrs.getLength();
for (int i = 0; i < len; i++)
{
Node attr = attrs.item(i);
String attrName = attr.getLocalName();
if (attrName.equalsIgnoreCase(name))
{
return attr.getNodeValue();
}
}
}
return "";
}
protected int getIntHTMLAttribute(String name)
{
String value = getHTMLAttribute(name);
if (value == null)
{
return -1;
}
try
{
return Integer.parseInt(value);
}
catch (NumberFormatException e)
{
return -1;
}
}
protected boolean getBooleanHTMLAttribute(String name)
{
String value = getHTMLAttribute(name);
return value != null;
}
/**
* Sets the value of the specified attribute.
* The attribute name is case insensitive.
*/
protected void setHTMLAttribute(String name, String value)
{
Node attr;
NamedNodeMap attrs = getAttributes();
int len = attrs.getLength();
for (int i = 0; i < len; i++)
{
attr = attrs.item(i);
String attrName = attr.getLocalName();
if (attrName.equalsIgnoreCase(name))
{
if (value != null)
{
attr.setNodeValue(value);
}
else
{
attrs.removeNamedItem(attr.getNodeName());
}
return;
}
}
if (value != null)
{
// Create a new attribute
DomHTMLDocument doc = (DomHTMLDocument) getOwnerDocument();
// XXX namespace URI for attribute?
attr = doc.createAttribute(name);
attr.setNodeValue(value);
}
}
protected void setIntHTMLAttribute(String name, int value)
{
setHTMLAttribute(name, Integer.toString(value));
}
protected void setBooleanHTMLAttribute(String name, boolean value)
{
setHTMLAttribute(name, value ? name : null);
}
/**
* Returns the first parent element with the specified name.
*/
protected Node getParentElement(String name)
{
for (Node parent = getParentNode(); parent != null;
parent = parent.getParentNode())
{
if (name.equalsIgnoreCase(parent.getLocalName()))
{
return parent;
}
}
return null;
}
/**
* Returns the first child element with the specified name.
*/
protected Node getChildElement(String name)
{
for (Node child = getFirstChild(); child != null;
child = child.getNextSibling())
{
if (name.equalsIgnoreCase(child.getLocalName()))
{
return child;
}
}
return null;
}
/**
* Returns the index of this element among elements of the same name,
* relative to its parent.
*/
protected int getIndex()
{
int index = 0;
Node parent = getParentNode();
if (parent != null)
{
for (Node ctx = parent.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (ctx == this)
{
return index;
}
index++;
}
}
throw new DomDOMException(DOMException.NOT_FOUND_ERR);
}
protected void dispatchUIEvent(String name)
{
UIEvent event = new DomEvent.DomUIEvent(name);
dispatchEvent(event);
}
public String getId()
{
return getHTMLAttribute("id");
}
public void setId(String id)
{
setHTMLAttribute("id", id);
}
public String getTitle()
{
return getHTMLAttribute("title");
}
public void setTitle(String title)
{
setHTMLAttribute("title", title);
}
public String getLang()
{
return getHTMLAttribute("lang");
}
public void setLang(String lang)
{
setHTMLAttribute("lang", lang);
}
public String getDir()
{
return getHTMLAttribute("dir");
}
public void setDir(String dir)
{
setHTMLAttribute("dir", dir);
}
public String getClassName()
{
return getHTMLAttribute("class");
}
public void setClassName(String className)
{
setHTMLAttribute("class", className);
}
}
@@ -0,0 +1,65 @@
/* DomHTMLFieldSetElement.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.HTMLFieldSetElement;
import org.w3c.dom.html2.HTMLFormElement;
/**
* An HTML 'FIELDSET' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLFieldSetElement
extends DomHTMLElement
implements HTMLFieldSetElement
{
protected DomHTMLFieldSetElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
}
@@ -0,0 +1,89 @@
/* DomHTMLFontElement.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.HTMLFontElement;
/**
* An HTML 'FONT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLFontElement
extends DomHTMLElement
implements HTMLFontElement
{
protected DomHTMLFontElement(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 String getSize()
{
return getHTMLAttribute("size");
}
public void setSize(String size)
{
setHTMLAttribute("size", size);
}
}
@@ -0,0 +1,150 @@
/* DomHTMLFormElement.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.HTMLCollection;
import org.w3c.dom.html2.HTMLFormElement;
/**
* An HTML 'FORM' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLFormElement
extends DomHTMLElement
implements HTMLFormElement
{
protected DomHTMLFormElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLCollection getElements()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("input");
ret.addNodeName("button");
ret.addNodeName("select");
ret.addNodeName("textarea");
ret.addNodeName("isindex");
ret.addNodeName("label");
ret.addNodeName("option");
ret.evaluate();
return ret;
}
public int getLength()
{
return getElements().getLength();
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getAcceptCharset()
{
return getHTMLAttribute("accept-charset");
}
public void setAcceptCharset(String acceptCharset)
{
setHTMLAttribute("accept-charset", acceptCharset);
}
public String getAction()
{
return getHTMLAttribute("action");
}
public void setAction(String action)
{
setHTMLAttribute("action", action);
}
public String getEnctype()
{
return getHTMLAttribute("enctype");
}
public void setEnctype(String enctype)
{
setHTMLAttribute("enctype", enctype);
}
public String getMethod()
{
return getHTMLAttribute("method");
}
public void setMethod(String method)
{
setHTMLAttribute("method", method);
}
public String getTarget()
{
return getHTMLAttribute("target");
}
public void setTarget(String target)
{
setHTMLAttribute("target", target);
}
public void submit()
{
dispatchUIEvent("submit");
}
public void reset()
{
dispatchUIEvent("reset");
}
}
@@ -0,0 +1,146 @@
/* DomHTMLFrameElement.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.Document;
import org.w3c.dom.html2.HTMLFrameElement;
/**
* An HTML 'FRAME' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLFrameElement
extends DomHTMLElement
implements HTMLFrameElement
{
protected DomHTMLFrameElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getFrameBorder()
{
return getHTMLAttribute("frameborder");
}
public void setFrameBorder(String frameBorder)
{
setHTMLAttribute("frameborder", frameBorder);
}
public String getLongDesc()
{
return getHTMLAttribute("longdesc");
}
public void setLongDesc(String longDesc)
{
setHTMLAttribute("longdesc", longDesc);
}
public String getMarginHeight()
{
return getHTMLAttribute("marginheight");
}
public void setMarginHeight(String marginHeight)
{
setHTMLAttribute("marginheight", marginHeight);
}
public String getMarginWidth()
{
return getHTMLAttribute("marginwidth");
}
public void setMarginWidth(String marginWidth)
{
setHTMLAttribute("marginwidth", marginWidth);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public boolean getNoResize()
{
return getBooleanHTMLAttribute("noresize");
}
public void setNoResize(boolean noResize)
{
setBooleanHTMLAttribute("noresize", noResize);
}
public String getScrolling()
{
return getHTMLAttribute("scrolling");
}
public void setScrolling(String scrolling)
{
setHTMLAttribute("scrolling", scrolling);
}
public String getSrc()
{
return getHTMLAttribute("src");
}
public void setSrc(String src)
{
setHTMLAttribute("src", src);
}
public Document getContentDocument()
{
// TODO getContentDocument
return null;
}
}
@@ -0,0 +1,79 @@
/* DomHTMLFrameSetElement.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.HTMLFrameSetElement;
/**
* An HTML 'FRAMESET' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLFrameSetElement
extends DomHTMLElement
implements HTMLFrameSetElement
{
protected DomHTMLFrameSetElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getCols()
{
return getHTMLAttribute("cols");
}
public void setCols(String cols)
{
setHTMLAttribute("cols", cols);
}
public String getRows()
{
return getHTMLAttribute("rows");
}
public void setRows(String rows)
{
setHTMLAttribute("rows", rows);
}
}
@@ -0,0 +1,99 @@
/* DomHTMLHRElement.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.HTMLHRElement;
/**
* An HTML 'HR' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLHRElement
extends DomHTMLElement
implements HTMLHRElement
{
protected DomHTMLHRElement(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 boolean getNoShade()
{
return getBooleanHTMLAttribute("noshade");
}
public void setNoShade(boolean noShade)
{
setBooleanHTMLAttribute("noshade", noShade);
}
public String getSize()
{
return getHTMLAttribute("size");
}
public void setSize(String size)
{
setHTMLAttribute("size", size);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLHeadElement.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.HTMLHeadElement;
/**
* An HTML 'HEAD' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLHeadElement
extends DomHTMLElement
implements HTMLHeadElement
{
protected DomHTMLHeadElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getProfile()
{
return getHTMLAttribute("profile");
}
public void setProfile(String profile)
{
setHTMLAttribute("profile", profile);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLHeadingElement.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.HTMLHeadingElement;
/**
* An HTML 'H1', 'H2', 'H3', 'H4', 'H5', or 'H6' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLHeadingElement
extends DomHTMLElement
implements HTMLHeadingElement
{
protected DomHTMLHeadingElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLHtmlElement.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.HTMLHtmlElement;
/**
* An HTML 'HTML' top-level element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLHtmlElement
extends DomHTMLElement
implements HTMLHtmlElement
{
protected DomHTMLHtmlElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getVersion()
{
return getHTMLAttribute("version");
}
public void setVersion(String version)
{
setHTMLAttribute("version", version);
}
}
@@ -0,0 +1,166 @@
/* DomHTMLIFrameElement.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.Document;
import org.w3c.dom.html2.HTMLIFrameElement;
/**
* An HTML 'IFRAME' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLIFrameElement
extends DomHTMLElement
implements HTMLIFrameElement
{
protected DomHTMLIFrameElement(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 getFrameBorder()
{
return getHTMLAttribute("frameborder");
}
public void setFrameBorder(String frameBorder)
{
setHTMLAttribute("frameborder", frameBorder);
}
public String getHeight()
{
return getHTMLAttribute("height");
}
public void setHeight(String height)
{
setHTMLAttribute("height", height);
}
public String getLongDesc()
{
return getHTMLAttribute("longdesc");
}
public void setLongDesc(String longDesc)
{
setHTMLAttribute("longdesc", longDesc);
}
public String getMarginHeight()
{
return getHTMLAttribute("marginheight");
}
public void setMarginHeight(String marginHeight)
{
setHTMLAttribute("marginheight", marginHeight);
}
public String getMarginWidth()
{
return getHTMLAttribute("marginwidth");
}
public void setMarginWidth(String marginWidth)
{
setHTMLAttribute("marginwidth", marginWidth);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getScrolling()
{
return getHTMLAttribute("scrolling");
}
public void setScrolling(String scrolling)
{
setHTMLAttribute("scrolling", scrolling);
}
public String getSrc()
{
return getHTMLAttribute("src");
}
public void setSrc(String src)
{
setHTMLAttribute("src", src);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
public Document getContentDocument()
{
// TODO getContentDocument
return null;
}
}
@@ -0,0 +1,179 @@
/* DomHTMLImageElement.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.HTMLImageElement;
/**
* An HTML 'IMG' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLImageElement
extends DomHTMLElement
implements HTMLImageElement
{
protected DomHTMLImageElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", 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 getBorder()
{
return getHTMLAttribute("border");
}
public void setBorder(String border)
{
setHTMLAttribute("border", border);
}
public int getHeight()
{
return getIntHTMLAttribute("height");
}
public void setHeight(int height)
{
setIntHTMLAttribute("height", height);
}
public int getHspace()
{
return getIntHTMLAttribute("hspace");
}
public void setHspace(int hspace)
{
setIntHTMLAttribute("hspace", hspace);
}
public boolean getIsMap()
{
return getBooleanHTMLAttribute("ismap");
}
public void setIsMap(boolean isMap)
{
setBooleanHTMLAttribute("ismap", isMap);
}
public String getLongDesc()
{
return getHTMLAttribute("longdesc");
}
public void setLongDesc(String longDesc)
{
setHTMLAttribute("longdesc", longDesc);
}
public String getSrc()
{
return getHTMLAttribute("src");
}
public void setSrc(String src)
{
setHTMLAttribute("src", src);
}
public String getUseMap()
{
return getHTMLAttribute("usemap");
}
public void setUseMap(String useMap)
{
setHTMLAttribute("usemap", useMap);
}
public int getVspace()
{
return getIntHTMLAttribute("vspace");
}
public void setVspace(int vspace)
{
setIntHTMLAttribute("vspace", vspace);
}
public int getWidth()
{
return getIntHTMLAttribute("width");
}
public void setWidth(int width)
{
setIntHTMLAttribute("width", width);
}
}
@@ -0,0 +1,67 @@
/* DomHTMLImpl.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.DomImpl;
import org.w3c.dom.Document;
/**
* Specialised DOMImplementation for creating HTML documents.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLImpl
extends DomImpl
{
protected Document createDocument()
{
return new DomHTMLDocument(this);
}
public Object getFeature(String feature, String version)
{
if (hasFeature(feature, version))
{
return this;
}
return null;
}
}
@@ -0,0 +1,266 @@
/* DomHTMLInputElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLInputElement;
/**
* An HTML 'INPUT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLInputElement
extends DomHTMLElement
implements HTMLInputElement
{
protected String value;
protected Boolean checked;
protected DomHTMLInputElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getDefaultValue()
{
return getHTMLAttribute("value");
}
public void setDefaultValue(String defaultValue)
{
setHTMLAttribute("value", defaultValue);
}
public boolean getDefaultChecked()
{
return getBooleanHTMLAttribute("checked");
}
public void setDefaultChecked(boolean defaultChecked)
{
setBooleanHTMLAttribute("checked", defaultChecked);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public String getAccept()
{
return getHTMLAttribute("accept");
}
public void setAccept(String accept)
{
setHTMLAttribute("accept", accept);
}
public String getAccessKey()
{
return getHTMLAttribute("accesskey");
}
public void setAccessKey(String accessKey)
{
setHTMLAttribute("accesskey", accessKey);
}
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 boolean getChecked()
{
if (checked == null)
{
checked = Boolean.valueOf(getDefaultChecked());
}
return checked.booleanValue();
}
public void setChecked(boolean checked)
{
this.checked = Boolean.valueOf(checked);
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public int getMaxLength()
{
return getIntHTMLAttribute("maxLength");
}
public void setMaxLength(int maxLength)
{
setIntHTMLAttribute("maxLength", maxLength);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public boolean getReadOnly()
{
return getBooleanHTMLAttribute("readonly");
}
public void setReadOnly(boolean readOnly)
{
setBooleanHTMLAttribute("readonly", readOnly);
}
public int getSize()
{
return getIntHTMLAttribute("size");
}
public void setSize(int size)
{
setIntHTMLAttribute("size", size);
}
public String getSrc()
{
return getHTMLAttribute("src");
}
public void setSrc(String src)
{
setHTMLAttribute("src", src);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
public String getUseMap()
{
return getHTMLAttribute("usemap");
}
public void setUseMap(String useMap)
{
setHTMLAttribute("usemap", useMap);
}
public String getValue()
{
if (value == null)
{
value = getDefaultValue();
}
return value;
}
public void setValue(String value)
{
this.value = value;
}
public void blur()
{
dispatchUIEvent("blur");
}
public void focus()
{
dispatchUIEvent("focus");
}
public void select()
{
dispatchUIEvent("select");
}
public void click()
{
dispatchUIEvent("click");
}
}
@@ -0,0 +1,75 @@
/* DomHTMLIsIndexElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLIsIndexElement;
/**
* An HTML 'ISINDEX' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLIsIndexElement
extends DomHTMLElement
implements HTMLIsIndexElement
{
protected DomHTMLIsIndexElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public String getPrompt()
{
return getHTMLAttribute("prompt");
}
public void setPrompt(String prompt)
{
setHTMLAttribute("prompt", prompt);
}
}
@@ -0,0 +1,79 @@
/* DomHTMLLIElement.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.HTMLLIElement;
/**
* An HTML 'LI' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLLIElement
extends DomHTMLElement
implements HTMLLIElement
{
protected DomHTMLLIElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
public int getValue()
{
return getIntHTMLAttribute("value");
}
public void setValue(int value)
{
setIntHTMLAttribute("value", value);
}
}
@@ -0,0 +1,85 @@
/* DomHTMLLabelElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLLabelElement;
/**
* An HTML 'LABEL' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLLabelElement
extends DomHTMLElement
implements HTMLLabelElement
{
protected DomHTMLLabelElement(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 String getHtmlFor()
{
return getHTMLAttribute("for");
}
public void setHtmlFor(String htmlFor)
{
setHTMLAttribute("for", htmlFor);
}
}
@@ -0,0 +1,85 @@
/* DomHTMLLegendElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLLegendElement;
/**
* An HTML 'LEGEND' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLLegendElement
extends DomHTMLElement
implements HTMLLegendElement
{
protected DomHTMLLegendElement(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 String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
}
@@ -0,0 +1,149 @@
/* DomHTMLLinkElement.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.HTMLLinkElement;
/**
* An HTML 'LINK' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLLinkElement
extends DomHTMLElement
implements HTMLLinkElement
{
protected DomHTMLLinkElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public String getCharset()
{
return getHTMLAttribute("charset");
}
public void setCharset(String charset)
{
setHTMLAttribute("charset", charset);
}
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 getMedia()
{
return getHTMLAttribute("media");
}
public void setMedia(String media)
{
setHTMLAttribute("media", media);
}
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 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);
}
}
@@ -0,0 +1,79 @@
/* DomHTMLMapElement.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.HTMLCollection;
import org.w3c.dom.html2.HTMLMapElement;
/**
* An HTML 'MAP' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLMapElement
extends DomHTMLElement
implements HTMLMapElement
{
protected DomHTMLMapElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLCollection getAreas()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("area");
ret.evaluate();
return ret;
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLMenuElement.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.HTMLMenuElement;
/**
* An HTML 'MENU' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLMenuElement
extends DomHTMLElement
implements HTMLMenuElement
{
protected DomHTMLMenuElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getCompact()
{
return getBooleanHTMLAttribute("compact");
}
public void setCompact(boolean compact)
{
setBooleanHTMLAttribute("compact", compact);
}
}
@@ -0,0 +1,99 @@
/* DomHTMLMetaElement.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.HTMLMetaElement;
/**
* An HTML 'META' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLMetaElement
extends DomHTMLElement
implements HTMLMetaElement
{
protected DomHTMLMetaElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getContent()
{
return getHTMLAttribute("content");
}
public void setContent(String content)
{
setHTMLAttribute("content", content);
}
public String getHttpEquiv()
{
return getHTMLAttribute("http-equiv");
}
public void setHttpEquiv(String httpEquiv)
{
setHTMLAttribute("http-equiv", httpEquiv);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getScheme()
{
return getHTMLAttribute("scheme");
}
public void setScheme(String scheme)
{
setHTMLAttribute("scheme", scheme);
}
}
@@ -0,0 +1,79 @@
/* DomHTMLModElement.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.HTMLModElement;
/**
* An HTML 'INS' or 'DEL' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLModElement
extends DomHTMLElement
implements HTMLModElement
{
protected DomHTMLModElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getCite()
{
return getHTMLAttribute("cite");
}
public void setCite(String cite)
{
setHTMLAttribute("cite", cite);
}
public String getDateTime()
{
return getHTMLAttribute("datetime");
}
public void setDateTime(String dateTime)
{
setHTMLAttribute("datetime", dateTime);
}
}
@@ -0,0 +1,89 @@
/* DomHTMLOListElement.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.HTMLOListElement;
/**
* An HTML 'OL' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLOListElement
extends DomHTMLElement
implements HTMLOListElement
{
protected DomHTMLOListElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getCompact()
{
return getBooleanHTMLAttribute("compact");
}
public void setCompact(boolean compact)
{
setBooleanHTMLAttribute("compact", compact);
}
public int getStart()
{
return getIntHTMLAttribute("start");
}
public void setStart(int start)
{
setIntHTMLAttribute("start", start);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
}
@@ -0,0 +1,242 @@
/* DomHTMLObjectElement.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.Document;
import org.w3c.dom.html2.HTMLFormElement;
import org.w3c.dom.html2.HTMLObjectElement;
/**
* An HTML 'OBJECT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLObjectElement
extends DomHTMLElement
implements HTMLObjectElement
{
protected DomHTMLObjectElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public String getCode()
{
return getHTMLAttribute("code");
}
public void setCode(String code)
{
setHTMLAttribute("code", code);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
public String getArchive()
{
return getHTMLAttribute("archive");
}
public void setArchive(String archive)
{
setHTMLAttribute("archive", archive);
}
public String getBorder()
{
return getHTMLAttribute("border");
}
public void setBorder(String border)
{
setHTMLAttribute("border", border);
}
public String getCodeBase()
{
return getHTMLAttribute("codebase");
}
public void setCodeBase(String codeBase)
{
setHTMLAttribute("codebase", codeBase);
}
public String getCodeType()
{
return getHTMLAttribute("codetype");
}
public void setCodeType(String codeType)
{
setHTMLAttribute("codetype", codeType);
}
public String getData()
{
return getHTMLAttribute("data");
}
public void setData(String data)
{
setHTMLAttribute("data", data);
}
public boolean getDeclare()
{
return getBooleanHTMLAttribute("declare");
}
public void setDeclare(boolean declare)
{
setBooleanHTMLAttribute("declare", declare);
}
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 getStandby()
{
return getHTMLAttribute("standby");
}
public void setStandby(String standby)
{
setHTMLAttribute("standby", standby);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
public String getUseMap()
{
return getHTMLAttribute("usemap");
}
public void setUseMap(String useMap)
{
setHTMLAttribute("usemap", useMap);
}
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);
}
public Document getContentDocument()
{
// TODO getContentDocument
return null;
}
}
@@ -0,0 +1,79 @@
/* DomHTMLOptGroupElement.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.HTMLOptGroupElement;
/**
* An HTML 'OPTGROUP' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLOptGroupElement
extends DomHTMLElement
implements HTMLOptGroupElement
{
protected DomHTMLOptGroupElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public String getLabel()
{
return getHTMLAttribute("label");
}
public void setLabel(String label)
{
setHTMLAttribute("label", label);
}
}
@@ -0,0 +1,131 @@
/* DomHTMLOptionElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLOptionElement;
/**
* An HTML 'OPTION' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLOptionElement
extends DomHTMLElement
implements HTMLOptionElement
{
protected Boolean selected;
protected DomHTMLOptionElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public boolean getDefaultSelected()
{
return getBooleanHTMLAttribute("selected");
}
public void setDefaultSelected(boolean defaultSelected)
{
setBooleanHTMLAttribute("selected", defaultSelected);
}
public String getText()
{
return getTextContent();
}
public int getIndex()
{
return super.getIndex();
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public String getLabel()
{
return getHTMLAttribute("label");
}
public void setLabel(String label)
{
setHTMLAttribute("label", label);
}
public boolean getSelected()
{
if (selected == null)
{
selected = Boolean.valueOf(getDefaultSelected());
}
return selected.booleanValue();
}
public void setSelected(boolean selected)
{
this.selected = Boolean.valueOf(selected);
}
public String getValue()
{
return getHTMLAttribute("value");
}
public void setValue(String value)
{
setHTMLAttribute("value", value);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLParagraphElement.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.HTMLParagraphElement;
/**
* An HTML 'P' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLParagraphElement
extends DomHTMLElement
implements HTMLParagraphElement
{
protected DomHTMLParagraphElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
}
@@ -0,0 +1,99 @@
/* DomHTMLParamElement.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.HTMLParamElement;
/**
* An HTML 'PARAM' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLParamElement
extends DomHTMLElement
implements HTMLParamElement
{
protected DomHTMLParamElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
public String getValue()
{
return getHTMLAttribute("value");
}
public void setValue(String value)
{
setHTMLAttribute("value", value);
}
public String getValueType()
{
return getHTMLAttribute("valuetype");
}
public void setValueType(String valueType)
{
setHTMLAttribute("valuetype", valueType);
}
}
@@ -0,0 +1,266 @@
/* DomHTMLParser.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.javax.swing.text.html.parser.support.Parser;
import java.io.IOException;
import java.io.Reader;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.text.AttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.parser.DTD;
import javax.swing.text.html.parser.TagElement;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLDocument;
/**
* This parser reads HTML from the given stream and stores into
* {@link HTMLDocument}. The HTML tag becomes the {@link Node}.
* The tag attributes become the node attributes. The text inside
* HTML tag is inserted as one or several text nodes. The nested
* HTML tags are inserted as child nodes.
*
* If the strict tree structure, closing the tag means closing all
* nested tags. To work around this, this parser closes the nested
* tags and immediately reopens them after the closed tag.
* In this way, <code>&lt;b&gt;&lt;i&gt;c&lt;/b&gt;d</code>
* is parsed as <code>&lt;b&gt;&lt;i&gt;c&lt;/i&gt;&lt;/b&gt;&lt;i&gt;d</code> .
*
* @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
*/
public class DomHTMLParser
extends gnu.javax.swing.text.html.parser.support.Parser
{
/**
* The target where HTML document will be inserted.
*/
protected DomHTMLDocument document;
/**
* The subsequently created new nodes will be inserted as the
* childs of this cursor.
*/
protected Node cursor;
/**
* Create parser using the given DTD.
*
* @param dtd the DTD (for example,
* {@link gnu.javax.swing.text.html.parser.HTML_401F}).
*/
public DomHTMLParser(DTD dtd)
{
super(dtd);
}
/**
* Parse SGML insertion ( &lt;! ... &gt; ).
* Currently just treats it as comment.
*/
public boolean parseMarkupDeclarations(StringBuffer strBuff)
throws java.io.IOException
{
Node c = document.createComment(strBuff.toString());
cursor.appendChild(c);
return false;
}
/**
* Read the document, present in the given stream, and
* return the corresponding {@link HTMLDocument}.
*
* @param input a stream to read from.
* @return a document, reflecting the structure of the provided HTML
* text.
*
* @throws IOException if the reader throws one.
*/
public HTMLDocument parseDocument(Reader input)
throws IOException
{
try
{
document = new DomHTMLDocument();
cursor = document;
parse(input);
DomHTMLDocument h = document;
document = null;
return h;
}
catch (Exception ex)
{
ex.printStackTrace();
throw new IOException("Exception: " + ex.getMessage());
}
}
/**
* Create a new node.
* @param name the name of node, case insensitive.
* @return the created node.
*/
protected Node createNode(String name)
{
Node new_node = document.createElement(name.toLowerCase());
AttributeSet hatts = getAttributes();
NamedNodeMap natts = new_node.getAttributes();
Enumeration enumeration = hatts.getAttributeNames();
Object key;
Node attribute;
while (hatts != null)
{
while (enumeration.hasMoreElements())
{
key = enumeration.nextElement();
attribute = document.createAttribute(key.toString());
attribute.setNodeValue(hatts.getAttribute(key).toString());
natts.setNamedItem(attribute);
}
// The default values are stored in a parent node.
hatts = hatts.getResolveParent();
}
return new_node;
}
/**
* Handle comment by inserting the comment node.
* @param text the comment text.
*/
protected void handleComment(char[] text)
{
Node c = document.createComment(new String(text));
cursor.appendChild(c);
}
/**
* Handle the tag with no content.
* @param tag the tag to handle.
*/
protected void handleEmptyTag(TagElement tag)
{
String name = tag.getHTMLTag().toString();
if (name.equalsIgnoreCase("#pcdata"))
return;
Node c = createNode(name);
cursor.appendChild(c);
}
/**
* Close the given tag. Close and reopen all nested tags.
* @param tag the tag to close.
*/
protected void handleEndTag(TagElement tag)
{
String name = tag.getHTMLTag().toString();
String nname = cursor.getNodeName();
// Closing the current tag.
if (nname != null && nname.equalsIgnoreCase(name))
{
cursor = cursor.getParentNode();
}
else
{
Node nCursor = cursor.getParentNode();
// Remember the opened nodes.
LinkedList open = new LinkedList();
Node close = cursor;
while (close != null && !close.getNodeName().equalsIgnoreCase(name))
{
if (close != document)
open.addFirst(close);
close = close.getParentNode();
}
if (close == null)
cursor = document;
else
cursor = close.getParentNode();
// Insert the copies of the opened nodes.
Iterator iter = open.iterator();
while (iter.hasNext())
{
Node item = (Node) iter.next();
Node copy = item.cloneNode(true);
cursor.appendChild(copy);
cursor = copy;
}
}
}
/**
* Handle the start tag by inserting the HTML element.
* @param tag the tag to handle.
*/
protected void handleStartTag(TagElement tag)
{
HTML.Tag h = tag.getHTMLTag();
Node c = createNode(h.toString());
cursor.appendChild(c);
cursor = c;
}
/**
* Handle text by inserting the text node.
* @param text the text to insert.
*/
protected void handleText(char[] text)
{
Node c = document.createTextNode(text, 0, text.length);
cursor.appendChild(c);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLPreElement.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.HTMLPreElement;
/**
* An HTML 'PRE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLPreElement
extends DomHTMLElement
implements HTMLPreElement
{
protected DomHTMLPreElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public int getWidth()
{
return getIntHTMLAttribute("width");
}
public void setWidth(int width)
{
setIntHTMLAttribute("width", width);
}
}
@@ -0,0 +1,69 @@
/* DomHTMLQuoteElement.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.HTMLQuoteElement;
/**
* An HTML 'Q' or 'BLOCKQUOTE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLQuoteElement
extends DomHTMLElement
implements HTMLQuoteElement
{
protected DomHTMLQuoteElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getCite()
{
return getHTMLAttribute("cite");
}
public void setCite(String cite)
{
setHTMLAttribute("cite", cite);
}
}
@@ -0,0 +1,129 @@
/* DomHTMLScriptElement.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.HTMLScriptElement;
/**
* An HTML 'SCRIPT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLScriptElement
extends DomHTMLElement
implements HTMLScriptElement
{
protected DomHTMLScriptElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getText()
{
return getTextContent();
}
public void setText(String text)
{
setTextContent(text);
}
public String getHtmlFor()
{
return getHTMLAttribute("for");
}
public void setHtmlFor(String htmlFor)
{
setHTMLAttribute("for", htmlFor);
}
public String getEvent()
{
return getHTMLAttribute("event");
}
public void setEvent(String event)
{
setHTMLAttribute("event", event);
}
public String getCharset()
{
return getHTMLAttribute("charset");
}
public void setCharset(String charset)
{
setHTMLAttribute("charset", charset);
}
public boolean getDefer()
{
return getBooleanHTMLAttribute("defer");
}
public void setDefer(boolean defer)
{
setBooleanHTMLAttribute("defer", defer);
}
public String getSrc()
{
return getHTMLAttribute("src");
}
public void setSrc(String src)
{
setHTMLAttribute("src", src);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
}
@@ -0,0 +1,211 @@
/* DomHTMLSelectElement.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 org.w3c.dom.DOMException;
import org.w3c.dom.html2.HTMLElement;
import org.w3c.dom.html2.HTMLFormElement;
import org.w3c.dom.html2.HTMLOptionElement;
import org.w3c.dom.html2.HTMLOptionsCollection;
import org.w3c.dom.html2.HTMLSelectElement;
/**
* An HTML 'SELECT' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLSelectElement
extends DomHTMLElement
implements HTMLSelectElement
{
protected DomHTMLSelectElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getType()
{
return getHTMLAttribute("type");
}
public int getSelectedIndex()
{
HTMLOptionsCollection options = getOptions();
int len = options.getLength();
for (int i = 0; i < len; i++)
{
HTMLOptionElement option = (HTMLOptionElement) options.item(i);
if (option.getSelected())
{
return i;
}
}
return -1;
}
public void setSelectedIndex(int selectedIndex)
{
HTMLOptionsCollection options = getOptions();
int len = options.getLength();
if (selectedIndex < 0 || selectedIndex >= len)
{
throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
}
for (int i = 0; i < len; i++)
{
HTMLOptionElement option = (HTMLOptionElement) options.item(i);
option.setSelected(i == selectedIndex);
}
}
public String getValue()
{
return getHTMLAttribute("value");
}
public void setValue(String value)
{
setHTMLAttribute("value", value);
}
public int getLength()
{
return getIntHTMLAttribute("length");
}
public void setLength(int length)
{
setIntHTMLAttribute("length", length);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public HTMLOptionsCollection getOptions()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("option");
ret.evaluate();
return ret;
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public boolean getMultiple()
{
return getBooleanHTMLAttribute("multiple");
}
public void setMultiple(boolean multiple)
{
setBooleanHTMLAttribute("multiple", multiple);
}
public String getName()
{
return getHTMLAttribute("name");
}
public void setName(String name)
{
setHTMLAttribute("name", name);
}
public int getSize()
{
return getIntHTMLAttribute("size");
}
public void setSize(int size)
{
setIntHTMLAttribute("size", size);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public void add(HTMLElement element, HTMLElement before)
{
insertBefore(before, element);
}
public void remove(int index)
{
HTMLOptionsCollection options = getOptions();
int len = options.getLength();
if (index < 0 || index >= len)
{
throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
}
HTMLOptionElement option = (HTMLOptionElement) options.item(index);
option.getParentNode().removeChild(option);
}
public void blur()
{
dispatchUIEvent("blur");
}
public void focus()
{
dispatchUIEvent("focus");
}
}
@@ -0,0 +1,89 @@
/* DomHTMLStyleElement.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.HTMLStyleElement;
/**
* An HTML 'STYLE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLStyleElement
extends DomHTMLElement
implements HTMLStyleElement
{
protected DomHTMLStyleElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getDisabled()
{
return getBooleanHTMLAttribute("disabled");
}
public void setDisabled(boolean disabled)
{
setBooleanHTMLAttribute("disabled", disabled);
}
public String getMedia()
{
return getHTMLAttribute("media");
}
public void setMedia(String media)
{
setHTMLAttribute("media", media);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
}
@@ -0,0 +1,70 @@
/* DomHTMLTableCaptionElement.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.HTMLTableCaptionElement;
/**
* An HTML 'CAPTION' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableCaptionElement
extends DomHTMLElement
implements HTMLTableCaptionElement
{
protected DomHTMLTableCaptionElement(DomHTMLDocument owner,
String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
}
@@ -0,0 +1,205 @@
/* DomHTMLTableCellElement.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.HTMLTableCellElement;
/**
* An HTML 'TH' or 'TD' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableCellElement
extends DomHTMLElement
implements HTMLTableCellElement
{
protected DomHTMLTableCellElement(DomHTMLDocument owner,
String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public int getCellIndex()
{
return getIndex();
}
public String getAbbr()
{
return getHTMLAttribute("abbr");
}
public void setAbbr(String abbr)
{
setHTMLAttribute("abbr", abbr);
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
public String getAxis()
{
return getHTMLAttribute("axis");
}
public void setAxis(String axis)
{
setHTMLAttribute("axis", axis);
}
public String getBgColor()
{
return getHTMLAttribute("bgcolor");
}
public void setBgColor(String bgColor)
{
setHTMLAttribute("bgcolor", bgColor);
}
public String getCh()
{
return getHTMLAttribute("char");
}
public void setCh(String ch)
{
setHTMLAttribute("char", ch);
}
public String getChOff()
{
return getHTMLAttribute("charoff");
}
public void setChOff(String chOff)
{
setHTMLAttribute("charoff", chOff);
}
public int getColSpan()
{
return getIntHTMLAttribute("colspan");
}
public void setColSpan(int colSpan)
{
setIntHTMLAttribute("colspan", colSpan);
}
public String getHeaders()
{
return getHTMLAttribute("headers");
}
public void setHeaders(String headers)
{
setHTMLAttribute("headers", headers);
}
public String getHeight()
{
return getHTMLAttribute("height");
}
public void setHeight(String height)
{
setHTMLAttribute("height", height);
}
public boolean getNoWrap()
{
return getBooleanHTMLAttribute("nowrap");
}
public void setNoWrap(boolean noWrap)
{
setBooleanHTMLAttribute("nowrap", noWrap);
}
public int getRowSpan()
{
return getIntHTMLAttribute("rowspan");
}
public void setRowSpan(int rowSpan)
{
setIntHTMLAttribute("rowspan", rowSpan);
}
public String getScope()
{
return getHTMLAttribute("scope");
}
public void setScope(String scope)
{
setHTMLAttribute("scope", scope);
}
public String getVAlign()
{
return getHTMLAttribute("valign");
}
public void setVAlign(String vAlign)
{
setHTMLAttribute("valign", vAlign);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
}
@@ -0,0 +1,120 @@
/* DomHTMLTableColElement.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.HTMLTableColElement;
/**
* An HTML 'COL' or 'COLGROUP' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableColElement
extends DomHTMLElement
implements HTMLTableColElement
{
protected DomHTMLTableColElement(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 getCh()
{
return getHTMLAttribute("char");
}
public void setCh(String ch)
{
setHTMLAttribute("char", ch);
}
public String getChOff()
{
return getHTMLAttribute("charoff");
}
public void setChOff(String chOff)
{
setHTMLAttribute("charoff", chOff);
}
public int getSpan()
{
return getIntHTMLAttribute("span");
}
public void setSpan(int span)
{
setIntHTMLAttribute("span", span);
}
public String getVAlign()
{
return getHTMLAttribute("valign");
}
public void setVAlign(String vAlign)
{
setHTMLAttribute("valign", vAlign);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
}
@@ -0,0 +1,383 @@
/* DomHTMLTableElement.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 org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLElement;
import org.w3c.dom.html2.HTMLTableCaptionElement;
import org.w3c.dom.html2.HTMLTableElement;
import org.w3c.dom.html2.HTMLTableSectionElement;
/**
* An HTML 'TABLE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableElement
extends DomHTMLElement
implements HTMLTableElement
{
protected DomHTMLTableElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public HTMLTableCaptionElement getCaption()
{
return (HTMLTableCaptionElement) getChildElement("caption");
}
public void setCaption(HTMLTableCaptionElement caption)
{
HTMLTableCaptionElement ref = getCaption();
if (ref == null)
{
appendChild(caption);
}
else
{
replaceChild(caption, ref);
}
}
public HTMLTableSectionElement getTHead()
{
return (HTMLTableSectionElement) getChildElement("thead");
}
public void setTHead(HTMLTableSectionElement tHead)
{
HTMLTableSectionElement ref = getTHead();
if (ref == null)
{
appendChild(tHead);
}
else
{
replaceChild(tHead, ref);
}
}
public HTMLTableSectionElement getTFoot()
{
return (HTMLTableSectionElement) getChildElement("tfoot");
}
public void setTFoot(HTMLTableSectionElement tFoot)
{
HTMLTableSectionElement ref = getTFoot();
if (ref == null)
{
appendChild(tFoot);
}
else
{
replaceChild(tFoot, ref);
}
}
public HTMLCollection getRows()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("tr");
ret.evaluate();
return ret;
}
public HTMLCollection getTBodies()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("tbody");
ret.evaluate();
return ret;
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
public String getBgColor()
{
return getHTMLAttribute("bgcolor");
}
public void setBgColor(String bgColor)
{
setHTMLAttribute("bgcolor", bgColor);
}
public String getBorder()
{
return getHTMLAttribute("border");
}
public void setBorder(String border)
{
setHTMLAttribute("border", border);
}
public String getCellPadding()
{
return getHTMLAttribute("cellpadding");
}
public void setCellPadding(String cellPadding)
{
setHTMLAttribute("cellpadding", cellPadding);
}
public String getCellSpacing()
{
return getHTMLAttribute("cellspacing");
}
public void setCellSpacing(String cellSpacing)
{
setHTMLAttribute("cellspacing", cellSpacing);
}
public String getFrame()
{
return getHTMLAttribute("frame");
}
public void setFrame(String frame)
{
setHTMLAttribute("frame", frame);
}
public String getRules()
{
return getHTMLAttribute("rules");
}
public void setRules(String rules)
{
setHTMLAttribute("rules", rules);
}
public String getSummary()
{
return getHTMLAttribute("summary");
}
public void setSummary(String summary)
{
setHTMLAttribute("summary", summary);
}
public String getWidth()
{
return getHTMLAttribute("width");
}
public void setWidth(String width)
{
setHTMLAttribute("width", width);
}
public HTMLElement createTHead()
{
HTMLTableSectionElement ref = getTHead();
if (ref == null)
{
return (HTMLElement) getOwnerDocument().createElement("thead");
}
else
{
return ref;
}
}
public void deleteTHead()
{
HTMLTableSectionElement ref = getTHead();
if (ref != null)
{
removeChild(ref);
}
}
public HTMLElement createTFoot()
{
HTMLTableSectionElement ref = getTFoot();
if (ref == null)
{
return (HTMLElement) getOwnerDocument().createElement("tfoot");
}
else
{
return ref;
}
}
public void deleteTFoot()
{
HTMLTableSectionElement ref = getTFoot();
if (ref != null)
{
removeChild(ref);
}
}
public HTMLElement createCaption()
{
HTMLTableCaptionElement ref = getCaption();
if (ref == null)
{
return (HTMLElement) getOwnerDocument().createElement("caption");
}
else
{
return ref;
}
}
public void deleteCaption()
{
HTMLTableCaptionElement ref = getCaption();
if (ref != null)
{
removeChild(ref);
}
}
public HTMLElement insertRow(int index)
{
Node ref = getRow(index);
Node row = getOwnerDocument().createElement("tr");
if (ref == null)
{
Node tbody = getChildElement("tbody");
if (tbody == null)
{
tbody = getOwnerDocument().createElement("tfoot");
appendChild(tbody);
}
tbody.appendChild(row);
}
else
{
ref.getParentNode().insertBefore(row, ref);
}
return (HTMLElement) row;
}
public void deleteRow(int index)
{
Node ref = getRow(index);
if (ref == null)
{
throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
}
ref.getParentNode().removeChild(ref);
}
Node getRow(final int index)
{
int i = 0;
Node thead = getChildElement("thead");
if (thead != null)
{
for (Node ctx = thead.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
{
continue;
}
if (index == i)
{
return ctx;
}
i++;
}
}
Node tbody = getChildElement("tbody");
if (tbody == null)
{
tbody = this;
}
for (Node ctx = tbody.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
{
continue;
}
if (index == i)
{
return ctx;
}
i++;
}
Node tfoot = getChildElement("tfoot");
if (tfoot != null)
{
for (Node ctx = tfoot.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
{
continue;
}
if (index == i)
{
return ctx;
}
i++;
}
}
return null;
}
}
@@ -0,0 +1,225 @@
/* DomHTMLTableRowElement.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 org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLElement;
import org.w3c.dom.html2.HTMLTableRowElement;
/**
* An HTML 'TR' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableRowElement
extends DomHTMLElement
implements HTMLTableRowElement
{
protected DomHTMLTableRowElement(DomHTMLDocument owner,
String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public int getRowIndex()
{
return getIndex();
}
public int getSectionRowIndex()
{
int index = 0;
DomHTMLElement parent = (DomHTMLElement) getParentElement("table");
if (parent != null)
{
Node thead = parent.getChildElement("thead");
if (thead != null)
{
for (Node ctx = thead.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (ctx == this)
{
return index;
}
index++;
}
}
Node tbody = parent.getChildElement("tbody");
if (tbody != null)
{
for (Node ctx = tbody.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (ctx == this)
{
return index;
}
index++;
}
}
Node tfoot = parent.getChildElement("tfoot");
if (tfoot != null)
{
for (Node ctx = tfoot.getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (ctx == this)
{
return index;
}
index++;
}
}
}
throw new DomDOMException(DOMException.NOT_FOUND_ERR);
}
public HTMLCollection getCells()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("th");
ret.addNodeName("td");
ret.evaluate();
return ret;
}
public String getAlign()
{
return getHTMLAttribute("align");
}
public void setAlign(String align)
{
setHTMLAttribute("align", align);
}
public String getBgColor()
{
return getHTMLAttribute("bgcolor");
}
public void setBgColor(String bgColor)
{
setHTMLAttribute("bgcolor", bgColor);
}
public String getCh()
{
return getHTMLAttribute("char");
}
public void setCh(String ch)
{
setHTMLAttribute("char", ch);
}
public String getChOff()
{
return getHTMLAttribute("charoff");
}
public void setChOff(String chOff)
{
setHTMLAttribute("charoff", chOff);
}
public String getVAlign()
{
return getHTMLAttribute("valign");
}
public void setVAlign(String vAlign)
{
setHTMLAttribute("valign", vAlign);
}
public HTMLElement insertCell(int index)
{
Node ref = getCell(index);
Node cell = getOwnerDocument().createElement("td");
if (ref == null)
{
appendChild(cell);
}
else
{
insertBefore(cell, ref);
}
return (HTMLElement) cell;
}
public void deleteCell(int index)
{
Node ref = getCell(index);
if (ref == null)
{
throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
}
removeChild(ref);
}
Node getCell(final int index)
{
int i = 0;
for (Node ctx = getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
String name = ctx.getLocalName();
if (!"td".equalsIgnoreCase(name) &&
!"th".equalsIgnoreCase(name))
{
continue;
}
if (index == i)
{
return ctx;
}
i++;
}
return null;
}
}
@@ -0,0 +1,158 @@
/* DomHTMLTableSectionElement.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 org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.html2.HTMLCollection;
import org.w3c.dom.html2.HTMLElement;
import org.w3c.dom.html2.HTMLTableSectionElement;
/**
* An HTML 'THEAD', 'TFOOT', or 'TBODY' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTableSectionElement
extends DomHTMLElement
implements HTMLTableSectionElement
{
protected DomHTMLTableSectionElement(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 getCh()
{
return getHTMLAttribute("char");
}
public void setCh(String ch)
{
setHTMLAttribute("char", ch);
}
public String getChOff()
{
return getHTMLAttribute("charoff");
}
public void setChOff(String chOff)
{
setHTMLAttribute("charoff", chOff);
}
public String getVAlign()
{
return getHTMLAttribute("valign");
}
public void setVAlign(String vAlign)
{
setHTMLAttribute("valign", vAlign);
}
public HTMLCollection getRows()
{
DomHTMLCollection ret =
new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
ret.addNodeName("tr");
ret.evaluate();
return ret;
}
public HTMLElement insertRow(int index)
{
Node ref = getRow(index);
Node row = getOwnerDocument().createElement("tr");
if (ref == null)
{
appendChild(row);
}
else
{
insertBefore(row, ref);
}
return (HTMLElement) row;
}
public void deleteRow(int index)
{
Node ref = getRow(index);
if (ref == null)
{
throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
}
removeChild(ref);
}
Node getRow(final int index)
{
int i = 0;
for (Node ctx = getFirstChild(); ctx != null;
ctx = ctx.getNextSibling())
{
if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
{
continue;
}
if (index == i)
{
return ctx;
}
i++;
}
return null;
}
}
@@ -0,0 +1,182 @@
/* DomHTMLTextAreaElement.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.HTMLFormElement;
import org.w3c.dom.html2.HTMLTextAreaElement;
/**
* An HTML 'TEXTAREA' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTextAreaElement
extends DomHTMLElement
implements HTMLTextAreaElement
{
protected String value;
protected DomHTMLTextAreaElement(DomHTMLDocument owner,
String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getDefaultValue()
{
return getHTMLAttribute("value");
}
public void setDefaultValue(String defaultValue)
{
setHTMLAttribute("value", defaultValue);
}
public HTMLFormElement getForm()
{
return (HTMLFormElement) getParentElement("form");
}
public String getAccessKey()
{
return getHTMLAttribute("accesskey");
}
public void setAccessKey(String accessKey)
{
setHTMLAttribute("accesskey", accessKey);
}
public int getCols()
{
return getIntHTMLAttribute("cols");
}
public void setCols(int cols)
{
setIntHTMLAttribute("cols", cols);
}
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 boolean getReadOnly()
{
return getBooleanHTMLAttribute("readOnly");
}
public void setReadOnly(boolean readOnly)
{
setBooleanHTMLAttribute("readonly", readOnly);
}
public int getRows()
{
return getIntHTMLAttribute("rows");
}
public void setRows(int rows)
{
setIntHTMLAttribute("rows", rows);
}
public int getTabIndex()
{
return getIntHTMLAttribute("tabindex");
}
public void setTabIndex(int tabIndex)
{
setIntHTMLAttribute("tabindex", tabIndex);
}
public String getType()
{
return "textarea";
}
public String getValue()
{
if (value == null)
{
value = getDefaultValue();
}
return value;
}
public void setValue(String value)
{
this.value = value;
}
public void blur()
{
dispatchUIEvent("blur");
}
public void focus()
{
dispatchUIEvent("focus");
}
public void select()
{
dispatchUIEvent("select");
}
}
@@ -0,0 +1,69 @@
/* DomHTMLTitleElement.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.HTMLTitleElement;
/**
* An HTML 'TITLE' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLTitleElement
extends DomHTMLElement
implements HTMLTitleElement
{
protected DomHTMLTitleElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public String getText()
{
return getTextContent();
}
public void setText(String text)
{
setTextContent(text);
}
}
@@ -0,0 +1,79 @@
/* DomHTMLUListElement.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.HTMLUListElement;
/**
* An HTML 'UL' element node.
*
* @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
*/
public class DomHTMLUListElement
extends DomHTMLElement
implements HTMLUListElement
{
protected DomHTMLUListElement(DomHTMLDocument owner, String namespaceURI,
String name)
{
super(owner, namespaceURI, name);
}
public boolean getCompact()
{
return getBooleanHTMLAttribute("compact");
}
public void setCompact(boolean compact)
{
setBooleanHTMLAttribute("compact", compact);
}
public String getType()
{
return getHTMLAttribute("type");
}
public void setType(String type)
{
setHTMLAttribute("type", type);
}
}