Class AbstractSVGList

java.lang.Object
org.apache.batik.dom.svg.AbstractSVGList
Direct Known Subclasses:
AbstractSVGLengthList, AbstractSVGNumberList, AbstractSVGPathSegList, AbstractSVGPointList, AbstractSVGTransformList

public abstract class AbstractSVGList extends Object
This class is a base implementation for a live list representation of SVG attributes.

This class provides support for an SVG list representation of an attribute. It implements basic list functionality that is common to all of the SVG*List interfaces.

For a specific attribute, it requires an attribute value, a parser, and a method to create items.

Whenever the attribute changes outside of the control of the list, this list must be invalidated.

  • Field Details

    • valid

      protected boolean valid
      Whether this list is valid.
    • itemList

      protected List itemList
      The list of items.
  • Constructor Details

    • AbstractSVGList

      public AbstractSVGList()
  • Method Details

    • getItemSeparator

      protected abstract String getItemSeparator()
      Returns the separator string to use when constructing a string representation of the entire list.
    • createSVGItem

      protected abstract SVGItem createSVGItem(Object newItem)
      Creates an SVGItem object that has the same values as those in the specified SVG object.
      Parameters:
      newItem - the SVG object
      Returns:
      the newly created SVGItem object
    • doParse

      protected abstract void doParse(String value, ListHandler builder) throws ParseException
      Parses the given attribute value and informs the specified ListHandler of the parsed list items.
      Parameters:
      value - the attribute value to be parsed
      builder - the object to be informed of the parsed list items
      Throws:
      ParseException
    • checkItemType

      protected abstract void checkItemType(Object newItem) throws org.w3c.dom.svg.SVGException
      Asserts that the given object is an appropriate SVG object for this list.
      Throws:
      org.w3c.dom.svg.SVGException
    • getValueAsString

      protected abstract String getValueAsString()
      Returns the value of the DOM attribute containing the list.
    • setAttributeValue

      protected abstract void setAttributeValue(String value)
      Sets the DOM attribute value containing the number list.
      Parameters:
      value - the String representation of the list, or null if the list contains no items
    • createDOMException

      protected abstract DOMException createDOMException(short type, String key, Object[] args)
      Create a DOM Exception.
    • getNumberOfItems

      public int getNumberOfItems()
      Returns the number of items in the list.
    • clear

      public void clear() throws DOMException
      Removes all items from the list.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
    • initializeImpl

      protected SVGItem initializeImpl(Object newItem) throws DOMException, org.w3c.dom.svg.SVGException
      Removes all items from the list and adds the specified item to the list.
      Parameters:
      newItem - the item which should become the only member of the list.
      Returns:
      the item being inserted into the list.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
      org.w3c.dom.svg.SVGException - SVG_WRONG_TYPE_ERR: Raised if parameter newItem is the wrong type of object for the given list.
    • getItemImpl

      protected SVGItem getItemImpl(int index) throws DOMException
      Returns the item from the list at the specified index.
      Parameters:
      index - The index of the item from the list which is to be returned. The first item is number 0.
      Returns:
      The selected item.
      Throws:
      DOMException - INDEX_SIZE_ERR: Raised if the index number is negative or greater than or equal to numberOfItems.
    • insertItemBeforeImpl

      protected SVGItem insertItemBeforeImpl(Object newItem, int index) throws DOMException, org.w3c.dom.svg.SVGException
      Inserts a new item into the list at the specified position.

      The first item is number 0. If newItem is already in a list, it is removed from its previous list before it is inserted into this list.

      Parameters:
      newItem - The item which is to be inserted into the list.
      index - The index of the item before which the new item is to be inserted. The first item is number 0. If the index is equal to 0, then the new item is inserted at the front of the list. If the index is greater than or equal to numberOfItems, then the new item is appended to the end of the list.
      Returns:
      The inserted item.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
      org.w3c.dom.svg.SVGException - SVG_WRONG_TYPE_ERR: Raised if parameter newItem is the wrong type of object for the given list.
    • replaceItemImpl

      protected SVGItem replaceItemImpl(Object newItem, int index) throws DOMException, org.w3c.dom.svg.SVGException
      Replaces an existing item in the list with a new item.

      If newItem is already in a list, it is removed from its previous list before it is inserted into this list.

      Parameters:
      newItem - The item which is to be inserted into the list.
      index - The index of the item which is to be replaced. The first item is number 0.
      Returns:
      The inserted item.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
      DOMException - INDEX_SIZE_ERR: Raised if the index number is negative or greater than or equal to numberOfItems.
      org.w3c.dom.svg.SVGException - SVG_WRONG_TYPE_ERR: Raised if parameter newItem is the wrong type of object for the given list.
    • removeItemImpl

      protected SVGItem removeItemImpl(int index) throws DOMException
      Removes an existing item from the list.
      Parameters:
      index - The index of the item which is to be removed. The first item is number 0.
      Returns:
      The removed item.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
      DOMException - INDEX_SIZE_ERR: Raised if the index number is negative or greater than or equal to numberOfItems.
    • appendItemImpl

      protected SVGItem appendItemImpl(Object newItem) throws DOMException, org.w3c.dom.svg.SVGException
      Inserts a new item at the end of the list. If newItem is already in a list, it is removed from its previous list before it is inserted into this list.
      Parameters:
      newItem - The item which is to be inserted into the list. The first item is number 0.
      Returns:
      The inserted item.
      Throws:
      DOMException - NO_MODIFICATION_ALLOWED_ERR: Raised when the list cannot be modified.
      org.w3c.dom.svg.SVGException - SVG_WRONG_TYPE_ERR: Raised if parameter newItem is the wrong type of object for the given list.
    • removeIfNeeded

      protected SVGItem removeIfNeeded(Object newItem)
      Removes the specified object from its parent list if it is an item, or creates a new item if the specified object is not an item.
      Parameters:
      newItem - an instance of SVGItem to remove from its parent list, or an SVG object for which a new SVGItem should be created
      Returns:
      item the SVGItem just removed from its parent list, or the newly created SVGItem
    • revalidate

      protected void revalidate()
      Initializes the list, if needed.
    • setValueAsString

      protected void setValueAsString(List value) throws DOMException
      Sets the DOM attribute value to be the string representation of the given list.
      Throws:
      DOMException
    • itemChanged

      public void itemChanged()
      Method to be called by a member SVGItem object when its value changes. This causes the DOM attribute to be reset.
    • resetAttribute

      protected void resetAttribute()
      Resets the value of the associated attribute.
    • resetAttribute

      protected void resetAttribute(SVGItem item)
      Appends the string representation of the given SVGItem to the DOM attribute. This is called in response to an append to the list.
    • invalidate

      public void invalidate()
      Invalidates this list.
    • removeItem

      protected void removeItem(SVGItem item)
      Removes an item from the list. This operation takes place when an item was already in one list and is being added to another one.
    • clear

      protected void clear(List list)
      Clears the list and sets the parent of the former list items to null.