📄 viewer.java
字号:
AEnv.addMenuItem("Find", null, KeyStroke.getKeyStroke(KeyEvent.VK_F, Event.CTRL_MASK), mFile, this);
mFile.addSeparator();
AEnv.addMenuItem("PageSetup", null, null, mFile, this);
AEnv.addMenuItem("Print", null, KeyStroke.getKeyStroke(KeyEvent.VK_P, Event.CTRL_MASK), mFile, this);
if (m_isCanExport)
AEnv.addMenuItem("Export", null, null, mFile, this);
mFile.addSeparator();
AEnv.addMenuItem("End", null, KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.ALT_MASK), mFile, this);
AEnv.addMenuItem("Exit", null, KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.SHIFT_MASK+Event.ALT_MASK), mFile, this);
// View
JMenu mView = AEnv.getMenu("View");
menuBar.add(mView);
AEnv.addMenuItem("InfoProduct", null, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.CTRL_MASK), mView, this);
AEnv.addMenuItem("InfoBPartner", null, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.SHIFT_MASK+Event.CTRL_MASK), mView, this);
AEnv.addMenuItem("InfoAccount", null, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.ALT_MASK+Event.CTRL_MASK), mView, this);
AEnv.addMenuItem("InfoSchedule", null, null, mView, this);
mView.addSeparator();
AEnv.addMenuItem("InfoOrder", "Info", null, mView, this);
AEnv.addMenuItem("InfoInvoice", "Info", null, mView, this);
AEnv.addMenuItem("InfoInOut", "Info", null, mView, this);
AEnv.addMenuItem("InfoPayment", "Info", null, mView, this);
// Go
JMenu mGo = AEnv.getMenu("Go");
menuBar.add(mGo);
AEnv.addMenuItem("First", "First", KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, Event.ALT_MASK), mGo, this);
AEnv.addMenuItem("PreviousPage", "Previous", KeyStroke.getKeyStroke(KeyEvent.VK_UP, Event.ALT_MASK), mGo, this);
AEnv.addMenuItem("NextPage", "Next", KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, Event.ALT_MASK), mGo, this);
AEnv.addMenuItem("Last", "Last", KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, Event.ALT_MASK), mGo, this);
// Tools
JMenu mTools = AEnv.getMenu("Tools");
menuBar.add(mTools);
AEnv.addMenuItem("Calculator", null, null, mTools, this);
AEnv.addMenuItem("Calendar", null, null, mTools, this);
AEnv.addMenuItem("Editor", null, null, mTools, this);
AEnv.addMenuItem("Script", null, null, mTools, this);
mTools.addSeparator();
AEnv.addMenuItem("Preference", null, null, mTools, this);
// Help
JMenu mHelp = AEnv.getMenu("Help");
menuBar.add(mHelp);
AEnv.addMenuItem("Online", null, null, mHelp, this);
AEnv.addMenuItem("SendMail", null, null, mHelp, this);
AEnv.addMenuItem("About", null, null, mHelp, this);
// ---- ToolBar ----
//
setButton(bPrint, "Print", "Print");
setButton(bSendMail, "SendMail", "SendMail");
setButton(bPageSetup, "PageSetup", "PageSetup");
setButton(bArchive, "Archive", "Archive");
if (m_isCanExport)
setButton(bExport, "Export", "Export");
//
setButton(bNext, "NextPage", "Next");
setButton(bPrevious, "PreviousPage", "Previous");
//
setButton(bFind, "Find", "Find");
setButton(bCustomize, "PrintCustomize", "Preference");
//
setButton(bEnd, "End", "End");
} // createMenu
/**
* Set Button
* @param button button
* @param cmd command
* @param file fine mame
*/
private void setButton (AbstractButton button, String cmd, String file)
{
String text = Msg.getMsg(m_ctx, cmd);
button.setToolTipText(text);
button.setActionCommand(cmd);
//
ImageIcon ii24 = Env.getImageIcon(file+"24.gif");
if (ii24 != null)
button.setIcon(ii24);
button.setMargin(AppsAction.BUTTON_INSETS);
button.setPreferredSize(AppsAction.BUTTON_SIZE);
button.addActionListener(this);
} // setButton
/**
* Dispose
*/
public void dispose()
{
Env.clearWinContext(m_WindowNo);
m_reportEngine = null;
m_viewPanel = null;
m_ctx = null;
super.dispose();
} // dispose
/**************************************************************************
* Action Listener
* @param e event
*/
public void actionPerformed (ActionEvent e)
{
if (m_setting)
return;
String cmd = e.getActionCommand();
log.config(cmd);
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
//
// if (e.getSource() == comboZoom)
// cmd_zoom();
// else
if (e.getSource() == comboReport)
cmd_report();
else if (e.getSource() == comboDrill)
cmd_drill();
else if (cmd.equals("First"))
setPage(1);
else if (cmd.equals("PreviousPage") || cmd.equals("Previous"))
setPage(m_pageNo-1);
else if (cmd.equals("NextPage") || cmd.equals("Next"))
setPage(m_pageNo+1);
else if (cmd.equals("Last"))
setPage(m_pageMax);
else if (cmd.equals("Find"))
cmd_find();
else if (cmd.equals("Export"))
cmd_export();
else if (cmd.equals("Print"))
cmd_print();
else if (cmd.equals("SendMail"))
cmd_sendMail();
else if (cmd.equals("Archive"))
cmd_archive();
else if (cmd.equals("PrintCustomize"))
cmd_customize();
else if (cmd.equals("PageSetup"))
cmd_pageSetup();
else if (cmd.equals("Translate"))
cmd_translate();
else if (cmd.equals("End"))
dispose();
//
else if (e.getSource() == m_ddM)
cmd_window(m_ddQ);
else if (e.getSource() == m_daM)
cmd_window(m_daQ);
//
else if (!AEnv.actionPerformed(e.getActionCommand(), m_WindowNo, this))
log.log(Level.SEVERE, "unknown action=" + e.getActionCommand());
//
this.setCursor(Cursor.getDefaultCursor());
} // actionPerformed
/**
* Change Listener (spinner, viewpoint)
* @param e event
*/
public void stateChanged (ChangeEvent e)
{
if (m_setting)
return;
// log.config( "Viewer.stateChanged", e);
m_setting = true;
int newPage = 0;
if (e.getSource() == spinner)
{
newPage = ((Integer)spinnerModel.getValue()).intValue();
}
else // Viewpoint
{
Point p = centerScrollPane.getViewport().getViewPosition();
newPage = Math.round(m_viewPanel.getPageNoAt(p));
}
setPage(newPage);
m_setting = false;
} // stateChanged
/**
* Set Page No
* @param page page no
*/
private void setPage (int page)
{
m_setting = true;
m_pageNo = page;
if (m_pageNo < 1)
m_pageNo = 1;
if (page > m_pageMax)
m_pageNo = m_pageMax;
bPrevious.setEnabled (m_pageNo != 1);
bNext.setEnabled (m_pageNo != m_pageMax);
//
Rectangle pageRectangle = m_viewPanel.getRectangleOfPage(m_pageNo);
pageRectangle.x -= View.MARGIN;
pageRectangle.y -= View.MARGIN;
centerScrollPane.getViewport().setViewPosition(pageRectangle.getLocation());
// System.out.println("scrollTo " + pageRectangle);
// Set Page
spinnerModel.setValue(new Integer(m_pageNo));
StringBuffer sb = new StringBuffer (Msg.getMsg(m_ctx, "Page"))
.append(" ").append(m_pageNo)
.append(m_viewPanel.getPageInfo(m_pageNo))
.append(" ").append(Msg.getMsg(m_ctx, "of")).append(" ")
.append(m_pageMax)
.append(m_viewPanel.getPageInfoMax());
statusBar.setStatusDB(sb.toString());
m_setting = false;
} // setPage
/**************************************************************************
* (Re)Set Drill Accross Cursor
*/
private void cmd_drill()
{
m_drillDown = comboDrill.getSelectedIndex() < 1; // -1 or 0
if (m_drillDown)
setCursor(Cursor.getDefaultCursor());
else
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
} // cmd_drill
/**
* Mouse clicked
* @param e event
* @param rightClick true if right click
*/
private void mouse_clicked (MouseEvent e, boolean rightClick)
{
Point point = e.getPoint();
log.info("Right=" + rightClick + " - " + point.toString());
if (rightClick)
{
m_ddQ = m_viewPanel.getDrillDown(point);
m_daQ = m_viewPanel.getDrillAcross(point);
m_ddM = null;
m_daM = null;
if (m_ddQ == null && m_daQ == null)
return;
// Create Menu
JPopupMenu pop = new JPopupMenu();
Icon wi = Env.getImageIcon("mWindow.gif");
if (m_ddQ != null)
{
m_ddM = new CMenuItem(m_ddQ.getDisplayName(Env.getCtx()), wi);
m_ddM.setToolTipText(m_ddQ.toString());
m_ddM.addActionListener(this);
pop.add(m_ddM);
}
if (m_daQ != null)
{
m_daM = new CMenuItem(m_daQ.getDisplayName(Env.getCtx()), wi);
m_daM.setToolTipText(m_daQ.toString());
m_daM.addActionListener(this);
pop.add(m_daM);
}
Point pp = e.getPoint();
pop.show((Component)e.getSource(), pp.x, pp.y);
return;
}
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
if (m_drillDown)
{
MQuery query = m_viewPanel.getDrillDown(point);
if (query != null)
{
log.info("Drill Down: " + query.getWhereClause(true));
executeDrill(query);
}
}
else if (comboDrill.getSelectedItem() != null && comboDrill.getSelectedIndex() > 0)
{
MQuery query = m_viewPanel.getDrillAcross(point);
if (query != null)
{
NamePair pp = (NamePair)comboDrill.getSelectedItem();
query.setTableName(pp.getID());
log.info("Drill Accross: " + query.getWhereClause(true));
executeDrill(query);
}
}
cmd_drill(); // setCursor
} // mouse_clicked
/**
* Execute Drill to Query
* @param query query
*/
private void executeDrill (MQuery query)
{
int AD_Table_ID = AReport.getAD_Table_ID(query.getTableName());
if (!MRole.getDefault().isCanReport(AD_Table_ID))
{
ADialog.error(m_WindowNo, this, "AccessCannotReport", query.getTableName());
return;
}
if (AD_Table_ID != 0)
new AReport (AD_Table_ID, null, query);
else
log.warning("No Table found for " + query.getWhereClause(true));
} // executeDrill
/**
* Open Window
* @param query query
*/
private void cmd_window (MQuery query)
{
if (query == null)
return;
AEnv.zoom(query);
} // cmd_window
/**************************************************************************
* Print Report
*/
private void cmd_print()
{
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
m_reportEngine.getPrintInfo().setWithDialog(true);
m_reportEngine.print();
cmd_drill(); // setCursor
} // cmd_print
/**
* Send Mail
*/
private void cmd_sendMail()
{
String to = "";
MUser from = MUser.get(Env.getCtx(), Env.getAD_User_ID(Env.getCtx()));
String subject = m_reportEngine.getName();
String message = "";
File attachment = null;
try
{
attachment = File.createTempFile("mail", ".pdf");
m_reportEngine.getPDF(attachment);
}
catch (Exception e)
{
log.log(Level.SEVERE, "", e);
}
EMailDialog emd = new EMailDialog (this,
Msg.getMsg(Env.getCtx(), "SendMail"),
from, to, subject, message, attachment);
} // cmd_sendMail
/**
* Archive Report directly
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -