Class AbstractBlock

java.lang.Object
org.xwiki.rendering.block.AbstractBlock
All Implemented Interfaces:
Cloneable, Block
Direct Known Subclasses:
AbstractMacroBlock, BulletedListBlock, CompositeBlock, DefinitionDescriptionBlock, DefinitionListBlock, DefinitionTermBlock, EmptyLinesBlock, FigureBlock, FigureCaptionBlock, FormatBlock, GroupBlock, HeaderBlock, HorizontalLineBlock, IdBlock, ImageBlock, LinkBlock, ListItemBlock, MetaDataBlock, NewLineBlock, NumberedListBlock, ParagraphBlock, QuotationBlock, QuotationLineBlock, RawBlock, SectionBlock, SpaceBlock, SpecialSymbolBlock, TableBlock, TableCellBlock, TableRowBlock, VerbatimBlock, WordBlock

public abstract class AbstractBlock extends Object implements Block
Implementation for Block operations. All blocks should extend this class. Supports the notion of generic parameters which can be added to a block (see getParameter(String) for more details.
Since:
1.5M2
Version:
$Id: d54488d4ae6954cb387b7104d3364ad3395f570f $
  • Constructor Details

    • AbstractBlock

      public AbstractBlock()
      Empty constructor to construct an empty block.
    • AbstractBlock

      public AbstractBlock(Map<String,String> parameters)
      Construct a block with parameters.
      Parameters:
      parameters - the parameters to set
    • AbstractBlock

      public AbstractBlock(Block childBlock)
      Constructs a block with a child block.
      Parameters:
      childBlock - the child block of this block
      Since:
      3.0M1
    • AbstractBlock

      public AbstractBlock(List<? extends Block> childrenBlocks)
      Constructs a block with children blocks.
      Parameters:
      childrenBlocks - the list of children blocks of the block to construct
      Since:
      3.0M1
    • AbstractBlock

      public AbstractBlock(Block childBlock, Map<String,String> parameters)
      Construct a block with a child block and parameters.
      Parameters:
      childBlock - the child block of this block
      parameters - the parameters to set
      Since:
      3.0M1
    • AbstractBlock

      public AbstractBlock(List<? extends Block> childrenBlocks, Map<String,String> parameters)
      Construct a block with children blocks and parameters.
      Parameters:
      childrenBlocks - the list of children blocks of the block to construct
      parameters - the parameters to set
      Since:
      3.0M1
  • Method Details

    • addChild

      public void addChild(Block blockToAdd)
      Description copied from interface: Block
      Helper method to add a single child block to the end of the children list of the current block. For adding several blocks at once use Block.addChildren(java.util.List).
      Specified by:
      addChild in interface Block
      Parameters:
      blockToAdd - the child block to add
    • addChildren

      public void addChildren(List<? extends Block> blocksToAdd)
      Description copied from interface: Block
      Adds several children blocks to the end of the children list of the current block. For example a bold sentence is made up of a Bold block to which the different words making up the text have been added to.
      Specified by:
      addChildren in interface Block
      Parameters:
      blocksToAdd - the children blocks to add
    • setChildren

      public void setChildren(List<? extends Block> children)
      Description copied from interface: Block
      Replace current children by the provided list of Blocks.
      Specified by:
      setChildren in interface Block
      Parameters:
      children - the new children
    • setNextSiblingBlock

      public void setNextSiblingBlock(Block nextSiblingBlock)
      Specified by:
      setNextSiblingBlock in interface Block
      Parameters:
      nextSiblingBlock - see Block.getNextSibling()
    • setPreviousSiblingBlock

      public void setPreviousSiblingBlock(Block previousSiblingBlock)
      Specified by:
      setPreviousSiblingBlock in interface Block
      Parameters:
      previousSiblingBlock - see Block.getPreviousSibling() ()}
    • insertChildBefore

      public void insertChildBefore(Block blockToInsert, Block nextBlock)
      Description copied from interface: Block
      Helper method to add a single child block to the current block before the provided existing child block. For adding several blocks at once use Block.addChildren(java.util.List).
      Specified by:
      insertChildBefore in interface Block
      Parameters:
      blockToInsert - the child block to add
      nextBlock - the child block that will be just after the added block
    • insertChildAfter

      public void insertChildAfter(Block blockToInsert, Block previousBlock)
      Description copied from interface: Block
      Helper method to add a single child block to the current block after the provided existing child block. For adding several blocks at once use Block.addChildren(java.util.List).
      Specified by:
      insertChildAfter in interface Block
      Parameters:
      blockToInsert - the child block to add
      previousBlock - the child block that will be just before the added block
    • replaceChild

      public void replaceChild(Block newBlock, Block oldBlock)
      Description copied from interface: Block
      Replaces an existing children block with the passed new block. Also sets the new block's parent to be the current block.
      Specified by:
      replaceChild in interface Block
      Parameters:
      newBlock - the new block to replace the old block with
      oldBlock - the block to replace with the new block
    • replaceChild

      public void replaceChild(List<Block> newBlocks, Block oldBlock)
      Description copied from interface: Block
      Replaces an existing children block with the passed new blocks. Also sets the new block's parents to be the current block.
      Specified by:
      replaceChild in interface Block
      Parameters:
      newBlocks - the new blocks to replace the old block with
      oldBlock - the block to replace with the new blocks
    • indexOf

      public long indexOf(Block child)
      Find the index of the block in the tree.
      Parameters:
      child - the block for which to find the index
      Returns:
      the index of the passed block in the tree, 0 is the current block and -1 means that it was not found
      Since:
      10.10RC1
    • getChildren

      public List<Block> getChildren()
      Description copied from interface: Block
      Gets all children blocks.
      Specified by:
      getChildren in interface Block
      Returns:
      the children blocks
      See Also:
    • getParent

      public Block getParent()
      Description copied from interface: Block
      Get the parent block. All blocks have a parent and the top level parent is the XDOM object.
      Specified by:
      getParent in interface Block
      Returns:
      the parent block
    • getParameters

      public Map<String,String> getParameters()
      Specified by:
      getParameters in interface Block
      Returns:
      all parameters
    • getParameter

      public String getParameter(String name)
      Description copied from interface: Block
      A Parameter is a generic key/value which can be used to add metadata to a block. What is done with the metadata depends on the Renderer's implementations. For example the XHTML Renderer adds them as Element attributes.
      Specified by:
      getParameter in interface Block
      Parameters:
      name - the name of the parameter to return
      Returns:
      the parameter or null if the parameter doesn't exist
    • setParameter

      public void setParameter(String name, String value)
      Description copied from interface: Block
      Set a parameter on the current block. See Block.getParameter(String) for more details.
      Specified by:
      setParameter in interface Block
      Parameters:
      name - the parameter's name
      value - the parameter's value
    • setParameters

      public void setParameters(Map<String,String> parameters)
      Description copied from interface: Block
      Set several parameters at once.
      Specified by:
      setParameters in interface Block
      Parameters:
      parameters - the parameters to set
      See Also:
    • getAttributes

      public Map<String,Object> getAttributes()
      Specified by:
      getAttributes in interface Block
      Returns:
      all attributes
    • getAttribute

      public Object getAttribute(String name)
      Description copied from interface: Block
      An attribute is a generic key/value pair which can be used to add internal data to a block.

      These attribute shouldn't be serialized by any renderer, they are meant to be used internally, e.g., in an XDOM transformation or a macro execution to store data related to the block. When a block is cloned, attribute values will be cloned using their clone()-implementation when the value is cloneable, if not, the value will be shared by original and clone.

      Specified by:
      getAttribute in interface Block
      Parameters:
      name - the name of the attribute to return
      Returns:
      the attribute or null if the attribute doesn't exist
    • setAttribute

      public void setAttribute(String name, Object value)
      Description copied from interface: Block
      Set an attribute on the current block. See Block.getAttribute(String) for more details.
      Specified by:
      setAttribute in interface Block
      Parameters:
      name - the attribute's name
      value - the attribute's value
    • setAttributes

      public void setAttributes(Map<String,Object> attributes)
      Description copied from interface: Block
      Set (replace) all attributes.
      Specified by:
      setAttributes in interface Block
      Parameters:
      attributes - the attributes to set
      See Also:
    • setParent

      public void setParent(Block parentBlock)
      Description copied from interface: Block
      Sets the parent block.
      Specified by:
      setParent in interface Block
      Parameters:
      parentBlock - the parent block
    • getRoot

      public Block getRoot()
      Description copied from interface: Block
      Gets the top level Block. If the current block is the top level Block, it return itself.
      Specified by:
      getRoot in interface Block
      Returns:
      the top level Block
    • getNextSibling

      public Block getNextSibling()
      Specified by:
      getNextSibling in interface Block
      Returns:
      the next sibling block or null if there's no next sibling
    • getPreviousSibling

      public Block getPreviousSibling()
      Specified by:
      getPreviousSibling in interface Block
      Returns:
      the previous sibling block or null if there's no previous sibling
    • removeBlock

      public void removeBlock(Block childBlockToRemove)
      Description copied from interface: Block
      Removes a Block.
      Specified by:
      removeBlock in interface Block
      Parameters:
      childBlockToRemove - the child block to remove
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • clone

      public Block clone()
      Specified by:
      clone in interface Block
      Overrides:
      clone in class Object
      Returns:
      the cloned Block
      See Also:
    • clone

      public Block clone(BlockFilter blockFilter)
      Return a copy of the block with filtered children.
      Specified by:
      clone in interface Block
      Parameters:
      blockFilter - the Block filter.
      Returns:
      the filtered Block.
      Since:
      1.8RC2
    • traverse

      public void traverse(Listener listener)
      Description copied from interface: Block
      Let the block send Listener events corresponding to its content. For example a Paragraph block will send the Listener.beginParagraph(java.util.Map<java.lang.String, java.lang.String>) and Listener.endParagraph(java.util.Map<java.lang.String, java.lang.String>) events when this method is called.
      Specified by:
      traverse in interface Block
      Parameters:
      listener - the listener to which to send the events to.
    • before

      public void before(Listener listener)
      Send Listener events corresponding to the start of the block. For example for a Bold block, this allows an XHTML Listener (aka a Renderer) to output <b>.
      Parameters:
      listener - the listener that will receive the events sent by this block before its children blocks have emitted their own events.
    • after

      public void after(Listener listener)
      Send Listener events corresponding to the end of the block. For example for a Bold block, this allows an XHTML Listener (aka a Renderer) to output </b>.
      Parameters:
      listener - the listener that will receive the events sent by this block before its children blocks have emitted their own events.
    • getBlocks

      public <T extends Block> List<T> getBlocks(BlockMatcher matcher, Block.Axes axes)
      Description copied from interface: Block
      Get all blocks following provided BlockMatcher and Block.Axes.
      Specified by:
      getBlocks in interface Block
      Type Parameters:
      T - the class of the Blocks to return
      Parameters:
      matcher - filter the blocks to return
      axes - indicate the search axes
      Returns:
      the matched Blocks, empty list of none was found
    • getFirstBlock

      public <T extends Block> T getFirstBlock(BlockMatcher matcher, Block.Axes axes)
      Description copied from interface: Block
      Get the first matched block in the provided Block.Axes.
      Specified by:
      getFirstBlock in interface Block
      Type Parameters:
      T - the class of the Block to return
      Parameters:
      matcher - indicate which block to stop to
      axes - indicate the search axes
      Returns:
      the matched Block, null if none was found
    • getSyntaxMetadata

      public Optional<Syntax> getSyntaxMetadata()
      Description copied from interface: Block
      Try to find the syntax of the block in its hierarchy (itself of its ancestors).
      Specified by:
      getSyntaxMetadata in interface Block
      Returns:
      the syntax of the block or null of none could be found
    • get

      public <T> Optional<T> get(Function<Block,Optional<T>> searcher, Block.Axes axes)
      Description copied from interface: Block
      Get the first value extracted from the blocks in the provided Block.Axes.
      Specified by:
      get in interface Block
      Type Parameters:
      T - the type of value searching in the block
      Parameters:
      searcher - the Function in charge of extracting the searched value from the block
      axes - indicate the search axes
      Returns:
      the value found in the provided block axes