[ 2011567 ] Implement background image for Document printed

http://sourceforge.net/tracker/index.php?func=detail&aid=2011567&group_id=176962&atid=879335

Review & QA :
* Print table format attached image was never loaded
* improved code design & quality
* improved performances
This commit is contained in:
teo_sarca 2009-01-15 17:28:18 +00:00
parent 25da8acb59
commit 2cf981578d
3 changed files with 69 additions and 69 deletions

View File

@ -49,6 +49,8 @@ import org.compiere.util.Env;
*/
public class MPrintTableFormat extends X_AD_PrintTableFormat
{
private static final long serialVersionUID = 1L;
/**
* Standard Constructor
* @param ctx context
@ -603,56 +605,6 @@ public class MPrintTableFormat extends X_AD_PrintTableFormat
}
return tf;
} // get
/**
* Load Attachment
* @param AD_PrintFormatItem_ID record id
* @throws MalformedURLException
*/
private void loadImages(int AD_PrintTableFormatItem_ID)
{
if(this.isImageIsAttached())
{
MAttachment attachment = MAttachment.get(Env.getCtx(),
MPrintFormatItem.Table_ID, AD_PrintTableFormatItem_ID);
if (attachment == null)
{
log.log(Level.WARNING, "No Attachment - AD_PrintFormatItem_ID=" + AD_PrintTableFormatItem_ID);
return;
}
if (attachment.getEntryCount() != 1)
{
log.log(Level.WARNING, "Need just 1 Attachment Entry = " + attachment.getEntryCount());
return;
}
byte[] imageData = attachment.getEntryData(0);
if (imageData != null)
m_image = Toolkit.getDefaultToolkit().createImage(imageData);
if (m_image != null)
log.fine(attachment.getEntryName(0)
+ " - Size=" + imageData.length);
else
log.log(Level.WARNING, attachment.getEntryName(0)
+ " - not loaded (must be gif or jpg) - AD_PrintFormatItem_ID=" + AD_PrintTableFormatItem_ID);
}
else if (getImageURL()!= null)
{
URL url;
try
{
url = new URL(getImageURL());
Toolkit tk = Toolkit.getDefaultToolkit();
m_image = tk.getImage(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if(getAD_Image_ID() > 0)
m_image_water_mark = MImage.get(getCtx(), getAD_Image_ID()).getImage();
} // loadAttachment
/**
* Get the Image
@ -660,9 +612,52 @@ public class MPrintTableFormat extends X_AD_PrintTableFormat
*/
public Image getImage()
{
if(m_image==null)
loadImages(getAD_PrintTableFormat_ID());
if(m_image != null)
{
return m_image;
}
//
if(isImageIsAttached())
{
MAttachment attachment = MAttachment.get(getCtx(), Table_ID, get_ID());
if (attachment == null)
{
log.log(Level.WARNING, "No Attachment - ID=" + get_ID());
return null;
}
if (attachment.getEntryCount() != 1)
{
log.log(Level.WARNING, "Need just 1 Attachment Entry = " + attachment.getEntryCount());
return null;
}
byte[] imageData = attachment.getEntryData(0);
if (imageData != null)
{
m_image = Toolkit.getDefaultToolkit().createImage(imageData);
}
if (m_image != null)
{
log.fine(attachment.getEntryName(0) + " - Size=" + imageData.length);
}
else
{
log.log(Level.WARNING, attachment.getEntryName(0) + " - not loaded (must be gif or jpg) - ID=" + get_ID());
}
}
else if (getImageURL() != null)
{
URL url;
try
{
url = new URL(getImageURL());
Toolkit tk = Toolkit.getDefaultToolkit();
m_image = tk.getImage(url);
}
catch (MalformedURLException e)
{
log.log(Level.WARNING, "Malformed URL - "+getImageURL(), e);
}
}
return m_image;
} // getImage
@ -672,8 +667,15 @@ public class MPrintTableFormat extends X_AD_PrintTableFormat
*/
public Image getImageWaterMark()
{
if(m_image_water_mark==null)
loadImages(getAD_PrintTableFormat_ID());
if(m_image_water_mark != null)
{
return m_image_water_mark;
}
//
if(getAD_Image_ID() > 0)
{
m_image_water_mark = MImage.get(getCtx(), getAD_Image_ID()).getImage();
}
return m_image_water_mark;
} // getImage
} // MPrintTableFormat

View File

@ -472,26 +472,25 @@ public class LayoutEngine implements Pageable, Printable, Doc
Env.setContext(m_printCtx, Page.CONTEXT_TIME,
DisplayType.getDateFormat(DisplayType.DateTime, m_format.getLanguage()).format(now));
/*Page Background Image*/
//
// Page Background Image
Image image = null;
MPrintTableFormat tf = new MPrintTableFormat(getCtx(), m_format.getAD_PrintTableFormat_ID(), m_TrxName);
if (tf==null)
tf = MPrintTableFormat.getDefault(getCtx());
String table_name = MTable.getTableName(getCtx(), getPrintInfo().getAD_Table_ID());
String sql = "SELECT AD_Column_ID FROM AD_Column WHERE ColumnName='IsPrinted' AND AD_Table_ID="+ getPrintInfo().getAD_Table_ID();
int AD_Column_ID = DB.getSQLValue(m_TrxName, sql);
if(AD_Column_ID > 0)
MPrintTableFormat tf = m_format.getTableFormat();
MTable table = MTable.get(getCtx(), getPrintInfo().getAD_Table_ID());
if(table.getColumn("IsPrinted") != null)
{
sql = "SELECT IsPrinted FROM "+table_name + " WHERE " +table_name+"_ID="+ getPrintInfo().getRecord_ID();
if("Y".equals(DB.getSQLValueString(m_TrxName, sql)))
String tableName = table.getTableName();
final String sql = "SELECT IsPrinted FROM "+tableName+" WHERE "+tableName+"_ID=?";
boolean isPrinted = "Y".equals(DB.getSQLValueStringEx(m_TrxName, sql, getPrintInfo().getRecord_ID()));
isPrinted =true;
if(isPrinted)
{
image = tf.getImageWaterMark();
}
}
else
{
image = tf.getImage();
image = tf.getImage();
}
// Update Page Info

View File

@ -169,11 +169,10 @@ public class Page
g2D.fillRect(bounds.x, bounds.y, bounds.width, bounds.height);
//
//backgroundImage
if(m_image!=null)
if(m_image != null)
{
int x = (bounds.width/2) - (m_image.getWidth(null)/2);
int y = (bounds.height/2) - (m_image.getHeight(null)/2);
g2D.drawImage(m_image, x ,y ,null);
}
//