Package org.compiere.print.layout
Class LayoutEngine
- java.lang.Object
-
- org.compiere.print.layout.LayoutEngine
-
public class LayoutEngine extends Object implements Pageable, Printable, Doc
Adempiere 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 Summary
Fields Modifier and Type Field Description static intAREA_CONTENTContent Areastatic intAREA_FOOTERFooter Areastatic intAREA_HEADERHeader AreaBoolean[]colSuppressRepeatsstatic ImageIMAGE_FALSEFalse Imagestatic DimensionIMAGE_SIZEImage Sizestatic ImageIMAGE_TRUETrue Imagestatic booleans_FASTDRAWDraw using attributed String vs.-
Fields inherited from interface java.awt.print.Pageable
UNKNOWN_NUMBER_OF_PAGES
-
Fields inherited from interface java.awt.print.Printable
NO_SUCH_PAGE, PAGE_EXISTS
-
-
Constructor Summary
Constructors Constructor Description LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info)Detail ConstructorLayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info, String trxName)Detail Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddX(float xOffset)Add to X Position on current pageprotected voidaddY(int yOffset)Add to Y Position - may cause New PageintgetArea()Get the current Print AreaRectanglegetAreaBounds()Return bounds of current AreaDocAttributeSetgetAttributes()Get Document Attributes (Doc Interface)Map<MPrintFormatItem,PrintData>getChildPrintFormatDetails()ColorgetColor()Get default Colorstatic Boolean[]getColSuppressRepeats(MPrintFormat format)intgetColumnCount()Get the number of printed ColumnsPropertiesgetCtx()Get PrintLayout (Report) ContextDocFlavorgetDocFlavor()Get the doc flavor (Doc Interface)MPrintFormatgetFormat()Get Format ModelHeaderFootergetHeaderFooter()Get Header and Footer infointgetNumberOfPages()Get number of pages (Pageable Interface)PagegetPage(int pageNo)Get Page NoLayoutEnginegetPageable(boolean isCopy)Get Print Interface (Pageable, Printable, Doc)PageFormatgetPageFormat()Get Page FormatPageFormatgetPageFormat(int pageIndex)Get Page Format (Pageable Interface)StringgetPageInfo(int pageNo)Get Page Info for Multi-Page tablesStringgetPageInfoMax()Get Max Page Info for Multi-Page tablesintgetPageNo()Get current Page Number (not zero based)ArrayList<Page>getPages()Get PagesCPapergetPaper()Set PaperPoint2DgetPosition()Get the current position on current pagePrintablegetPrintable(int pageIndex)Get Printable (PageableInterface)ObjectgetPrintData()Get Print Data (Doc Interface)PrintInfogetPrintInfo()ReadergetReaderForText()Obtains a reader for extracting character print data from this doc.InputStreamgetStreamForBytes()Obtains an input stream for extracting byte print data from this doc.floatgetX()Get X Position on current pagefloatgetXspace()Return remaining X dimension space _ on current page in AreafloatgetY()Get Y Position on current pagefloatgetYspace()Return remaining Y dimension space | on current page in AreabooleanisCopy()Print CopybooleanisXspaceFor(float width)Remaining Space is OK for Width in AreabooleanisYspaceFor(float height)Remaining Space is OK for Height in Areaprotected voidnewLine()Move to New Line (may cause new page)protected intnewPage(boolean force, boolean preserveXPos)Create New Page, set position to top contentvoidpageSetupDialog(PrinterJob job)Show Dialog and Set Paper Optionally re-calculate layoutintprint(Graphics graphics, PageFormat pageFormat, int pageIndex)Print Page (Printable Interface)protected voidsetArea(int area)Set the current Print AreavoidsetChildPrintFormatDetails(MPrintFormatItem printFormatItem, PrintData printData)voidsetCopy(boolean isCopy)Set Copyprotected voidsetPage(int pageNo)Set Current page to Page Noprotected voidsetPageFormat(PageFormat pf)Set Paper from Page Format.voidsetPaper(CPaper paper)Set PapervoidsetPaper(CPaper paper, int headerHeight, int footerHeight)Set Paper Optionally re-calculate layoutvoidsetPrintData(PrintData data, MQuery query, boolean doLayout)Set PrintData.voidsetPrintData(PrintData data, MQuery query, boolean doLayout, String trxName)voidsetPrintFormat(MPrintFormat format, boolean doLayout)Set Print Format Optionally re-calculate layoutvoidsetPrintInfo(PrintInfo info)protected voidsetRelativePosition(float x, float y)Set Position on current page (no check)protected voidsetRelativePosition(Point2D p)Set Position on current page (no check)protected voidsetX(float x)Set X Position on current pageprotected voidsetY(int y)Set Y Position on current page
-
-
-
Field Detail
-
AREA_HEADER
public static final int AREA_HEADER
Header Area- See Also:
- Constant Field Values
-
AREA_CONTENT
public static final int AREA_CONTENT
Content Area- See Also:
- Constant Field Values
-
AREA_FOOTER
public static final int AREA_FOOTER
Footer Area- See Also:
- Constant Field Values
-
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
-
-
Constructor Detail
-
LayoutEngine
public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info)
Detail Constructor- Parameters:
format- Print Formatdata- Print Dataquery- query for parameter info
-
LayoutEngine
public LayoutEngine(MPrintFormat format, PrintData data, MQuery query, PrintInfo info, String trxName)
Detail Constructor- Parameters:
format- Print Formatdata- Print Dataquery- query for parameter infotrxName-
-
-
Method Detail
-
setPrintFormat
public void setPrintFormat(MPrintFormat format, boolean doLayout)
Set Print Format Optionally re-calculate layout- Parameters:
doLayout- if layout exists, redo itformat- print Format
-
setPrintData
public void setPrintData(PrintData data, MQuery query, boolean doLayout)
Set PrintData. Optionally re-calculate layout- Parameters:
data- datadoLayout- if layout exists, redo itquery- query for parameter
-
setPrintData
public void setPrintData(PrintData data, MQuery query, boolean doLayout, String trxName)
-
setPaper
public void setPaper(CPaper paper)
Set Paper- Parameters:
paper- Paper
-
setPaper
public void setPaper(CPaper paper, int headerHeight, int footerHeight)
Set Paper Optionally re-calculate layout- Parameters:
paper- PaperheaderHeight- header heightfooterHeight- 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 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()
Return 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 farpreserveXPos- 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 No- Parameters:
pageNo- page number (NOT zero based)- Returns:
- Page
-
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 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 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 inchy- y position in 1/72 inch
-
getPosition
public Point2D getPosition()
Get the 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()
Return remaining X dimension space _ on current page in Area- Returns:
- space in 1/72 inch remaining in line
-
isXspaceFor
public boolean isXspaceFor(float width)
Remaining Space is OK for Width in Area- Parameters:
width- width- Returns:
- true if width fits in area
-
getYspace
public float getYspace()
Return remaining Y dimension space | on current page in Area- Returns:
- space in 1/72 inch remaining on page
-
isYspaceFor
public boolean isYspaceFor(float height)
Remaining Space is 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:
getNumberOfPagesin interfacePageable- Returns:
- number of pages
-
getPageFormat
public PageFormat getPageFormat(int pageIndex) throws IndexOutOfBoundsException
Get Page Format (Pageable Interface)- Specified by:
getPageFormatin interfacePageable- Parameters:
pageIndex- page index- Returns:
- Page Format
- Throws:
IndexOutOfBoundsException
-
getPrintable
public Printable getPrintable(int pageIndex) throws IndexOutOfBoundsException
Get Printable (PageableInterface)- Specified by:
getPrintablein interfacePageable- 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:
printin interfacePrintable- Parameters:
graphics- graphicspageFormat- 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:
getDocFlavorin interfaceDoc- Returns:
- SERVICE_FORMATTED.PAGEABLE
-
getPrintData
public Object getPrintData() throws IOException
Get Print Data (Doc Interface)- Specified by:
getPrintDatain interfaceDoc- Returns:
- this
- Throws:
IOException
-
getAttributes
public DocAttributeSet getAttributes()
Get Document Attributes (Doc Interface)- Specified by:
getAttributesin interfaceDoc- 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:
getReaderForTextin interfaceDoc- 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:
getStreamForBytesin interfaceDoc- 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)
-
getChildPrintFormatDetails
public Map<MPrintFormatItem,PrintData> getChildPrintFormatDetails()
-
getColSuppressRepeats
public static Boolean[] getColSuppressRepeats(MPrintFormat format)
-
-