📄 amenu.java
字号:
AEnv.addMenuItem("PrintScreen", null, KeyStroke.getKeyStroke(KeyEvent.VK_PRINTSCREEN, 0), mFile, this);
AEnv.addMenuItem("ScreenShot", null, KeyStroke.getKeyStroke(KeyEvent.VK_PRINTSCREEN, KeyEvent.SHIFT_MASK), mFile, this);
mFile.addSeparator();
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.ALT_MASK), mView, this);
AEnv.addMenuItem("InfoBPartner", null, KeyStroke.getKeyStroke(KeyEvent.VK_I, Event.ALT_MASK+Event.CTRL_MASK), mView, this);
if (MRole.getDefault().isShowAcct())
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);
AEnv.addMenuItem("InfoCashLine", "Info", null, mView, this);
AEnv.addMenuItem("InfoAssignment", "Info", null, mView, this);
AEnv.addMenuItem("InfoAsset", "Info", null, mView, 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);
if (AEnv.isWorkflowProcess())
AEnv.addMenuItem("WorkFlow", null, null, mTools, this);
if (MRole.getDefault().isShowPreference())
{
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("EMailSupport", null, null, mHelp, this);
AEnv.addMenuItem("About", null, null, mHelp, this);
} // createMenu
/**
* Dispose - end system
*/
public void dispose()
{
// clean up - close windows
Ini.setWindowDimension(0, getSize());
Ini.setDividerLocation(treePanel.getDividerLocation());
Ini.setWindowLocation(0, getLocation());
Ini.saveProperties(true);
super.dispose();
AEnv.exit(0);
} // dispose
/**
* Window Events - requestFocus
* @param e event
*/
protected void processWindowEvent(WindowEvent e)
{
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_OPENED)
{
treePanel.getSearchField().requestFocusInWindow();
// this.toFront();
}
} // processWindowEvent
/**
* Set Busy
* @param value true if buzy
*/
protected void setBusy (boolean value)
{
m_startingItem = value;
if (value)
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
else
setCursor(Cursor.getDefaultCursor());
// setEnabled (!value); // causes flicker
} // setBusy
/**
* Selection in tree - launch Application
* @param e PropertyChangeEvent
*/
public void propertyChange(PropertyChangeEvent e)
{
MTreeNode nd = (MTreeNode)e.getNewValue();
log.info(nd.getNode_ID() + " - " + nd.toString());
// ignore summary items & when loading
if (m_startingItem || nd.isSummary())
return;
String sta = nd.toString();
progressBar.setString(sta);
int cmd = nd.getNode_ID();
(new AMenuStartItem(cmd, true, sta, this)).start(); // async load
updateInfo();
} // propertyChange
/**************************************************************************
* ActionListener
* @param e ActionEvent
*/
public void actionPerformed(ActionEvent e)
{
// Buttons
if (e.getSource() == bNotes)
gotoNotes();
else if (e.getSource() == bRequests)
gotoRequests();
else if (!AEnv.actionPerformed(e.getActionCommand(), m_WindowNo, this))
log.log(Level.SEVERE, "unknown action=" + e.getActionCommand());
updateInfo();
} // actionPerformed
/**
* Get number of open Notes
* @return bumber of notes
*/
private int getNotes()
{
int retValue = 0;
String sql = "SELECT COUNT(*) FROM AD_Note "
+ "WHERE AD_Client_ID=? AND AD_User_ID IN (0,?)"
+ " AND Processed='N'";
try
{
PreparedStatement pstmt = DB.prepareStatement(sql, null);
pstmt.setInt(1, Env.getAD_Client_ID(Env.getCtx()));
pstmt.setInt(2, m_AD_User_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = rs.getInt(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, sql, e);
}
return retValue;
} // getNotes
/**
* Open Note Window
*/
private void gotoNotes()
{
// AD_Table_ID for AD_Note = 389 HARDCODED
if (m_note_Menu_ID == 0)
m_note_Menu_ID = DB.getSQLValue(null, "SELECT AD_Menu_ID "
+ "FROM AD_Menu m"
+ " INNER JOIN AD_TABLE t ON (t.AD_Window_ID=m.AD_Window_ID) "
+ "WHERE t.AD_Table_ID=?", 389);
if (m_note_Menu_ID == 0)
m_note_Menu_ID = 233; // fallback HARDCODED
(new AMenuStartItem (m_note_Menu_ID, true, Msg.translate(m_ctx, "AD_Note_ID"), this)).start(); // async load
} // gotoMessage
/**
* Ger Number of open Requests
* @return number of requests
*/
private int getRequests()
{
int retValue = 0;
if (m_requestSQL == null)
m_requestSQL = MRole.getDefault().addAccessSQL ("SELECT COUNT(*) FROM R_Request "
+ "WHERE (SalesRep_ID=? OR AD_Role_ID=?) AND Processed='N'"
+ " AND (DateNextAction IS NULL OR TRUNC(DateNextAction) <= TRUNC(SysDate))"
+ " AND (R_Status_ID IS NULL OR R_Status_ID IN (SELECT R_Status_ID FROM R_Status WHERE IsClosed='N'))",
"R_Request", false, true); // not qualified - RW
try
{
PreparedStatement pstmt = DB.prepareStatement(m_requestSQL, null);
pstmt.setInt(1, m_AD_User_ID);
pstmt.setInt(2, m_AD_Role_ID);
ResultSet rs = pstmt.executeQuery();
if (rs.next())
retValue = rs.getInt(1);
rs.close();
pstmt.close();
}
catch (SQLException e)
{
log.log(Level.SEVERE, m_requestSQL, e);
}
return retValue;
} // getRequests
/**
* Open Request Window
*/
private void gotoRequests()
{
// AD_Table_ID for R_Request = 417 HARDCODED
// if (m_request_Menu_ID == 0) // Goes to Request (all)
// m_request_Menu_ID = DB.getSQLValue (null, "SELECT AD_Menu_ID "
// + "FROM AD_Menu m"
// + " INNER JOIN AD_TABLE t ON (t.AD_Window_ID=m.AD_Window_ID) "
// + "WHERE t.AD_Table_ID=?", 417);
if (m_request_Menu_ID == 0)
m_request_Menu_ID = 237; // My Requests
(new AMenuStartItem (m_request_Menu_ID, true, Msg.translate(m_ctx, "R_Request_ID"), this)).start(); // async load
} // gotoRequests
/**
* Show Memory Info - run GC if required - Update Requests/Memos/Activities
*/
public void updateInfo()
{
double total = Runtime.getRuntime().totalMemory() / 1024;
double free = Runtime.getRuntime().freeMemory() / 1024;
double used = total - free;
double percent = used * 100 / total;
//
memoryBar.setMaximum((int)total);
memoryBar.setValue((int)used);
String msg = MessageFormat.format("{0,number,integer} MB - {1,number,integer}%",
new Object[] {new BigDecimal(total / 1024), new BigDecimal(percent)});
memoryBar.setString(msg);
//
// msg = MessageFormat.format("Total Memory {0,number,integer} kB - Free {1,number,integer} kB",
msg = Msg.getMsg(m_ctx, "MemoryInfo",
new Object[] {new BigDecimal(total), new BigDecimal(free)});
memoryBar.setToolTipText(msg);
// progressBar.repaint();
//
if (percent > 50)
System.gc();
// Requests
int requests = getRequests();
bRequests.setText(Msg.translate(m_ctx, "R_Request_ID") + ": " + requests);
// Memo
int notes = getNotes();
bNotes.setText(Msg.translate(m_ctx, "AD_Note_ID") + ": " + notes);
// Activities
int activities = wfActivity.loadActivities();
centerPane.setTitleAt(m_tabActivities, Msg.getMsg (m_ctx, "WorkflowActivities") + ": " + activities);
//
log.config(msg
+ ", Processors=" + Runtime.getRuntime().availableProcessors()
+ ", Requests=" + requests + ", Notes=" + notes + ", Activities=" + activities
+ "," + CConnection.get().getStatus()
);
MSystem.get(m_ctx).info();
} // updateInfo
/*************************************************************************
* Start Workflow Activity
* @param AD_Workflow_ID id
*/
protected void startWorkFlow (int AD_Workflow_ID)
{
centerPane.setSelectedIndex(m_tabWorkflow); // switch
wfPanel.load(AD_Workflow_ID, false);
} // startWorkFlow
/**
* Change Listener (tab)
* @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
* @param e event
*/
public void stateChanged (ChangeEvent e)
{
// show activities
if (centerPane.getSelectedIndex() == m_tabActivities)
wfActivity.display();
} // stateChanged
/**************************************************************************
* Mouse Listener
*/
class AMenu_MouseAdapter extends MouseAdapter
{
/**
* Invoked when the mouse has been clicked on a component.
* @param e evant
*/
public void mouseClicked(MouseEvent e)
{
if (e.getClickCount() > 1)
{
System.gc();
updateInfo();
}
}
} // AMenu_MouseAdapter
/**************************************************************************
* OS Start
* @param args Array of String arguments (ignored)
*/
public static void main(String[] args)
{
Splash splash = Splash.getSplash();
Compiere.startup(true); // needs to be here for UI
AMenu menu = new AMenu();
} // main
} // AMenu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -