001package Torello.HTML;
002
003// These are only needed for the Java Doc {@link ...} taglets.
004import Torello.HTML.NodeSearch.InnerTagPeekInclusive;
005import Torello.HTML.NodeSearch.TagNodePeekInclusive;
006
007/**
008 * In order for a <CODE>Vector&lt;{@link SubSection}&gt;</CODE> to properly work, its contents
009 * need to be sorted, and they may not overlap - so this exception is thrown if a
010 * {@code SubSection-Vector} does not obey these specifications.
011 * 
012 * <BR /><BR /><B STYLE='color:red;'>NOTE:</B> The class {@link InnerTagPeekInclusive} and
013 * {@link TagNodePeekInclusive} will generate properly ordered / sorted {@code Vector's}, which
014 * means that if a {@code Vector} was created using those two classes, it is likely to adhere to
015 * at least the first of those two requirements.
016 * 
017 * <BR /><BR />Generally, such {@code Vector's} are useful when replacing the rows in a table,
018 * or the items in an ordered or unodered list, and naturally, these items will not be overlapping
019 * unless the user has submitted invalid HTML in the first place.
020 * 
021 * <BR /><BR />The class {@link ReplaceNodes} offers a tremendous efficiency-improvement over using
022 * the HTML Iterators when updated a long list of HTML sections like rows, columns, list items, or
023 * any type of element, for that matter.  The {@code Iterator 'set'} method invariable involve 
024 * shifting the entire list of nodes in an HTML-{@code Vector} each and every time that an
025 * {@code 'insert'} or {@code 'set'} method is invoked.  While using a variant of the {@code Peek}
026 * search classes to obtain a list of {@link SubSection}, modifying those sections individually,
027 * and then rebuilding this can save quite a bit of time wasted on shifting lists.
028 */
029public class SubSectionVectorException extends RuntimeException
030{
031    /** <EMBED CLASS="external-html" DATA-FILE-ID="SVUIDEX"> */
032    public static final long serialVersionUID = 1;
033
034    /** Constructs a {@code SubSectionVectorException} with no detail message. */
035    public SubSectionVectorException()
036    { super(); }
037
038    /**
039     * Constructs a {@code SubSectionVectorException} with the specified detail message.
040     * @param message the detail message.
041     */
042    public SubSectionVectorException(String message)
043    { super(message); }
044}