📄 aenv.java
字号:
}
b.setText(text);
} // setTextMnemonic
/**
* Get Mnemonic character from text.
* @param text text with "&"
* @return Mnemonic or 0
*/
public static char getMnemonic (String text)
{
int pos = text.indexOf("&");
if (pos != -1) // We have a nemonic
return text.charAt(pos+1);
return 0;
} // getMnemonic
/*************************************************************************/
/**
* Print Action and Input Map for component
*
* @param comp Component with ActionMap
*/
public static void printActionInputMap (JComponent comp)
{
int ll = 10; // log level
if (Log.getTraceLevel() < ll)
return;
//
Log.trace(ll-1, "ActionMap for Component", comp.toString());
ActionMap am = comp.getActionMap();
Object[] amKeys = am.allKeys(); // including Parents
for (int i = 0; i < amKeys.length; i++)
{
Action a = am.get(amKeys[i]);
StringBuffer sb = new StringBuffer("Name=");
sb.append(a.getValue(Action.NAME))
.append(", Acc=").append(a.getValue(Action.ACCELERATOR_KEY))
.append(", Mem=").append(a.getValue(Action.MNEMONIC_KEY))
.append(" - ").append(a.getValue(Action.SHORT_DESCRIPTION));
if (a.getValue(Action.ACTION_COMMAND_KEY) == null)
Log.trace(ll, a.toString());
else
Log.trace(ll, a.getValue(Action.ACTION_COMMAND_KEY).toString(),
sb.toString());
}
//
Log.trace(ll-1, "InputMap for Component ", comp.toString());
InputMap im = comp.getInputMap();
KeyStroke[] kStrokes = im.allKeys();
if (kStrokes != null)
{
for (int i = 0; i < kStrokes.length; i++)
{
Log.trace(ll, kStrokes[i].toString(),
im.get(kStrokes[i]).toString());
}
}
//
Log.trace(ll-1, "InputMap for Component When Focused ", comp.toString());
im = comp.getInputMap(JComponent.WHEN_FOCUSED);
kStrokes = im.allKeys();
if (kStrokes != null)
{
for (int i = 0; i < kStrokes.length; i++)
{
Log.trace(ll, kStrokes[i].toString(),
im.get(kStrokes[i]).toString());
}
}
Log.trace(ll-1, "InputMap for Component When Focused in Window", comp.toString());
im = comp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
kStrokes = im.allKeys();
if (kStrokes != null)
{
for (int i = 0; i < kStrokes.length; i++)
{
Log.trace(ll, kStrokes[i].toString(),
im.get(kStrokes[i]).toString());
}
}
Log.trace(ll-1, "InputMap for Component When Ancestor ", comp.toString());
im = comp.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
kStrokes = im.allKeys();
if (kStrokes != null)
{
for (int i = 0; i < kStrokes.length; i++)
{
Log.trace(ll, kStrokes[i].toString(),
im.get(kStrokes[i]).toString());
}
}
} // printActionInputMap
/*************************************************************************/
/**
* Exit System
* @param status System exit status (usually 0 for no error)
*/
public static void exit (int status)
{
if (s_server != null)
{
try
{
s_server.remove();
}
catch (Exception ex)
{
}
}
Env.exitEnv(status);
} // exit
/*************************************************************************/
/** Server Re-tries */
private static int s_serverTries = 0;
/** Server Session */
private static Server s_server = null;
/**
* Is AppsServer Active ?
* @return true if active
*/
public static boolean isServerActive()
{
boolean ok = CConnection.get().isAppsServerOK(false);
if (ok)
{
s_serverTries = 0;
return true;
}
if (s_serverTries > 2)
return false;
// Try to connect
Logger root = Logger.getRootLogger();
Level level = root.getLevel();
root.setLevel(Level.OFF);
try
{
s_serverTries++;
Log.trace(Log.l3_Util, "AEnv.isServerActive - try #" + s_serverTries);
ok = CConnection.get().isAppsServerOK(true);
}
catch (Exception ex)
{
ok = false;
s_server = null;
}
Logger.getRootLogger().setLevel(level);
//
return ok;
} // isServerActive
/**
* Get Server Version
* @return Apps Server Version
* @see ALogin#checkVersion
*/
public static String getServerVersion ()
{
return CConnection.get().getServerVersion();
} // getServerVersion
/**
* Get Server
* @return Server
*/
private static Server getServer()
{
if (s_server == null)
{
try
{
InitialContext ic = CConnection.get().getInitialContext (true);
ServerHome serverHome = (ServerHome)ic.lookup (ServerHome.JNDI_NAME);
if (serverHome != null)
s_server = serverHome.create();
}
catch (Exception ex)
{
Log.error("AEnv.getServer", ex);
}
}
return s_server;
} // getServer
/**
* Get Window Model
*
* @param WindowNo Window No
* @param AD_Window_ID window
* @param AD_Menu_ID menu
* @return Model Window Value Obkect
*/
public static MWindowVO getMWindowVO (int WindowNo, int AD_Window_ID, int AD_Menu_ID)
{
Log.trace(Log.l2_Sub, "AEnv.getWindowVO", "Window=" + WindowNo + ", AD_Window_ID=" + AD_Window_ID);
MWindowVO mWindowVO = null;
// try to get from Server when enabled
if (Ini.getPropertyBool(Ini.P_OBJECTS) && isServerActive())
{
Log.trace(Log.l3_Util, "AEnv.getWindowVO", "trying server");
try
{
Server server = getServer();
if (server != null)
{
mWindowVO = server.getWindowVO(Env.getCtx(), WindowNo, AD_Window_ID, AD_Menu_ID);
Log.trace(Log.l3_Util, "AEnv.getWindowVO", "from Server: success");
}
}
catch (RemoteException e)
{
Log.error("AEnv.getWindowVO (RE) " + e);
mWindowVO = null;
s_server = null;
}
catch (Exception e)
{
Log.error("AEnv.getWindowVO " + e);
mWindowVO = null;
s_server = null;
}
catch (Throwable t)
{
Log.error("AEnv.getWindowVO - " + t);
mWindowVO = null;
s_server = null;
}
}
// Create Window Model on Client
if (mWindowVO == null)
{
Log.trace(Log.l3_Util, "AEnv.getWindowVO", "create local");
mWindowVO = MWindowVO.create (Env.getCtx(), WindowNo, AD_Window_ID, AD_Menu_ID);
}
// Check (remote) context
else if (!mWindowVO.ctx.equals(Env.getCtx()))
{
// Remote Context is called by value, not reference
// Add Window properties to context
Enumeration keyEnum = mWindowVO.ctx.keys();
while (keyEnum.hasMoreElements())
{
String key = (String)keyEnum.nextElement();
if (key.startsWith(WindowNo+"|"))
{
String value = mWindowVO.ctx.getProperty (key);
Env.setContext(Env.getCtx(), key, value);
}
}
// Sync Context
mWindowVO.setCtx(Env.getCtx());
}
return mWindowVO;
} // getWindow
/**
* Post Immediate
*
* @param WindowNo window
* @param AD_Table_ID Table ID of Document
* @param AD_Client_ID Client ID of Document
* @param Record_ID Record ID of this document
* @param force force posting
* @return true if success
*/
public static boolean postImmediate (int WindowNo, int AD_Client_ID, int AD_Table_ID, int Record_ID, boolean force)
{
Log.trace(Log.l2_Sub, "AEnv.postImmediate", "Window=" + WindowNo + ", AD_Table_ID=" + AD_Table_ID + "/" + Record_ID);
Boolean result = null;
String msg = null;
// try to get from Server when enabled
if (isServerActive())
{
Log.trace(Log.l3_Util, "AEnv.postImmediate", "trying server");
try
{
Server server = getServer();
if (server != null)
{
result = new Boolean (server.postImmediate(AD_Table_ID, AD_Client_ID, Record_ID, force));
Log.trace(Log.l3_Util, "AEnv.postImmediate", "from Server: success");
}
else
{
ADialog.error(WindowNo, null, "NoAppsServer", msg);
return false;
}
}
catch (RemoteException e)
{
Log.error("AEnv.postImmediate (RE)", e);
msg = e.getMessage();
result = null;
s_server = null;
}
catch (Exception e)
{
Log.error("AEnv.postImmediate", e);
msg = e.getMessage();
result = null;
s_server = null;
}
}
else
{
ADialog.error(WindowNo, null, "NoAppsServer", msg);
return false;
}
if (result == null)
{
ADialog.error(WindowNo, null, "PostServerError", msg);
return false;
}
return result.booleanValue();
} // postImmediate
} // AEnv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -