Class 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
    • 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 app
      static 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 ok
      static 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
      static java.awt.Image getAppImage()
      best guess only, try to get hold of the one from the MstFrameMain
      static ApplicationInfo getApplicationInfo()
      Deprecated.
      static java.lang.String getAppName()  
      static java.util.concurrent.ExecutorService getExecutorService()
      Zentraler MstApp Thread Pool
      static 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 werden
      static void registerForOnExit​(IOnExit iOnExit)
      alle registrierten IOnExits werden kurz vor Ende der Applikationslaufzeit aufgerufen
      int reserveFlashScreen​(boolean b)
      darf von jedem beliebigen Thread aufgerufen werden
      static void setLookAndFeel​(java.lang.String lookAndFeel)
      Ganz am anfang setzen, null == default look and feel
      void 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • _APPSTART

        public static final long _APPSTART
    • 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 interface IProgress
      • reserveFlashScreen

        public int reserveFlashScreen​(boolean b)
        Description copied from interface: IProgress
        darf von jedem beliebigen Thread aufgerufen werden
        Specified by:
        reserveFlashScreen in interface IProgress
        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 interface ISetMessage