Class LayoutEngine

java.lang.Object
org.compiere.print.layout.LayoutEngine
All Implemented Interfaces:
Pageable, Printable, Doc

public class LayoutEngine extends Object implements Pageable, Printable, Doc
Print Engine.
All coordinates are relative to the Page.
The Language setting is maintained in the format.
Version:
$Id: LayoutEngine.java,v 1.3 2006/07/30 00:53:02 jjanke Exp $
Author:
Jorg Janke, Teo Sarca, SC ARHIPAC SERVICE SRL
  • BF [ 1673505 ] BarCode/Image problem when print format is not form
  • BF [ 1673542 ] Can't add static image in report table cell
  • BF [ 1673548 ] Image is not scaled in a report table cell
  • BF [ 1807917 ] Layout positioning issue with m_maxHeightSinceNewLine
  • BF [ 1825876 ] Layout boxes with auto width not working
  • FR [ 1966406 ] Report Engine: AD_PInstance_Logs should be displayed
  • BF [ 2487307 ] LayoutEngine: NPE when Barcode field is null
  • BF [ 2828893 ] Problem with NextPage in Print Format https://sourceforge.net/p/adempiere/bugs/2001/, victor.perez@e-evolution.com, e-Evolution
  • BF [ 2011567 ] Implement Background Image for Document printed
  • https://sourceforge.net/p/adempiere/feature-requests/477/, Michael Judd (Akuna Ltd)
  • BF [ 2695078 ] Country is not translated on invoice
    • Field Details

      • AREA_HEADER

        public static final int AREA_HEADER
        Header Area
        See Also:
      • AREA_CONTENT

        public static final int AREA_CONTENT
        Content Area
        See Also:
      • s_FASTDRAW

        public static boolean s_FASTDRAW
        Draw using attributed String vs. Text Layout where possible
      • IMAGE_TRUE

        public static Image IMAGE_TRUE
        True Image
      • IMAGE_FALSE

        public static Image IMAGE_FALSE
        False Image
      • IMAGE_SIZE

        public static Dimension IMAGE_SIZE
        Image Size
      • colSuppressRepeats

        public Boolean[] colSuppressRepeats
        suppress repeat columns
    • Constructor Details

      • LayoutEngine

        public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info)
        Constructor
        Parameters:
        format -
        data -
        query -
        info -
      • LayoutEngine

        public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info, int windowNo)
        Detail Constructor
        Parameters:
        format - Print Format
        data - Print Data
        query - query for parameter info
        info -
        windowNo -
      • LayoutEngine

        public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info, String trxName)
        Detail Constructor
        Parameters:
        format -
        data -
        query -
        info -
        trxName -
      • LayoutEngine

        public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info, String trxName, int windowNo)
        Detail Constructor
        Parameters:
        format - Print Format
        data - Print Data
        query - query for parameter info
        info -
        trxName -
        windowNo -
    • Method Details

      • setPrintFormat

        public void setPrintFormat(MPrintFormat format, boolean doLayout)
        Set Print Format.
        Optionally re-calculate layout.
        Parameters:
        format - print Format
        doLayout - if layout exists, redo it
      • setPrintData

        public void setPrintData(PrintData data, MQuery query, boolean doLayout)
        Set PrintData.
        Optionally re-calculate layout.
        Parameters:
        data - data
        query - query for parameter
        doLayout - if layout exists, redo it
      • setPrintData

        public void setPrintData(PrintData data, MQuery query, boolean doLayout, String trxName)
        Set print data.
        Optionally re-calculate layout.
        Parameters:
        data -
        query -
        doLayout - if layout exists, redo it
        trxName -
      • setPaper

        public void setPaper(CPaper paper)
        Set Paper
        Parameters:
        paper - Paper
      • setPaper

        public void setPaper(CPaper paper, int headerHeight, int footerHeight)
        Set Paper.
        If layout exists and page size has change, re-calculate layout.
        Parameters:
        paper - Paper
        headerHeight - header height
        footerHeight - footer height
      • pageSetupDialog

        public void pageSetupDialog(PrinterJob job)
        Show Dialog and Set Paper.
        Optionally re-calculate layout.
        Parameters:
        job - printer job
      • setPageFormat

        protected void setPageFormat(PageFormat pf)
        Set Paper from Page Format.
        PageFormat is derived from CPaper.
        Parameters:
        pf - Optional PageFormat. If null, use standard paper Portrait.
      • getPageFormat

        public PageFormat getPageFormat()
        Get Page Format
        Returns:
        page format
      • getPaper

        public CPaper getPaper()
        Set Paper
        Returns:
        Paper
      • getCtx

        public Properties getCtx()
        Get PrintLayout (Report) Context
        Returns:
        context
      • getColumnCount

        public int getColumnCount()
        Get the number of printed Columns
        Returns:
        no of printed columns
      • setArea

        protected void setArea(int area)
        Set the current Print Area
        Parameters:
        area - see HEADER_.. constants
      • getArea

        public int getArea()
        Get the current Print Area
        Returns:
        area see HEADER_.. constants
      • getAreaBounds

        public Rectangle getAreaBounds()
        Get bounds of current Area
        Returns:
        rectangle with bounds
      • newPage

        protected int newPage(boolean force, boolean preserveXPos)
        Create New Page, set position to top content
        Parameters:
        force - if false will check if nothing printed so far
        preserveXPos - preserve X Position of content area
        Returns:
        new page no
      • newLine

        protected void newLine()
        Move to New Line (may cause new page)
      • getPageNo

        public int getPageNo()
        Get current Page Number (not zero based)
        Returns:
        Page No
      • getPage

        public Page getPage(int pageNo)
        Get Page
        Parameters:
        pageNo - page number (NOT zero based)
        Returns:
        Page
      • getPages

        public ArrayList<Page> getPages()
        Get Pages
        Returns:
        Pages in ArrayList
      • getHeaderFooter

        public HeaderFooter getHeaderFooter()
        Get Header and Footer info
        Returns:
        Header and Footer
      • setPage

        protected void setPage(int pageNo)
        Set Current page to Page No
        Parameters:
        pageNo - page number (NOT zero based)
      • getPageInfo

        public String getPageInfo(int pageNo)
        Get Page Info for Multi-Page tables
        Parameters:
        pageNo - page
        Returns:
        info e.g. (1,1)
      • getPageInfoMax

        public String getPageInfoMax()
        Get Max Page Info for Multi-Page tables
        Returns:
        info e.g. (3,2)
      • getFormat

        public MPrintFormat getFormat()
        Get Print Format Model
        Returns:
        model
      • getPageable

        public LayoutEngine getPageable(boolean isCopy)
        Get Print Interface (Pageable, Printable, Doc)
        Parameters:
        isCopy - true if it is a document copy
        Returns:
        this or null if nothing to print
      • setRelativePosition

        protected void setRelativePosition(Point2D p)
        Set Position on current page (no check)
        Parameters:
        p - point relative in area
      • setRelativePosition

        protected void setRelativePosition(float x, float y)
        Set Position on current page (no check)
        Parameters:
        x - x position in 1/72 inch
        y - y position in 1/72 inch
      • getPosition

        public Point2D getPosition()
        Get current position on current page
        Returns:
        current position
      • setX

        protected void setX(float x)
        Set X Position on current page
        Parameters:
        x - x position in 1/72 inch
      • addX

        protected void addX(float xOffset)
        Add to X Position on current page
        Parameters:
        xOffset - add offset to x position in 1/72 inch
      • getX

        public float getX()
        Get X Position on current page
        Returns:
        x position in 1/72 inch
      • setY

        protected void setY(int y)
        Set Y Position on current page
        Parameters:
        y - y position in 1/72 inch
      • addY

        protected void addY(int yOffset)
        Add to Y Position - may cause New Page
        Parameters:
        yOffset - add offset to y position in 1/72 inch
      • getY

        public float getY()
        Get Y Position on current page
        Returns:
        y position in 1/72 inch
      • getXspace

        public float getXspace()
        Get remaining X dimension space on current page in current Area
        Returns:
        space in 1/72 inch remaining in line
      • isXspaceFor

        public boolean isXspaceFor(float width)
        Is Remaining Space OK for Width in Area
        Parameters:
        width - width
        Returns:
        true if width fits in area
      • getYspace

        public float getYspace()
        Get remaining Y dimension space on current page in Area
        Returns:
        space in 1/72 inch remaining on page
      • isYspaceFor

        public boolean isYspaceFor(float height)
        Is Remaining Space OK for Height in Area
        Parameters:
        height - height
        Returns:
        true if height fits in area
      • getColor

        public Color getColor()
        Get default Color
        Returns:
        color
      • getNumberOfPages

        public int getNumberOfPages()
        Get number of pages (Pageable Interface)
        Specified by:
        getNumberOfPages in interface Pageable
        Returns:
        number of pages
      • getPageFormat

        public PageFormat getPageFormat(int pageIndex) throws IndexOutOfBoundsException
        Get Page Format (Pageable Interface)
        Specified by:
        getPageFormat in interface Pageable
        Parameters:
        pageIndex - page index
        Returns:
        Page Format
        Throws:
        IndexOutOfBoundsException
      • getPrintable

        public Printable getPrintable(int pageIndex) throws IndexOutOfBoundsException
        Get Printable (PageableInterface)
        Specified by:
        getPrintable in interface Pageable
        Parameters:
        pageIndex - page index
        Returns:
        this
        Throws:
        IndexOutOfBoundsException
      • print

        public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException
        Print Page (Printable Interface)
        Specified by:
        print in interface Printable
        Parameters:
        graphics - graphics
        pageFormat - page format (ignored)
        pageIndex - page index
        Returns:
        PageExists/NoSuchPage
        Throws:
        PrinterException
      • isCopy

        public boolean isCopy()
        Print Copy
        Returns:
        true if copy
      • setCopy

        public void setCopy(boolean isCopy)
        Set Copy
        Parameters:
        isCopy - if true document is a copy
      • getDocFlavor

        public DocFlavor getDocFlavor()
        Get the doc flavor (Doc Interface)
        Specified by:
        getDocFlavor in interface Doc
        Returns:
        SERVICE_FORMATTED.PAGEABLE
      • getPrintData

        public Object getPrintData() throws IOException
        Get Print Data (Doc Interface)
        Specified by:
        getPrintData in interface Doc
        Returns:
        this
        Throws:
        IOException
      • getAttributes

        public DocAttributeSet getAttributes()
        Get Document Attributes (Doc Interface)
        Specified by:
        getAttributes in interface Doc
        Returns:
        null to obtain all attribute values from the job's attribute set.
      • getReaderForText

        public Reader getReaderForText() throws IOException
        Obtains a reader for extracting character print data from this doc. (Doc Interface)
        Specified by:
        getReaderForText in interface Doc
        Returns:
        null
        Throws:
        IOException
      • getStreamForBytes

        public InputStream getStreamForBytes() throws IOException
        Obtains an input stream for extracting byte print data from this doc. (Doc Interface)
        Specified by:
        getStreamForBytes in interface Doc
        Returns:
        null
        Throws:
        IOException
      • setPrintInfo

        public void setPrintInfo(PrintInfo info)
        Parameters:
        info - PrintInfo
      • getPrintInfo

        public PrintInfo getPrintInfo()
        Returns:
        PrintInfo
      • setChildPrintFormatDetails

        public void setChildPrintFormatDetails(MPrintFormatItem printFormatItem, PrintData printData)
        Set child print format details
        Parameters:
        printFormatItem - print format item that reference a child print format
        printData - print data of child print format
      • getChildPrintFormatDetails

        public Map<MPrintFormatItem,PrintData> getChildPrintFormatDetails()
        Get child print format details
        Returns:
        Print Format Item:Print Data of Child Print Format.
      • getColSuppressRepeats

        public static Boolean[] getColSuppressRepeats(MPrintFormat format)
        Get suppress repeat columns
        Parameters:
        format -
        Returns:
        columns (true - suppress repeat, false - not suppress repeat)