# Class AbstractDocument.AbstractElement

java.lang.Object
javax.swing.text.AbstractDocument.AbstractElement

All Implemented Interfaces:
  `Serializable, AttributeSet, Element, MutableAttributeSet, TreeNode`

Direct Known Subclasses:
  `AbstractDocument.BranchElement, AbstractDocument.LeafElement`

Enclosing class:
  `AbstractDocument`

public abstract class AbstractDocument.AbstractElement extends Object implements Element, MutableAttributeSet, Serializable, TreeNode
Implements the abstract part of an element. By default elements support attributes by having a field that represents the immutable part of the current attribute set for the element. The element itself implements MutableAttributeSet which can be used to modify the set by fetching a new immutable set. The immutable sets are provided by the AttributeContext associated with the document.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans has been added to the `java.beans` package. Please see `XMLEncoder`.

- ## Nested Class Summary

  ### Nested classes/interfaces declared in interface AttributeSet

  `AttributeSet.CharacterAttribute, AttributeSet.ColorAttribute, AttributeSet.FontAttribute, AttributeSet.ParagraphAttribute`

- ## Field Summary

  ### Fields declared in interface AttributeSet

  `NameAttribute, ResolveAttribute`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractElement(Element parent, AttributeSet a)`
  Creates a new AbstractElement.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addAttribute(Object name, Object value)`
  Adds an attribute to the element.
  `void`
  `addAttributes(AttributeSet attr)`
  Adds a set of attributes to the element.
  `abstract Enumeration<TreeNode>`
  `children()`
  Returns the children of the receiver as an `Enumeration`.
  `boolean`
  `containsAttribute(Object name, Object value)`
  Checks whether a given attribute name/value is defined.
  `boolean`
  `containsAttributes(AttributeSet attrs)`
  Checks whether the element contains all the attributes.
  `AttributeSet`
  `copyAttributes()`
  Copies a set of attributes.
  `void`
  `dump(PrintStream psOut, int indentAmount)`
  Dumps a debugging representation of the element hierarchy.
  `abstract boolean`
  `getAllowsChildren()`
  Returns true if the receiver allows children.
  `Object`
  `getAttribute(Object attrName)`
  Gets the value of an attribute.
  `int`
  `getAttributeCount()`
  Gets the number of attributes that are defined.
  `Enumeration<?>`
  `getAttributeNames()`
  Gets the names of all attributes.
  `AttributeSet`
  `getAttributes()`
  Gets the attributes for the element.
  `TreeNode`
  `getChildAt(int childIndex)`
  Returns the child `TreeNode` at index `childIndex`.
  `int`
  `getChildCount()`
  Returns the number of children `TreeNode`'s receiver contains.
  `Document`
  `getDocument()`
  Retrieves the underlying model.
  `abstract Element`
  `getElement(int index)`
  Gets a child element.
  `abstract int`
  `getElementCount()`
  Gets the number of children for the element.
  `abstract int`
  `getElementIndex(int offset)`
  Gets the child element index closest to the given model offset.
  `abstract int`
  `getEndOffset()`
  Gets the ending offset in the model for the element.
  `int`
  `getIndex(TreeNode node)`
  Returns the index of `node` in the receivers children.
  `String`
  `getName()`
  Gets the name of the element.
  `TreeNode`
  `getParent()`
  Returns the parent `TreeNode` of the receiver.
  `Element`
  `getParentElement()`
  Gets the parent of the element.
  `AttributeSet`
  `getResolveParent()`
  Gets the resolving parent.
  `abstract int`
  `getStartOffset()`
  Gets the starting offset in the model for the element.
  `boolean`
  `isDefined(Object attrName)`
  Checks whether a given attribute is defined.
  `boolean`
  `isEqual(AttributeSet attr)`
  Checks whether two attribute sets are equal.
  `abstract boolean`
  `isLeaf()`
  Checks whether the element is a leaf.
  `void`
  `removeAttribute(Object name)`
  Removes an attribute from the set.
  `void`
  `removeAttributes(Enumeration<?> names)`
  Removes a set of attributes for the element.
  `void`
  `removeAttributes(AttributeSet attrs)`
  Removes a set of attributes for the element.
  `void`
  `setResolveParent(AttributeSet parent)`
  Sets the resolving parent.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### AbstractElement

    public AbstractElement(Element parent, AttributeSet a)
    Creates a new AbstractElement.
    Parameters:
      `parent` - the parent element
      `a` - the attributes for the element
    Since:
      1.4

- ## Method Details

  - ### dump

    public void dump(PrintStream psOut, int indentAmount)
    Dumps a debugging representation of the element hierarchy.
    Parameters:
      `psOut` - the output stream
      `indentAmount` - the indentation level >= 0

  - ### getAttributeCount

    public int getAttributeCount()
    Gets the number of attributes that are defined.
    Specified by:
      `getAttributeCount` in interface `AttributeSet`
    Returns:
      the number of attributes >= 0
    See Also:
      - `AttributeSet.getAttributeCount()`

  - ### isDefined

    public boolean isDefined(Object attrName)
    Checks whether a given attribute is defined.
    Specified by:
      `isDefined` in interface `AttributeSet`
    Parameters:
      `attrName` - the non-null attribute name
    Returns:
      true if the attribute is defined
    See Also:
      - `AttributeSet.isDefined(Object)`

  - ### isEqual

    public boolean isEqual(AttributeSet attr)
    Checks whether two attribute sets are equal.
    Specified by:
      `isEqual` in interface `AttributeSet`
    Parameters:
      `attr` - the attribute set to check against
    Returns:
      true if the same
    See Also:
      - `AttributeSet.isEqual(AttributeSet)`

  - ### copyAttributes

    public AttributeSet copyAttributes()
    Copies a set of attributes.
    Specified by:
      `copyAttributes` in interface `AttributeSet`
    Returns:
      the copy
    See Also:
      - `AttributeSet.copyAttributes()`

  - ### getAttribute

    public Object getAttribute(Object attrName)
    Gets the value of an attribute.
    Specified by:
      `getAttribute` in interface `AttributeSet`
    Parameters:
      `attrName` - the non-null attribute name
    Returns:
      the attribute value
    See Also:
      - `AttributeSet.getAttribute(Object)`

  - ### getAttributeNames

    public Enumeration<?> getAttributeNames()
    Gets the names of all attributes.
    Specified by:
      `getAttributeNames` in interface `AttributeSet`
    Returns:
      the attribute names as an enumeration
    See Also:
      - `AttributeSet.getAttributeNames()`

  - ### containsAttribute

    public boolean containsAttribute(Object name, Object value)
    Checks whether a given attribute name/value is defined.
    Specified by:
      `containsAttribute` in interface `AttributeSet`
    Parameters:
      `name` - the non-null attribute name
      `value` - the attribute value
    Returns:
      true if the name/value is defined
    See Also:
      - `AttributeSet.containsAttribute(Object, Object)`

  - ### containsAttributes

    public boolean containsAttributes(AttributeSet attrs)
    Checks whether the element contains all the attributes.
    Specified by:
      `containsAttributes` in interface `AttributeSet`
    Parameters:
      `attrs` - the attributes to check
    Returns:
      true if the element contains all the attributes
    See Also:
      - `AttributeSet.containsAttributes(AttributeSet)`

  - ### getResolveParent

    public AttributeSet getResolveParent()
    Gets the resolving parent. If not overridden, the resolving parent defaults to the parent element.
    Specified by:
      `getResolveParent` in interface `AttributeSet`
    Returns:
      the attributes from the parent, `null` if none
    See Also:
      - `AttributeSet.getResolveParent()`

  - ### addAttribute

    public void addAttribute(Object name, Object value)
    Adds an attribute to the element.
    Specified by:
      `addAttribute` in interface `MutableAttributeSet`
    Parameters:
      `name` - the non-null attribute name
      `value` - the attribute value
    See Also:
      - `MutableAttributeSet.addAttribute(Object, Object)`

  - ### addAttributes

    public void addAttributes(AttributeSet attr)
    Adds a set of attributes to the element.
    Specified by:
      `addAttributes` in interface `MutableAttributeSet`
    Parameters:
      `attr` - the attributes to add
    See Also:
      - `MutableAttributeSet.addAttribute(Object, Object)`

  - ### removeAttribute

    public void removeAttribute(Object name)
    Removes an attribute from the set.
    Specified by:
      `removeAttribute` in interface `MutableAttributeSet`
    Parameters:
      `name` - the non-null attribute name
    See Also:
      - `MutableAttributeSet.removeAttribute(Object)`

  - ### removeAttributes

    public void removeAttributes(Enumeration<?> names)
    Removes a set of attributes for the element.
    Specified by:
      `removeAttributes` in interface `MutableAttributeSet`
    Parameters:
      `names` - the attribute names
    See Also:
      - `MutableAttributeSet.removeAttributes(Enumeration)`

  - ### removeAttributes

    public void removeAttributes(AttributeSet attrs)
    Removes a set of attributes for the element.
    Specified by:
      `removeAttributes` in interface `MutableAttributeSet`
    Parameters:
      `attrs` - the attributes
    See Also:
      - `MutableAttributeSet.removeAttributes(Enumeration)`

  - ### setResolveParent

    public void setResolveParent(AttributeSet parent)
    Sets the resolving parent.
    Specified by:
      `setResolveParent` in interface `MutableAttributeSet`
    Parameters:
      `parent` - the parent, null if none
    See Also:
      - `MutableAttributeSet.setResolveParent(AttributeSet)`

  - ### getDocument

    public Document getDocument()
    Retrieves the underlying model.
    Specified by:
      `getDocument` in interface `Element`
    Returns:
      the model

  - ### getParentElement

    public Element getParentElement()
    Gets the parent of the element.
    Specified by:
      `getParentElement` in interface `Element`
    Returns:
      the parent

  - ### getAttributes

    public AttributeSet getAttributes()
    Gets the attributes for the element.
    Specified by:
      `getAttributes` in interface `Element`
    Returns:
      the attribute set

  - ### getName

    public String getName()
    Gets the name of the element.
    Specified by:
      `getName` in interface `Element`
    Returns:
      the name, null if none

  - ### getStartOffset

    public abstract int getStartOffset()
    Gets the starting offset in the model for the element.
    Specified by:
      `getStartOffset` in interface `Element`
    Returns:
      the offset >= 0
    See Also:
      - `Document`
      - `AbstractDocument`

  - ### getEndOffset

    public abstract int getEndOffset()
    Gets the ending offset in the model for the element.
    Specified by:
      `getEndOffset` in interface `Element`
    Returns:
      the offset >= 0
    See Also:
      - `Document`
      - `AbstractDocument`

  - ### getElement

    public abstract Element getElement(int index)
    Gets a child element.
    Specified by:
      `getElement` in interface `Element`
    Parameters:
      `index` - the child index, >= 0 && < getElementCount()
    Returns:
      the child element

  - ### getElementCount

    public abstract int getElementCount()
    Gets the number of children for the element.
    Specified by:
      `getElementCount` in interface `Element`
    Returns:
      the number of children >= 0

  - ### getElementIndex

    public abstract int getElementIndex(int offset)
    Gets the child element index closest to the given model offset.
    Specified by:
      `getElementIndex` in interface `Element`
    Parameters:
      `offset` - the offset >= 0
    Returns:
      the element index >= 0

  - ### isLeaf

    public abstract boolean isLeaf()
    Checks whether the element is a leaf.
    Specified by:
      `isLeaf` in interface `Element`
    Specified by:
      `isLeaf` in interface `TreeNode`
    Returns:
      true if a leaf

  - ### getChildAt

    public TreeNode getChildAt(int childIndex)
    Returns the child `TreeNode` at index `childIndex`.
    Specified by:
      `getChildAt` in interface `TreeNode`
    Parameters:
      `childIndex` - index of child
    Returns:
      the child node at given index

  - ### getChildCount

    public int getChildCount()
    Returns the number of children `TreeNode`'s receiver contains.
    Specified by:
      `getChildCount` in interface `TreeNode`
    Returns:
      the number of children `TreeNode`'s receiver contains

  - ### getParent

    public TreeNode getParent()
    Returns the parent `TreeNode` of the receiver.
    Specified by:
      `getParent` in interface `TreeNode`
    Returns:
      the parent `TreeNode` of the receiver

  - ### getIndex

    public int getIndex(TreeNode node)
    Returns the index of `node` in the receivers children. If the receiver does not contain `node`, -1 will be returned.
    Specified by:
      `getIndex` in interface `TreeNode`
    Parameters:
      `node` - the location of interest
    Returns:
      the index of `node` in the receiver's children, or -1 if absent

  - ### getAllowsChildren

    public abstract boolean getAllowsChildren()
    Returns true if the receiver allows children.
    Specified by:
      `getAllowsChildren` in interface `TreeNode`
    Returns:
      true if the receiver allows children, otherwise false

  - ### children

    public abstract Enumeration<TreeNode> children()
    Returns the children of the receiver as an `Enumeration`.
    Specified by:
      `children` in interface `TreeNode`
    Returns:
      the children of the receiver as an `Enumeration`