📄 viewer.java
字号:
*/
private void cmd_archive ()
{
boolean success = false;
byte[] data = Document.getPDFAsArray(m_reportEngine.getLayout().getPageable(false)); // No Copy
if (data != null)
{
MArchive archive = new MArchive (Env.getCtx(), m_reportEngine.getPrintInfo(), null);
archive.setBinaryData(data);
success = archive.save();
}
if (success)
ADialog.info(m_WindowNo, this, "Archived");
else
ADialog.error(m_WindowNo, this, "ArchiveError");
} // cmd_archive
/**
* Print Setup Dialog
*/
private void cmd_pageSetup()
{
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
m_reportEngine.pageSetupDialog();
revalidate();
cmd_drill(); // setCursor
} // cmd_pageSetup
/**
* Export
*/
private void cmd_export()
{
log.config("");
if (!m_isCanExport)
{
ADialog.error(m_WindowNo, this, "AccessCannotExport", getTitle());
return;
}
//
JFileChooser chooser = new JFileChooser();
chooser.setDialogType(JFileChooser.SAVE_DIALOG);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle(Msg.getMsg(m_ctx, "Export") + ": " + getTitle());
//
chooser.addChoosableFileFilter(new ExtensionFileFilter("ps", Msg.getMsg(m_ctx, "FilePS")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("xml", Msg.getMsg(m_ctx, "FileXML")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("pdf", Msg.getMsg(m_ctx, "FilePDF")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("html", Msg.getMsg(m_ctx, "FileHTML")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("txt", Msg.getMsg(m_ctx, "FileTXT")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("ssv", Msg.getMsg(m_ctx, "FileSSV")));
chooser.addChoosableFileFilter(new ExtensionFileFilter("csv", Msg.getMsg(m_ctx, "FileCSV")));
//
if (chooser.showSaveDialog(this) != JFileChooser.APPROVE_OPTION)
return;
// Create File
File outFile = ExtensionFileFilter.getFile(chooser.getSelectedFile(), chooser.getFileFilter());
try
{
outFile.createNewFile();
}
catch (IOException e)
{
log.log(Level.SEVERE, "", e);
ADialog.error(m_WindowNo, this, "FileCannotCreate", e.getLocalizedMessage());
return;
}
String ext = outFile.getPath();
// no extension
if (ext.lastIndexOf(".") == -1)
{
ADialog.error(m_WindowNo, this, "FileInvalidExtension");
return;
}
ext = ext.substring(ext.lastIndexOf(".")+1).toLowerCase();
log.config( "File=" + outFile.getPath() + "; Type=" + ext);
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
if (ext.equals("pdf"))
m_reportEngine.createPDF(outFile);
else if (ext.equals("ps"))
m_reportEngine.createPS(outFile);
else if (ext.equals("xml"))
m_reportEngine.createXML(outFile);
else if (ext.equals("csv"))
m_reportEngine.createCSV(outFile, ',', m_reportEngine.getPrintFormat().getLanguage());
else if (ext.equals("ssv"))
m_reportEngine.createCSV(outFile, ';', m_reportEngine.getPrintFormat().getLanguage());
else if (ext.equals("txt"))
m_reportEngine.createCSV(outFile, '\t', m_reportEngine.getPrintFormat().getLanguage());
else if (ext.equals("html") || ext.equals("htm"))
m_reportEngine.createHTML(outFile, false, m_reportEngine.getPrintFormat().getLanguage());
else
ADialog.error(m_WindowNo, this, "FileInvalidExtension");
cmd_drill(); // setCursor
} // cmd_export
/**
* Report Combo - Start other Report or create new one
*/
private void cmd_report()
{
KeyNamePair pp = (KeyNamePair)comboReport.getSelectedItem();
if (pp == null)
return;
//
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
MPrintFormat pf = null;
int AD_PrintFormat_ID = pp.getKey();
// create new
if (AD_PrintFormat_ID == -1)
{
int AD_ReportView_ID = m_reportEngine.getPrintFormat().getAD_ReportView_ID();
if (AD_ReportView_ID != 0)
{
String name = m_reportEngine.getName();
int index = name.lastIndexOf("_");
if (index != -1)
name = name.substring(0,index);
pf = MPrintFormat.createFromReportView(m_ctx, AD_ReportView_ID, name);
}
else
{
int AD_Table_ID = m_reportEngine.getPrintFormat().getAD_Table_ID();
pf = MPrintFormat.createFromTable(m_ctx, AD_Table_ID);
}
if (pf != null)
fillComboReport(pf.get_ID());
else
return;
}
else
pf = MPrintFormat.get (Env.getCtx(), AD_PrintFormat_ID, true);
m_reportEngine.setPrintFormat(pf);
revalidate();
cmd_drill(); // setCursor
} // cmd_report
/**
* Query Report
*/
private void cmd_find()
{
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
int AD_Table_ID = m_reportEngine.getPrintFormat().getAD_Table_ID();
String title = null;
String tableName = null;
// Get Find Tab Info
String sql = "SELECT t.AD_Tab_ID "
// ,w.Name, t.Name, w.IsDefault, t.SeqNo, ABS (tt.AD_Window_ID-t.AD_Window_ID)
+ "FROM AD_Tab t"
+ " INNER JOIN AD_Window w ON (t.AD_Window_ID=w.AD_Window_ID)"
+ " INNER JOIN AD_Table tt ON (t.AD_Table_ID=tt.AD_Table_ID) "
+ "WHERE AD_Table_ID=? "
+ "ORDER BY w.IsDefault DESC, t.SeqNo, ABS (tt.AD_Window_ID-t.AD_Window_ID)";
int AD_Tab_ID = DB.getSQLValue(null, sql, AD_Table_ID);
//
sql = "SELECT Name, TableName FROM AD_Tab_v WHERE AD_Tab_ID=?";
if (!Env.isBaseLanguage(Env.getCtx(), "AD_Tab"))
sql = "SELECT Name, TableName FROM AD_Tab_vt WHERE AD_Tab_ID=?"
+ " AND AD_Language='" + Env.getAD_Language(Env.getCtx()) + "'";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, AD_Tab_ID);
ResultSet rs = pstmt.executeQuery();
//
if (rs.next())
{
title = rs.getString(1);
tableName = rs.getString(2);
}
//
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
MField[] findFields = null;
if (tableName != null)
findFields = MField.createFields(m_ctx, m_WindowNo, 0, AD_Tab_ID);
if (findFields == null) // No Tab for Table exists
bFind.setEnabled(false);
else
{
Find find = new Find (this, m_WindowNo, title,
AD_Table_ID, tableName, "", findFields, 1);
m_reportEngine.setQuery(find.getQuery());
revalidate();
}
cmd_drill(); // setCursor
} // cmd_find
/**
* Call Customize
*/
private void cmd_customize()
{
AWindow win = new AWindow ();
new AWindowListener (win, this); // forwards Window Events
int AD_Window_ID = 240; // hardcoded
int AD_PrintFormat_ID = m_reportEngine.getPrintFormat().get_ID();
win.initWindow(AD_Window_ID, MQuery.getEqualQuery("AD_PrintFormat_ID", AD_PrintFormat_ID));
AEnv.showCenterScreen(win);
// see windowStateChanged for applying change
} // cmd_customize
/**
* Window State Listener for Customize Window
* @param e event
*/
public void windowStateChanged (WindowEvent e)
{
// The Customize Window was closed
if (e.getID() == WindowEvent.WINDOW_CLOSED && m_reportEngine != null)
{
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
log.info("Re-read PrintFormat");
int AD_PrintFormat_ID = m_reportEngine.getPrintFormat().get_ID();
Language language = m_reportEngine.getPrintFormat().getLanguage();
MPrintFormat pf = MPrintFormat.get (Env.getCtx(), AD_PrintFormat_ID, true);
pf.setLanguage (language); // needs to be re-set - otherwise viewer will be blank
pf.setTranslationLanguage (language);
m_reportEngine.setPrintFormat(pf);
revalidate();
cmd_drill(); // setCursor
}
} // windowStateChanged
/**
* Set Zoom Level
*/
private void cmd_zoom()
{
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
// m_viewPanel.setZoomLevel(comboZoom.getSelectedIndex());
revalidate();
cmd_drill(); // setCursor
} // cmd_zoom
/**
* Show Translation Dialog.
* Translate base table entry, will be copied to trl tables if not multi-lingual
*/
private void cmd_translate()
{
ArrayList<ValueNamePair> list = new ArrayList<ValueNamePair>();
ValueNamePair pp = null;
String sql = "SELECT Name, AD_Language FROM AD_Language WHERE IsSystemLanguage='Y' ORDER BY 1";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next())
list.add(new ValueNamePair (rs.getString(2), rs.getString(1)));
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
if (list.size() == 0)
{
ADialog.warn(m_WindowNo, this, "NoTranslation");
return;
}
// Dialog
String title = Msg.getMsg(Env.getCtx(), "PrintFormatTrl", true);
String message = Msg.getMsg(Env.getCtx(), "PrintFormatTrl", false);
int choice = JOptionPane.showOptionDialog
(this, message, title,
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE, null,
list.toArray(), null);
if (choice == JOptionPane.CLOSED_OPTION)
return;
//
pp = (ValueNamePair)list.get(choice);
String AD_Language = pp.getValue();
int AD_PrintFormat_ID = m_reportEngine.getPrintFormat().get_ID();
log.config(AD_Language + " - AD_PrintFormat_ID=" + AD_PrintFormat_ID);
StringBuffer sb = new StringBuffer();
// English
if (Language.isBaseLanguage (AD_Language))
{
sb.append("UPDATE AD_PrintFormatItem pfi "
+ "SET Name = (SELECT e.Name FROM AD_Element e, AD_Column c"
+ " WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID),"
+ "PrintName = (SELECT e.PrintName FROM AD_Element e, AD_Column c"
+ " WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID) "
+ "WHERE AD_PrintFormat_ID=").append(AD_PrintFormat_ID).append(
" AND EXISTS (SELECT * FROM AD_Element e, AD_Column c"
+ " WHERE e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID)");
}
else
{
AD_Language = "'" + AD_Language + "'";
sb.append("UPDATE AD_PrintFormatItem pfi "
+ "SET Name = (SELECT e.Name FROM AD_Element_Trl e, AD_Column c"
+ " WHERE e.AD_Language=").append(AD_Language).append(
" AND e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID), "
+ "PrintName = (SELECT e.PrintName FROM AD_Element_Trl e, AD_Column c"
+ " WHERE e.AD_Language=").append(AD_Language).append(
" AND e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID) "
+ "WHERE AD_PrintFormat_ID=").append(AD_PrintFormat_ID).append(
" AND EXISTS (SELECT * FROM AD_Element_Trl e, AD_Column c"
+ " WHERE e.AD_Language=").append(AD_Language).append(
" AND e.AD_Element_ID=c.AD_Element_ID AND c.AD_Column_ID=pfi.AD_Column_ID)");
}
int count = DB.executeUpdate(sb.toString(), null);
log.config("Count=" + count);
//
m_reportEngine.setPrintFormat(MPrintFormat.get (Env.getCtx(), AD_PrintFormat_ID, true));
revalidate();
} // cmd_translate
/*************************************************************************/
/**
* Test
* @param args args
*/
static public void main (String[] args)
{
Login.initTest(true);
MQuery q = new MQuery("C_Invoice");
q.addRestriction("C_Invoice_ID", MQuery.EQUAL, new Integer(103));
// 102 = Invoice - 100 = Order
PrintInfo i = new PrintInfo("test", X_C_Invoice.Table_ID, 102, 0);
MPrintFormat f = MPrintFormat.get (Env.getCtx(), 102, false);
ReportEngine re = new ReportEngine(Env.getCtx(), f, q, i);
// MPrintFormat f = new MPrintFormat(Env.getCtx(), 101);
// ReportEngine re = new ReportEngine(f, null);
new Viewer(re);
} // main
} // Viewer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -