All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.opensagres.xdocreport.itext.extension.ExtendedParagraph Maven / Gradle / Ivy

Go to download

The Apache Commons Codec package contains simple encoder and decoders for various formats such as Base64 and Hexadecimal. In addition to these widely used encoders and decoders, the codec package also maintains a collection of phonetic encoding utilities.

There is a newer version: 62
Show newest version
/**
 * Copyright (C) 2011-2015 The XDocReport Team 
 *
 * All rights reserved.
 *
 * Permission is hereby granted, free  of charge, to any person obtaining
 * a  copy  of this  software  and  associated  documentation files  (the
 * "Software"), to  deal in  the Software without  restriction, including
 * without limitation  the rights to  use, copy, modify,  merge, publish,
 * distribute,  sublicense, and/or sell  copies of  the Software,  and to
 * permit persons to whom the Software  is furnished to do so, subject to
 * the following conditions:
 *
 * The  above  copyright  notice  and  this permission  notice  shall  be
 * included in all copies or substantial portions of the Software.
 *
 * THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
 * EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
 * MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
package fr.opensagres.xdocreport.itext.extension;

import java.awt.Color;

import com.lowagie.text.Element;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;

public class ExtendedParagraph
    extends Paragraph
    implements IITextContainer
{
    private static final long serialVersionUID = 664309269352903329L;

    public static final Color TRANSPARENT_COLOR = Color.WHITE;

    private IITextContainer container;

    protected PdfPCell wrapperCell;

    protected PdfPTable wrapperTable;

    public ExtendedParagraph()
    {
    }

    public ExtendedParagraph( Paragraph paragraph )
    {
        super( paragraph );
    }

    public void addElement( Element element )
    {
        // in function add(Element element) chunks are cloned
        // it is not correct for chunks with dynamic content (ie page number)
        // use function add(int index, Element element) because in this function chunks are added without cloning
        super.add( size(), element );
    }

    public IITextContainer getITextContainer()
    {
        return container;
    }

    public void setITextContainer( IITextContainer container )
    {
        this.container = container;
    }

    private PdfPCell createCell()
    {
        PdfPCell cell = new PdfPCell();
        cell.setBorder( Table.NO_BORDER );
        cell.setPadding( 0.0f );
        cell.setUseBorderPadding( true );
        cell.getColumn().setAdjustFirstLine( false );
        return cell;
    }

    private PdfPTable createTable( PdfPCell cell )
    {
        PdfPTable table = new PdfPTable( 1 );
        table.setWidthPercentage( 100.0f );
        table.setSplitLate( false );
        table.addCell( cell );
        return table;
    }

    protected PdfPCell getWrapperCell()
    {
        if ( wrapperCell == null )
        {
            wrapperCell = createCell();
        }
        return wrapperCell;
    }

    protected PdfPTable createWrapperTable( PdfPCell wrapperCell, boolean addParagraph )
    {
        PdfPTable wrapperTable = null;
        // wrap this paragraph into a table if necessary
        if ( wrapperCell != null )
        {
            // background color or borders were set
            if ( addParagraph )
            {
                wrapperCell.addElement( this );
            }
            wrapperTable = createTable( wrapperCell );
            if ( getSpacingBefore() > 0.0f || getSpacingAfter() > 0.0f )
            {
                // top or bottom margin was set, promote it to enclosing table
                wrapperTable.setSpacingBefore( getSpacingBefore() );
                setSpacingBefore( 0.0f );
                wrapperTable.setSpacingAfter( getSpacingAfter() );
                setSpacingAfter( 0.0f );
            }
            if ( getIndentationLeft() > 0.0f || getIndentationRight() > 0.0f )
            {
                // left or right margin was set, have to wrap the cell again
                PdfPCell outerCell = createCell();
                outerCell.setPaddingLeft( getIndentationLeft() );
                setIndentationLeft( 0.0f );
                outerCell.setPaddingRight( getIndentationRight() );
                setIndentationRight( 0.0f );
                outerCell.addElement( wrapperTable );
                wrapperTable = createTable( outerCell );
            }
        }
        return wrapperTable;
    }

    public Element getElement()
    {
        if ( wrapperCell != null )
        {
            if ( wrapperTable == null )
            {
                wrapperTable = createWrapperTable( wrapperCell, true );
            }
        }
        return wrapperTable != null ? wrapperTable : this;
    }

    public boolean hasBorders()
    {
        return wrapperCell != null && wrapperCell.hasBorders();
    }

    public boolean hasBackgroundColor()
    {
        return wrapperCell != null && wrapperCell.getBackgroundColor() != null
            && !TRANSPARENT_COLOR.equals( wrapperCell.getBackgroundColor() );
    }

    public void setSpacingBefore( Paragraph paragraph )
    {
        setSpacingBefore( paragraph.getSpacingBefore() );
    }

    public void setSpacingAfter( Paragraph paragraph )
    {
        setSpacingAfter( paragraph.getSpacingAfter() );
    }

    public void setIndentation( Paragraph paragraph )
    {
        setIndentationLeft( paragraph.getIndentationLeft() );
        setIndentationRight( paragraph.getIndentationRight() );
    }

    public void setBackgroundColor( Color backgroundColor )
    {
        getWrapperCell().setBackgroundColor( backgroundColor );
    }

    /**
     * Sets the width of the Top border.
     *
     * @param borderWidthTop a width
     */
    public void setBorderWidthTop( float borderWidthTop )
    {
        getWrapperCell().setBorderWidthTop( borderWidthTop );
    }

    /**
     * Sets the color of the top border.
     *
     * @param borderColorTop a Color
     */
    public void setBorderColorTop( Color borderColorTop )
    {
        getWrapperCell().setBorderColorTop( borderColorTop );
    }

    /**
     * Sets the width of the bottom border.
     *
     * @param borderWidthBottom a width
     */
    public void setBorderWidthBottom( float borderWidthBottom )
    {
        getWrapperCell().setBorderWidthBottom( borderWidthBottom );
    }

    /**
     * Sets the color of the Bottom border.
     *
     * @param borderColorBottom a Color
     */
    public void setBorderColorBottom( Color borderColorBottom )
    {
        getWrapperCell().setBorderColorBottom( borderColorBottom );
    }

    /**
     * Sets the width of the Left border.
     *
     * @param borderWidthLeft a width
     */
    public void setBorderWidthLeft( float borderWidthLeft )
    {
        getWrapperCell().setBorderWidthLeft( borderWidthLeft );
    }

    /**
     * Sets the color of the Left border.
     *
     * @param borderColorLeft a Color
     */
    public void setBorderColorLeft( Color borderColorLeft )
    {
        getWrapperCell().setBorderColorLeft( borderColorLeft );
    }

    /**
     * Sets the width of the Right border.
     *
     * @param borderWidthRight a width
     */
    public void setBorderWidthRight( float borderWidthRight )
    {
        getWrapperCell().setBorderWidthRight( borderWidthRight );
    }

    /**
     * Sets the color of the Right border.
     *
     * @param borderColorRight a Color
     */
    public void setBorderColorRight( Color borderColorRight )
    {
        getWrapperCell().setBorderColorRight( borderColorRight );
    }

    /**
     * Sets the padding of the contents in the cell (space between content and border).
     *
     * @param padding
     */
    public void setBorderPadding( float padding )
    {
        getWrapperCell().setPadding( padding );
    }

    /**
     * Setter for property paddingLeft.
     *
     * @param paddingLeft New value of property paddingLeft.
     */
    public void setBorderPaddingLeft( float paddingLeft )
    {
        getWrapperCell().setPaddingLeft( paddingLeft );
    }

    /**
     * Setter for property paddingRight.
     *
     * @param paddingRight New value of property paddingRight.
     */
    public void setBorderPaddingRight( float paddingRight )
    {
        getWrapperCell().setPaddingRight( paddingRight );
    }

    /**
     * Setter for property paddingBottom.
     *
     * @param paddingBottom New value of property paddingBottom.
     */
    public void setBorderPaddingBottom( float paddingBottom )
    {
        getWrapperCell().setPaddingBottom( paddingBottom );
    }

    /**
     * Setter for property paddingTop.
     *
     * @param paddingTop New value of property paddingTop.
     */
    public void setBorderPaddingTop( float paddingTop )
    {
        getWrapperCell().setPaddingTop( paddingTop );
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy