📄 amenu.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.math.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import javax.swing.event.*;
//
import org.compiere.*;
import org.compiere.apps.wf.*;
import org.compiere.apps.graph.*;
import org.compiere.db.*;
import org.compiere.grid.tree.*;
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
/**
* Application Menu Controller
*
* @author Jorg Janke
* @version $Id: AMenu.java,v 1.103 2006/01/05 07:26:23 jjanke Exp $
*/
public final class AMenu extends CFrame
implements ActionListener, PropertyChangeListener, ChangeListener
{
/**
* Application Start and Menu
*/
public AMenu ()
{
super();
log.info("CodeBase=" + Compiere.getCodeBase());
Splash splash = Splash.getSplash();
//
m_WindowNo = Env.createWindowNo(this);
// Login
initSystem (splash); // login
splash.setText(Msg.getMsg(m_ctx, "Loading"));
//
Compiere.startupEnvironment(true); // Load Environment
MSession.get (Env.getCtx(), true); // Start Session
// Preparation
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
wfActivity = new WFActivity(this);
wfPanel = new WFPanel(this);
treePanel = new VTreePanel (m_WindowNo, true, false); // !editable & hasBar
try
{
jbInit();
createMenu();
}
catch(Exception ex)
{
log.log(Level.SEVERE, "AMenu", ex);
}
// initialize & load tree
int AD_Role_ID = Env.getAD_Role_ID(Env.getCtx());
int AD_Tree_ID = DB.getSQLValue(null,
"SELECT COALESCE(r.AD_Tree_Menu_ID, ci.AD_Tree_Menu_ID)"
+ "FROM AD_ClientInfo ci"
+ " INNER JOIN AD_Role r ON (ci.AD_Client_ID=r.AD_Client_ID) "
+ "WHERE AD_Role_ID=?", AD_Role_ID);
if (AD_Tree_ID <= 0)
AD_Tree_ID = 10; // Menu
treePanel.initTree(AD_Tree_ID);
// Translate
Env.setContext(m_ctx, m_WindowNo, "WindowName", Msg.getMsg(m_ctx, "Menu"));
setTitle(Env.getHeader(m_ctx, m_WindowNo));
progressBar.setString(Msg.getMsg(m_ctx, "SelectProgram"));
// Finish UI
Point loc = Ini.getWindowLocation(0);
if (loc == null)
loc = new Point(0,0);
this.setLocation(loc);
this.pack();
this.setVisible(true);
this.setState(Frame.NORMAL);
m_AD_User_ID = Env.getContextAsInt(m_ctx, "#AD_User_ID");
m_AD_Role_ID = Env.getContextAsInt(m_ctx, "#AD_Role_ID");
updateInfo();
//for update information in time
AMenuListener aml = new AMenuListener(this);
aml.start();
if(AD_Role_ID!=0){
org.compiere.cti.SerialBean sb = new org.compiere.cti.SerialBean(1);
}
splash.dispose();
splash = null;
} // AMenu
private int m_WindowNo;
private Properties m_ctx = Env.getCtx();
private boolean m_startingItem = false;
/** The User */
private int m_AD_User_ID;
/** The Role */
private int m_AD_Role_ID;
/** Center Tabbed Pane index: Menu */
private int m_tabMenu = 0;
/** Center Tabbed Pane index: Activities */
private int m_tabActivities = 1;
/** Center Tabbed Pane index: Workflow */
private int m_tabWorkflow = 2;
// Links
private int m_request_Menu_ID = 0;
private int m_note_Menu_ID = 0;
private String m_requestSQL = null;
private DecimalFormat m_memoryFormat = DisplayType.getNumberFormat(DisplayType.Integer);
/** Logger */
private static CLogger log = CLogger.getCLogger(AMenu.class);
/**************************************************************************
* Init System.
* -- do not get Msg as environment not initialized yet --
* <pre>
* - Login - in not successful, exit
* </pre>
* @param splash splash window
*/
private void initSystem (Splash splash)
{
// Default Image
this.setIconImage(Compiere.getImage16());
// Focus Traversal
KeyboardFocusManager.setCurrentKeyboardFocusManager(AKeyboardFocusManager.get());
// FocusManager.getCurrentManager().setDefaultFocusTraversalPolicy(AFocusTraversalPolicy.get());
// this.setFocusTraversalPolicy(AFocusTraversalPolicy.get());
/**
* Show Login Screen - if not successful - exit
*/
log.finer("Login");
ALogin login = new ALogin(splash);
if (!login.initLogin()) // no automatic login
{
// Center the window
try
{
AEnv.showCenterScreen(login); // HTML load errors
}
catch (Exception ex)
{
log.severe(ex.toString());
}
if (!login.isConnected() || !login.isOKpressed())
AEnv.exit(1);
}
// Check DB (AppsServer Version checked in Login)
boolean dbOK = DB.isDatabaseOK(m_ctx);
// if (!dbOK)
// AEnv.exit(1);
} // initSystem
// UI
private CPanel mainPanel = new CPanel();
private BorderLayout mainLayout = new BorderLayout();
private CTabbedPane centerPane = new CTabbedPane();
private CPanel southPanel = new CPanel();
private BorderLayout southLayout = new BorderLayout();
private JMenuBar menuBar = new JMenuBar();
protected JProgressBar progressBar = new JProgressBar(0,100);
private CPanel infoPanel = new CPanel();
private CButton bNotes = new CButton();
private CButton bRequests = new CButton();
private GridLayout infoLayout = new GridLayout();
private JProgressBar memoryBar = new JProgressBar();
// Tabs
private PAPanel paPanel = null;
private VTreePanel treePanel = null;
private WFActivity wfActivity = null;
private WFPanel wfPanel = null;
/**
* Static Init.
* <pre>
* - mainPanel
* - centerPane
* - treePanel
* - wfActivity
* - wfPanel
* - southPanel
* - infoPanel
* - bNotes
* - bTask
* - memoryBar
* - wfPanel
* - progressBar
* </pre>
* @throws Exception
*/
void jbInit() throws Exception
{
this.setName("Menu");
this.setLocale(Language.getLoginLanguage().getLocale());
this.setJMenuBar(menuBar);
//
mainPanel.setLayout(mainLayout);
mainLayout.setHgap(0);
mainLayout.setVgap(2);
//
treePanel.addPropertyChangeListener(VTreePanel.NODE_SELECTION, this);
//
infoPanel.setLayout(infoLayout);
infoLayout.setColumns(2);
infoLayout.setHgap(4);
infoLayout.setVgap(0);
// bNotes.setRequestFocusEnabled(false);
bNotes.setToolTipText("");
bNotes.setActionCommand("Notes");
bNotes.addActionListener(this);
bNotes.setIcon(Env.getImageIcon("GetMail24.gif"));
bNotes.setMargin(new Insets(0, 0, 0, 0));
// bRequests.setRequestFocusEnabled(false);
bRequests.setActionCommand("Requests");
bRequests.addActionListener(this);
bRequests.setIcon(Env.getImageIcon("Request24.gif"));
bRequests.setMargin(new Insets(0, 0, 0, 0));
//
southLayout.setHgap(0);
southLayout.setVgap(1);
//
memoryBar.setStringPainted(true);
memoryBar.setOpaque(false);
memoryBar.setBorderPainted(false);
memoryBar.addMouseListener(new AMenu_MouseAdapter());
//
progressBar.setStringPainted(true);
progressBar.setOpaque(false);
//
getContentPane().add(mainPanel);
mainPanel.add(centerPane, BorderLayout.CENTER);
mainPanel.add(southPanel, BorderLayout.SOUTH);
mainPanel.add(Box.createHorizontalStrut(3), BorderLayout.EAST);
mainPanel.add(Box.createHorizontalStrut(3), BorderLayout.WEST);
// Tabs
paPanel = PAPanel.get();
if (paPanel != null && Ini.isPropertyBool(Ini.P_DASHBOARDFIRST))
{
centerPane.add(paPanel, Msg.getMsg(m_ctx, "PAPanel"));
m_tabMenu++;
m_tabActivities++;
m_tabWorkflow++;
}
centerPane.add(treePanel, Msg.getMsg(m_ctx, "Menu"));
centerPane.add(new CScrollPane(wfActivity), Msg.getMsg (m_ctx, "WorkflowActivities") + ": 0");
centerPane.add(new CScrollPane(wfPanel), Msg.getMsg (m_ctx, "WorkflowPanel"));
if (paPanel != null && !Ini.isPropertyBool(Ini.P_DASHBOARDFIRST))
{
centerPane.add(paPanel, Msg.getMsg(m_ctx, "PAPanel"));
}
centerPane.addChangeListener (this);
//
southPanel.setLayout(southLayout);
southPanel.add(infoPanel, BorderLayout.NORTH);
southPanel.add(progressBar, BorderLayout.SOUTH);
//
infoPanel.add(bNotes, null);
infoPanel.add(bRequests, null);
infoPanel.add(memoryBar, null);
//
int loc = Ini.getDividerLocation();
if (loc > 0)
treePanel.setDividerLocation(loc);
} // jbInit
/**
* Get Preferred Size
* @return preferred Size
*/
public Dimension getPreferredSize()
{
Dimension dim = Ini.getWindowDimension(0);
if (dim == null)
dim = new Dimension (350, 500);
return dim;
} // getPreferredSize
/**
* Create Menu
*/
private void createMenu()
{
// File
JMenu mFile = AEnv.getMenu("File");
menuBar.add(mFile);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -