de.bsvrz.sys.funclib.application
Class SimpleApplicationGUI

java.lang.Object
  extended by de.bsvrz.sys.funclib.application.SimpleApplicationGUI

public abstract class SimpleApplicationGUI
extends Object

Diese abstrakte Klasse stellt eine grafische Benutzeroberfläche zum ausführen von Klassen zur Verfügung. Die Klasse stellt ein Menu und ein Fenster, das Fehler und Logs darstellt, zur Verfügung. Das Menu erlaubt dem Benutzer die Logs zu speichern und das Programm zu beenden. Der Benutzer kann eigene Fenster in die Oberfläche integrieren, indem er Methoden dieser Klasse überschreibt, falls er die Klassen nicht überschreibt wird ein Standardfenster zur Verfügung gestellt.

Der Benutzer kann mehrere Aufrufparamter übergeben, die ausgewertet werden:
-gui= ja/nein (soll die grafische Benutzeroberfläche angezeigt werden)
-prozessname= Klasse, die ausgeführt werden soll
-arbeitsverzeichnis= Arbeitsverzeichnis, das genutzt werden soll

Author:
Kappich Systemberatung

Nested Class Summary
private static class SimpleApplicationGUI.StreamReaderThread
          Diese Klasse stellt einen Stream in einem dafür vorgesehenem Fenster dar.
 
Field Summary
private  String _className
          Klasse, die gestartet wird
private  String _clearDebugLogText
           
private  String _clearErrorLogText
           
private  JTextArea _debugTextArea
          In diesem Fenster werden alle DEbugausgaben dargestellt
private  Thread _debugThread
          Gibt Debugmessages aus
private  String _endText
           
private  JTextArea _errorTextArea
          In diesem Fenster werden alle "Standart Error Messages" dargestellt
private  Thread _errorThread
          Gibt Errormessages aus
private  File _fileChooserDirectory
          Speichert das zuletzt gewählte Verzeichnis in einem FileChooser
(package private) static Font _font
          Font für Logs
private  JPanel _legendPanel
          Dieses Fenster wird in der historie angezeigt und erscheint zwischen den beiden Logos auf der linken Seite
private  JFrame _mainFrame
          Panel, das alle Componenten enthält, die angezeigt werden sollen
private  JMenuBar _menuBar
          Menu, das vom Anwender der abstrakten Klasse modifiziert werden kann
private  String[] _modifiedArgumentlist
          Argumentliste, die in der start-Methode übergeben wurde, es fehlen die Argumente:
-gui
-prozessname
-arbeitsverzeichnis
private  Process _process
          Prozess, der das Script ausführt
private  String[] _processArguments
          Speichert die Argumente, mit denen der Prozoess aufgerufen wurde
private  String[] _processEnvironment
          Speichert die Umgebungsvariablen, mit denen der Prozoess aufgerufen wurde
private  File _processWorkingDirectory
          Speichert das Arbeitsverzeichniss des Prozesses
private  String _saveDebugLogText
           
private  String _saveErrorLogText
           
(package private)  String _standardUserPanelButtonName
          Falls der StandardUserPanel benutzt wird, wird hier der Name des Buttons zum stoppen und neustarten des Prozesses festgelegt.
private  JPanel _userPanel
          Dieses Panel wird vom Benutzer zur Verfügung gestellt
 
Constructor Summary
protected SimpleApplicationGUI()
           
 
Method Summary
private  String[] cleanedArgumentArray(String[] argumentList)
          Diese Methode filtert aus einer Argumentenliste alle Einträge heraus, die null sind und gibt ein bereinigtes Array zurück.
private  JMenu createHelpMenuEntry()
           
 JPanel createLegendPanel()
          Dieses Panel wird auf der linken Seite der Oberfläche dargestellt.
 JPanel createUserPanel()
          Diese Methode wird aufgerufen, wenn der Benutzer kein eigenes Panel benutzen möchte.
 void endProcess()
          Diese Methode wird aufgerufen, falls ein Prozess beendet werden soll.
 String[] getArguments()
          Diese Methode gibt eine überarbeitete Argumentliste zurück.
 Process getProcess()
          Der Aufruf dieser Methode gibt den Prozess zurück, der derzeit ausgeführt wird.
 JMenu[] newMenuEntries()
          Diese Methode gibt ein Array mit neuen Menueinträgen zurück.
 void processScript(String[] arguments, String[] environment, File workingDirectory)
          Diese Methode erzeugt einen Prozess, der ausgeführt wird.
private  void saveLog(File file, String log)
          Diese Methode speichert einen übergebenen String in eine Datei, die ebenfalls übergeben wird
 void showAboutBox()
          Diese Methode zeigt ein "Über" Fenster als JFrame.
private  void showGUI()
          Stellt die GUI dar
private  void showHelp()
          Zeigt eine Hilfedatei(HTML) an
 void start(String[] args, boolean startProcess)
          Diese Methode wertet die übergebenen Argumente aus und zeigt falls gewünscht die Oberfläche an.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_font

static final Font _font
Font für Logs


_mainFrame

private final JFrame _mainFrame
Panel, das alle Componenten enthält, die angezeigt werden sollen


_menuBar

private final JMenuBar _menuBar
Menu, das vom Anwender der abstrakten Klasse modifiziert werden kann


_userPanel

private JPanel _userPanel
Dieses Panel wird vom Benutzer zur Verfügung gestellt


_legendPanel

private JPanel _legendPanel
Dieses Fenster wird in der historie angezeigt und erscheint zwischen den beiden Logos auf der linken Seite


_debugTextArea

private JTextArea _debugTextArea
In diesem Fenster werden alle DEbugausgaben dargestellt


_errorTextArea

private JTextArea _errorTextArea
In diesem Fenster werden alle "Standart Error Messages" dargestellt


_process

private Process _process
Prozess, der das Script ausführt


_errorThread

private Thread _errorThread
Gibt Errormessages aus


_debugThread

private Thread _debugThread
Gibt Debugmessages aus


_saveErrorLogText

private final String _saveErrorLogText
See Also:
Constant Field Values

_saveDebugLogText

private final String _saveDebugLogText
See Also:
Constant Field Values

_clearErrorLogText

private final String _clearErrorLogText
See Also:
Constant Field Values

_clearDebugLogText

private final String _clearDebugLogText
See Also:
Constant Field Values

_endText

private final String _endText
See Also:
Constant Field Values

_fileChooserDirectory

private File _fileChooserDirectory
Speichert das zuletzt gewählte Verzeichnis in einem FileChooser


_processArguments

private String[] _processArguments
Speichert die Argumente, mit denen der Prozoess aufgerufen wurde


_processEnvironment

private String[] _processEnvironment
Speichert die Umgebungsvariablen, mit denen der Prozoess aufgerufen wurde


_processWorkingDirectory

private File _processWorkingDirectory
Speichert das Arbeitsverzeichniss des Prozesses


_className

private String _className
Klasse, die gestartet wird


_standardUserPanelButtonName

final String _standardUserPanelButtonName
Falls der StandardUserPanel benutzt wird, wird hier der Name des Buttons zum stoppen und neustarten des Prozesses festgelegt.

See Also:
Constant Field Values

_modifiedArgumentlist

private String[] _modifiedArgumentlist
Argumentliste, die in der start-Methode übergeben wurde, es fehlen die Argumente:
-gui
-prozessname
-arbeitsverzeichnis

Constructor Detail

SimpleApplicationGUI

protected SimpleApplicationGUI()
Method Detail

processScript

public final void processScript(String[] arguments,
                                String[] environment,
                                File workingDirectory)
                         throws IOException
Diese Methode erzeugt einen Prozess, der ausgeführt wird. Alle Ausgaben werden in der Oberfläche dargestellt. Falls bereits ein Prozess existiert, wird dieser abgebrochen endProcess() und ein neuer Prozess erzeugt. Der neue Prozess benutzt die übergebenen Parameter.

Parameters:
arguments - Übergabeparameter, die benutzt werden sollen oder null
environment - Umgebungsvariablen oder null
workingDirectory - Arbeitsverzeichnis oder null
Throws:
IOException - siehe Process Fehlerbeschreibung

start

public final void start(String[] args,
                        boolean startProcess)
Diese Methode wertet die übergebenen Argumente aus und zeigt falls gewünscht die Oberfläche an. Der zu startende Prozess kann entweder sofort gestartet werden oder aber erst später. Falls der Prozess nicht sofort gestartet wird, weil zum Beispiel auf eine Eingabe des Benutzer gewartet wird, muss der Prozess durch den Aufruf processScript(java.lang.String[], java.lang.String[], java.io.File) gestartet werden.

Parameters:
args - Argumente, mit denen der Prozess gestartet werden soll. Die Argumente enthalten ausserdem die Information, ob die Oberfläche angezeigt werden soll oder nicht
startProcess - true = Der in den Argumenten festgelegte Prozess wird sofort gestartet; false = Der in den Argumenten festgelegte Prozess wird nicht gestartet und muss mit dem Aufruf processScript(java.lang.String[], java.lang.String[], java.io.File) gestartet werden

showGUI

private void showGUI()
Stellt die GUI dar


createLegendPanel

public JPanel createLegendPanel()
Dieses Panel wird auf der linken Seite der Oberfläche dargestellt. Wird diese Methode nicht überschrieben wird ein Standartpanel erzeugt.

Returns:
Panel, das auf der linken Seite der Oberfläche dargestellt wird

createUserPanel

public JPanel createUserPanel()
Diese Methode wird aufgerufen, wenn der Benutzer kein eigenes Panel benutzen möchte. Es wird das K2S Logo angezeigt und ein Button um den Prozess neu zu starten.

Returns:
Standard Panel, Funktionen s.o.

newMenuEntries

public JMenu[] newMenuEntries()
Diese Methode gibt ein Array mit neuen Menueinträgen zurück. Diese Einträge werden dann später in das bestehende Menu eingefügt. Die Menueinträge müssen komplett implementiert sein (Aktions, Shortcuts, usw.) da sie lediglich eingefügt und nicht mehr modifiziert werden.

Returns:
Menueinträge, die in ein bestehendes Menu eingefügt werden sollen

createHelpMenuEntry

private JMenu createHelpMenuEntry()

showHelp

private void showHelp()
Zeigt eine Hilfedatei(HTML) an


showAboutBox

public void showAboutBox()
Diese Methode zeigt ein "Über" Fenster als JFrame.


getProcess

public final Process getProcess()
Der Aufruf dieser Methode gibt den Prozess zurück, der derzeit ausgeführt wird. Wurde noch kein Prozess gestartet, wird null zurückgegeben.

Returns:
Prozess, der ausgeführt wird oder null falls noch kein Prozess gestartet wurde

endProcess

public void endProcess()
Diese Methode wird aufgerufen, falls ein Prozess beendet werden soll. Falls diese Methode überschrieben werden soll, muss zuerst der aktuelle Prozess mit getProcess() angefordert werden um das Objekt des aktuellen Prozzeses zu erhalten.


saveLog

private void saveLog(File file,
                     String log)
              throws IOException
Diese Methode speichert einen übergebenen String in eine Datei, die ebenfalls übergeben wird

Parameters:
file - Datei, in die geschrieben werden soll
log - Text, der geschrieben werden soll
Throws:
IOException

getArguments

public final String[] getArguments()
Diese Methode gibt eine überarbeitete Argumentliste zurück. Die überarbeitet Argumentliste ist dabei aus der Argumentliste entstanden, die in der Methode start(java.lang.String[], boolean) übergeben wurde. Es wurden folgende Argumente entfernt:
-gui
-prozessname
-arbeitsverzeichnis
Falls ein Prozess diese Argumentliste mit ArgumentList.fetchArgument(java.lang.String) bearbeitet, werden die Elemente aus der Liste entfernt und nicht wieder eingefügt, auch die enstehenden null Einträge bleiben in dieser Argumentliste bestehen!

Returns:
modifizierte Argumentliste

cleanedArgumentArray

private String[] cleanedArgumentArray(String[] argumentList)
Diese Methode filtert aus einer Argumentenliste alle Einträge heraus, die null sind und gibt ein bereinigtes Array zurück.

Parameters:
argumentList - Array mit Argumenten, es können ebenfalls Einträge null sein
Returns:
Array mit Argumenten, es gibt keine Einträge, die null sind