Class Main
- java.lang.Object
-
- java.lang.ThreadGroup
-
- de.desy.mst.libs.framework.mstapp.Main
-
- All Implemented Interfaces:
IProgress
,ISetMessage
,java.lang.Thread.UncaughtExceptionHandler
public final class Main extends java.lang.ThreadGroup implements IProgress, ISetMessage
The main routine of all standard MSTApp's. It is the main threadgroup. It is responsible for all application life operations like: + Start of application + Base handling of input arguments + end of application It handles "uncaughtException"s in a standard way. Please do not leave this threadgroup in the ancestor chain for new threads. Warum soll Main das Hauptprogramm sein? - uncaughtException handling - Initialisierungschoreographie mit flash, frameMain und Init an einer Stelle. Insbesondere ist hier fuer MultiThreading ein guter Ansatzpunkt, falls Anwendungen lange Initialisierungen haben sollten. Probleme dadurch: - komplizierteres Handling - die MstFrameMain Unterklasse kann erst zur Laufzeit und nicht zur Kompilierzeit erkannt werden. Laufzeitfehler sind unangenehmer als Kompilierzeitfehler.- Version:
- Mar 8, 2005
- Author:
- schuette
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Main.MSTWebUsageSettings
full threadsafe place to steer mstweb usage including defaulting
-
Field Summary
Fields Modifier and Type Field Description static long
_APPSTART
static Main.MSTWebUsageSettings
mstwebUsageSettings
-
Constructor Summary
Constructors Constructor Description Main(java.lang.String name)
Constructs a new thread group.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static java.lang.String
calcAnnotatedTitle(java.lang.String rawTitle)
Sekundaere Fenster der Applikation sollen eindeutig einer Applikation mit einem spezifischen Lauf zugeordnet werden koennen (sekundaere Frames schweben normalerweise ziemlich unverbunden zu der zugehoerigen Applikation herum)static void
centerToMstFrameMain(java.awt.Window wnd)
best guess of MstFrameMain of this appstatic boolean
deRegisterForOnExit(IOnExit iOnExit)
static void
exit()
Applikation wird programmatisch und korrekt beended (mit logging etc.)static void
exit(int status)
Applikation wird programmatisch und korrekt beended (mit logging etc.)
status == 0 heisst okstatic void
exit(int status, java.lang.Throwable throwable)
Applikation wird programmatisch und korrekt beended (mit logging etc.)
status == 0 heisst ok falls throwable nicht null wird der crashscreen angezeigtstatic java.awt.Image
getAppImage()
best guess only, try to get hold of the one from the MstFrameMainstatic ApplicationInfo
getApplicationInfo()
Deprecated.static java.lang.String
getAppName()
static java.util.concurrent.ExecutorService
getExecutorService()
Zentraler MstApp Thread Poolstatic MstFrameMain
getLastCreatedFrame()
Deprecated.static java.lang.String
getLookAndFeel()
MasterMgrForIniFiles
getMasterMgrForIniFiles()
MessageMgr
getMessageMgr()
static ParamDecoder
getStartParameter()
Deprecated.static boolean
hasApplicationInfo()
static void
main(java.lang.String... args)
THE MAIN ENTRY TO MstApp's is here.void
onExit()
Deprecated.void
onExit(int status)
Deprecated.void
onProgress(Progress progress)
darf von jedem beliebigen Thread aufgerufen werdenstatic void
registerForOnExit(IOnExit iOnExit)
alle registrierten IOnExits werden kurz vor Ende der Applikationslaufzeit aufgerufenint
reserveFlashScreen(boolean b)
darf von jedem beliebigen Thread aufgerufen werdenstatic void
setLookAndFeel(java.lang.String lookAndFeel)
Ganz am anfang setzen, null == default look and feelvoid
setMessage(Message message)
Fuer das weiterleiten wichtiger Nachrichten an den Benutzer ohne einen MessageMgr aufzumachen.static void
setStartParameter(ParamDecoder startParameter)
Deprecated.static void
startMSTApp(java.lang.String mstFrameMainName, java.lang.String... args)
static void
startMSTApp(java.lang.String mstFrameMainName, java.lang.String appName, java.lang.String maschinenName, java.lang.String[] userParameter)
Wunsch Josef Wilgen vom 22.11.2007
Parameter siehe Main.main(String ...static void
startMSTAppAndHackMyClassname(java.lang.String[] args)
Deprecated.benutze Main.main(args) oder Main.startMSTApp(thisClassName, args);static void
updateLookAndFeelComponentTree(java.awt.Component component)
ReBa proposed enhancement against the Mac JCombo dilemma
not automatically used: it kills ca.-
Methods inherited from class java.lang.ThreadGroup
activeCount, activeGroupCount, allowThreadSuspension, checkAccess, destroy, enumerate, enumerate, enumerate, enumerate, getMaxPriority, getName, getParent, interrupt, isDaemon, isDestroyed, list, parentOf, resume, setDaemon, setMaxPriority, stop, suspend, toString, uncaughtException
-
-
-
-
Field Detail
-
_APPSTART
public static final long _APPSTART
-
mstwebUsageSettings
public static final Main.MSTWebUsageSettings mstwebUsageSettings
-
-
Constructor Detail
-
Main
public Main(java.lang.String name)
Constructs a new thread group. The parent of this new group is the thread group of the currently running thread.The
checkAccess
method of the parent thread group is called with no arguments; this may result in a security exception.- Parameters:
name
- the name of the new thread group.- Throws:
java.lang.SecurityException
- if the current thread cannot create a thread in the specified thread group.- Since:
- JDK1.0
- See Also:
ThreadGroup.checkAccess()
-
-
Method Detail
-
main
public static final void main(java.lang.String... args)
THE MAIN ENTRY TO MstApp's is here. Please supply a valid MstFrameMain class name.- Parameters:
args
-- full qualified mstFrameMainName (inklusive Paketname)
- optionale Parameter folgen:
- ApplikationsName
- Maschine z.B. "PE"
- Weitere Parameter sind Applikations Entwickler Parameter und können mit aus dem Entwicklerframe mit getMstApp().getStartParameter().userParameter(int index) index = 0, 1, ... wieder geholt werden.
-
startMSTApp
public static final void startMSTApp(java.lang.String mstFrameMainName, java.lang.String appName, java.lang.String maschinenName, java.lang.String[] userParameter)
Wunsch Josef Wilgen vom 22.11.2007
Parameter siehe Main.main(String ... args)
-
startMSTApp
public static final void startMSTApp(java.lang.String mstFrameMainName, java.lang.String... args)
- Parameters:
mstFrameMainName
- name of the MstFrameMain class with packagename included like "de.desy.mst.mstapp.MstFrameMain"args
- Start Parameters of the Program other than mstFrameName Sie sind optional. UserParameter kommen nach ApplikationsName und Maschine
-
startMSTAppAndHackMyClassname
@Deprecated public static final void startMSTAppAndHackMyClassname(java.lang.String[] args)
Deprecated.benutze Main.main(args) oder Main.startMSTApp(thisClassName, args);- Parameters:
args
- startup Parameter der Applikation ohne Klassennamen oder null
-
getAppName
public static final java.lang.String getAppName()
-
hasApplicationInfo
public static final boolean hasApplicationInfo()
-
getApplicationInfo
@Deprecated public static final ApplicationInfo getApplicationInfo()
Deprecated.
-
getLastCreatedFrame
@Deprecated public static final MstFrameMain getLastCreatedFrame()
Deprecated.nur zum testen!!!
-
centerToMstFrameMain
public static void centerToMstFrameMain(java.awt.Window wnd)
best guess of MstFrameMain of this app
-
setStartParameter
@Deprecated public static final void setStartParameter(ParamDecoder startParameter)
Deprecated.nur zum testen!!!
-
getStartParameter
@Deprecated public static final ParamDecoder getStartParameter()
Deprecated.nur zum testen!!!
-
getExecutorService
public static java.util.concurrent.ExecutorService getExecutorService()
Zentraler MstApp Thread Pool
-
getLookAndFeel
public static java.lang.String getLookAndFeel()
-
setLookAndFeel
public static void setLookAndFeel(java.lang.String lookAndFeel)
Ganz am anfang setzen, null == default look and feel
-
updateLookAndFeelComponentTree
public static void updateLookAndFeelComponentTree(java.awt.Component component)
ReBa proposed enhancement against the Mac JCombo dilemma
not automatically used: it kills ca. 1/3 of mstApp applications on XP
-
exit
public static final void exit()
Applikation wird programmatisch und korrekt beended (mit logging etc.)
-
exit
public static final void exit(int status)
Applikation wird programmatisch und korrekt beended (mit logging etc.)
status == 0 heisst ok
-
exit
public static final void exit(int status, java.lang.Throwable throwable)
Applikation wird programmatisch und korrekt beended (mit logging etc.)
status == 0 heisst ok falls throwable nicht null wird der crashscreen angezeigt
-
onExit
@Deprecated public final void onExit()
Deprecated.use Main.exit()
-
onExit
@Deprecated public final void onExit(int status)
Deprecated.use Main.exit(status)
-
registerForOnExit
public static final void registerForOnExit(IOnExit iOnExit)
alle registrierten IOnExits werden kurz vor Ende der Applikationslaufzeit aufgerufen
-
deRegisterForOnExit
public static final boolean deRegisterForOnExit(IOnExit iOnExit)
- Returns:
- true if this list contained the specified element.
-
onProgress
public final void onProgress(Progress progress)
Description copied from interface:IProgress
darf von jedem beliebigen Thread aufgerufen werden- Specified by:
onProgress
in interfaceIProgress
-
reserveFlashScreen
public int reserveFlashScreen(boolean b)
Description copied from interface:IProgress
darf von jedem beliebigen Thread aufgerufen werden- Specified by:
reserveFlashScreen
in interfaceIProgress
- Parameters:
b
- == true: genau eine Reservierung
b == false: gibt genau eine Reservierung frei
Muss erst mit genau einem true und dann mit genau einem false pro Reservierung aufgerufen werden. Neue Reservierungen duerfen nur im Zustand != 0 gemacht werden, also rechtzeitig.- Returns:
- Zahl der offenen Reservationen
-
setMessage
public final void setMessage(Message message)
Description copied from interface:ISetMessage
Fuer das weiterleiten wichtiger Nachrichten an den Benutzer ohne einen MessageMgr aufzumachen.
Typisches Beispiel: No IniFile
- Dies kann ok sein, dann sollte man den Benutzer mit der Nachricht in seinem Fluss nicht unterbrechen.
- Dies kann aber auch toetlich fuer die Anwendung sein, dann sollte es zumindest sichtbar sein.
- Specified by:
setMessage
in interfaceISetMessage
-
getMessageMgr
public final MessageMgr getMessageMgr()
- Returns:
- Returns the messageMgr != null and unique
-
getMasterMgrForIniFiles
public final MasterMgrForIniFiles getMasterMgrForIniFiles()
- Returns:
- Returns the iniFileMgr never null and unique.
-
calcAnnotatedTitle
public static java.lang.String calcAnnotatedTitle(java.lang.String rawTitle)
Sekundaere Fenster der Applikation sollen eindeutig einer Applikation mit einem spezifischen Lauf zugeordnet werden koennen (sekundaere Frames schweben normalerweise ziemlich unverbunden zu der zugehoerigen Applikation herum)- Parameters:
rawTitle
-- Returns:
- Frame Titel mit rawTitle, Applikations Namen und RunId
-
getAppImage
public static java.awt.Image getAppImage()
best guess only, try to get hold of the one from the MstFrameMain
-
-