edu.bonn.xulu.gui
Class XuluGUIUtil

java.lang.Object
  extended by edu.bonn.xulu.gui.XuluGUIUtil
All Implemented Interfaces:
XuluConstants

public class XuluGUIUtil
extends Object
implements XuluConstants

Diese Klasse stellt Funktionen fuer die Xulu-GUI zur Verfuegung.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Field Summary
 
Fields inherited from interface edu.bonn.xulu.appl.XuluConstants
BUG_MAIL_ADDR, EXTENTION_BUNDLE, ICONS_DIR, LOCALES_BASE, RESOURCE_DIR, SWING_RES, VERSION, VERSION_DATE, XULU_ICON, XULU_INFOICON, XULU_STARTICON, XULU_VIS_RES, XULUERR_RES, XULUGUI_RES
 
Constructor Summary
XuluGUIUtil()
           
 
Method Summary
static Class<XuluModel> askModelClass(XuluModellingPlatform appl, boolean askIfClear)
          Fragt eine der in der Xulu-Registry geladenen Modell-Klassen ab.
static ModelControlFrame askModelFrame(XuluModellingPlatform appl, boolean askIfClear)
          Fragt eines der in Xulu geladenen Modelle ab.
static Object convertImportSourceAsNeeded(ImportFactory fac, Object givenSource)
          Konvertiert ein durch die Plattform zur Verfuegung gestelltes Objekt in ein Objekt, das von der Factory angefordert wird.
static void createNewDynamicModel(Component parent, XuluModellingPlatform appl)
          Ermittelt alle geladenen Modelle aus dem Xulu-Datenpool und gibt sie dem Anwender zur Auswahl.
static void createNewModel(Component parent, Class modelClass, String modelName, XuluModellingPlatform appl)
          Erzeugt ein neues Model aus einem übergebenen Modellklassennamen und einer Modelbezeichnung
static void createNewModel(Component parent, XuluModellingPlatform appl)
          Ermittelt alle registrierten Modelle aus der Xulu-Registry und gibt sie dem Anwender zur Auswahl.
static Object[][] determineObjectsFromDataPool(Object type, DataPool dataPool)
          Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus dem Xulu-Datenpool, die zu einer Klasse (oder Ressource) passen.
static void determineObjectsFromDataPool(Object type, DataPool dataPool, Vector objects, Vector<String> names)
          Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus dem Xulu-Datenpool, die zu einer Klasse (oder Ressource) passen.
static void determineObjectsFromList(Object type, Enumeration objList, Vector objects, Vector<String> names, String namePrefix)
          Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus einer Liste, die zu einer Klasse (oder Ressource) passen.
static void exportObjects(Component parent, Object object, ExportFactory fac, XuluModellingPlatform appl)
          Exportiert ein Objekt ueber eine ExportFactory.
static void exportObjectsToFiles(Component parent, Object object, ExportFactory fac, XuluModellingPlatform appl)
          Exportiert ein Objekt ueber eine ExportFactory.
static Object[] importObjects(Component parent, ImportFactory fac, XuluModellingPlatform appl)
          Importiert Objekte ueber eine ImportFactory.
static Object[] importObjectsFromFiles(Component parent, ImportFactory fac, XuluModellingPlatform appl)
          Importiert Objekte ueber eine ImportFactory.
static void importObjectsFromFileToDataPool(Component parent, ImportFactory fac, XuluModellingPlatform appl)
          Importiert ein oder mehrere Objekte ueber eine ImportFactory und fuegt sie in den Xulu-Datenpool ein.
static void importObjectsToDataPool(Component parent, ImportFactory fac, XuluModellingPlatform appl)
          Importiert ein oder mehrere Objekte ueber eine ImportFactory und fuegt sie in den Xulu-Datenpool ein.
static void insertObjectsToDataPool(Component parent, Object[] object, DataPool pool)
          Fuegt eine Anzahl an Objekten in den Xulu-Datenpool ein.
static boolean insertObjectToDataPool(Component parent, Object object, DataPool pool, boolean partOfMultipleInsert, boolean autoSkipDupl)
          Fuegt ein Objekt in den Xulu-Datenpool ein.
static void performScriptInThread(XuluModellingPlatform appl, ScriptInterpreter.ScriptExecutionDefinition scriptDef)
          Fuehrt ein Skript innerhalb der Xulu-Modelling-Platform aus.
static void performScriptInThread(XuluModellingPlatform appl, ScriptInterpreter interpreter)
          Fuehrt ein Skript innerhalb der Xulu-Modelling-Platform aus.
static void reloadModelClass(XuluModellingPlatform appl)
          Ermittelt alle Modell-Klassen aus der Xulu-Registry und stellt sie dem Anwender zur Auswahl.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XuluGUIUtil

public XuluGUIUtil()
Method Detail

askModelFrame

public static ModelControlFrame askModelFrame(XuluModellingPlatform appl,
                                              boolean askIfClear)
Fragt eines der in Xulu geladenen Modelle ab.

Parameters:
appl - Xulu-Instanz
askIfClear - Flag, ob der Dialog auch angezeigt werden soll, wenn nur ein einziges Modell geladen ist (die Auswahl also eindeutig ist)
Throws:
UnsupportedOperationException, - falls aktuell kein Modell in Xulu geladen ist

askModelClass

public static Class<XuluModel> askModelClass(XuluModellingPlatform appl,
                                             boolean askIfClear)
Fragt eine der in der Xulu-Registry geladenen Modell-Klassen ab.

Parameters:
appl - Xulu-Instanz
askIfClear - Flag, ob der Dialog auch angezeigt werden soll, wenn nur eine einzige Modell-Klasse geladen ist (die Auswahl also eindeutig ist)
Throws:
UnsupportedOperationException, - falls aktuell keine Modell-Klassen in Xulu registriert sind

importObjects

public static Object[] importObjects(Component parent,
                                     ImportFactory fac,
                                     XuluModellingPlatform appl)
                              throws Exception
Importiert Objekte ueber eine ImportFactory. Je nachdem welche Eingabequelle die Factory benoetigt, wird diese ueber einen passenden Anwender Dialog ermittelt. Zur Zeit werden folgende Verfahren unterstuetzt:

Artbenoetigte QuelleAblauf
Import aus Datei(en) File
File[]
InputStream
InputStream[]
FileInputStream
FileInputStream[]
Es wird ein Dateiauswahl-Dialog angezeigt, ueber den der Anwender eine Datei (bzw. mehrere, falls von der Factory gefordert) fuer den Datenimport bestimmt. Ggf. werden die ausgewaehlten Files noch in FileInputStream-Instanzen umgewandelt. (siehe importObjectsFromFiles(Component,ImportFactory,XuluModellingPlatform))

Parameters:
parent - aufrufende Komponente (kann null sein)
fac - fuer den Import zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Returns:
alle von der Factory erzeugten Objekte
Throws:
UnsupportedOperationException - falls fuer die von der Factory benoetigte Quelle (noch) kein Ablauf implementiert ist
Exception - falls ein unerwarteter Fehler beim Import auftritt

importObjectsFromFiles

public static Object[] importObjectsFromFiles(Component parent,
                                              ImportFactory fac,
                                              XuluModellingPlatform appl)
                                       throws Exception
Importiert Objekte ueber eine ImportFactory. Hierzu werden vom Anwender ueber einen Auswahl-Dialog Dateien als Import-Quelle ausgewahlt. Je nach von der Factory benoetigter Eingabequelle, werden diese in FileInputStreams umgewandelt.
Benoetigt die Factory nur eine Datei (bzw. einen InputStream) als Quelle, wird sie fuer jede vom Anwender ausgewaehlte Datei ausgefuehrt und entsprechend mehrere Objekte erzeugt.

Parameters:
parent - aufrufende Komponente (kann null sein)
fac - fuer den Import zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Returns:
alle von der Factory erzeugten Objekte
Throws:
UnsupportedOperationException - falls fuer die von der Factory benoetigte Quelle kein File, File[], InputStream oder InputStream[] ist.
Exception - falls ein unerwarteter Fehler beim Import auftritt

convertImportSourceAsNeeded

public static Object convertImportSourceAsNeeded(ImportFactory fac,
                                                 Object givenSource)
                                          throws Exception
Konvertiert ein durch die Plattform zur Verfuegung gestelltes Objekt in ein Objekt, das von der Factory angefordert wird.

Parameters:
fac - Import-Factory
givenSource - gegebenes Objekt
Throws:
Exception - falls eine Konvertierung nicht moeglich ist

insertObjectsToDataPool

public static void insertObjectsToDataPool(Component parent,
                                           Object[] object,
                                           DataPool pool)
Fuegt eine Anzahl an Objekten in den Xulu-Datenpool ein.

Parameters:
parent - aufrufende Komponente (kann null sein)
object - einzufuegende Objekte
pool - Datenpool in den die Objekte eingefuegt werden sollen
See Also:
insertObjectToDataPool(Component,Object,DataPool,boolean,boolean)

insertObjectToDataPool

public static boolean insertObjectToDataPool(Component parent,
                                             Object object,
                                             DataPool pool,
                                             boolean partOfMultipleInsert,
                                             boolean autoSkipDupl)
Fuegt ein Objekt in den Xulu-Datenpool ein. Fehler werden nicht durch eine Exception verarbeitet, sondern werden ueber eine Meldung dem Anwender mitgeteilt. Das Objekt wird in diesem Fall ignoriert und nicht in den Datenpool eingefuegt.

Parameters:
parent - aufrufende Komponente (kann null sein)
object - einzufuegendes Objekt
pool - Datenpool in den das Objekt eingefuegt werden sollen
partOfMultipleInsert - gibt an, dass die Einfuege-Operation Teil von mehreren Einfuegungen ist; in einem etwaigen Dialog kann der Anwender dann angeben, dass seine Auswahl auch fuer die Folge-Operationen verwendet werden soll
autoSkipDupl - gibt an, ob Duplikat-Fehler automatisch uebergangen werden sollen (ohne dass eine Fehlermeldung erscheint)
Returns:
false, falls die Einfuegung nicht vorgenommen werden konnte
Throws:
OperationCanceledException, - falls der Anwender in einem Konflikt-Dialog die "Abbrechen"-Auswahl getroffen hat (Folge-Einfuegungen sollten in diesem Fall nicht mehr durchgefuehrt werden!)
AlreadyHandledException, - falls der Anwender in einem Konflikt-Dialog die "Uebergehen"-Auswahl getroffen hat und diese Auswahl fuer alle Folge-Einfuegungen gemerkt werden soll

importObjectsToDataPool

public static void importObjectsToDataPool(Component parent,
                                           ImportFactory fac,
                                           XuluModellingPlatform appl)
                                    throws Exception
Importiert ein oder mehrere Objekte ueber eine ImportFactory und fuegt sie in den Xulu-Datenpool ein. Wie die Import-Quelle vom Anwender abgefragt wird, haengt von der Quellenanforderung der Factory ab. Entsprechend wird ein passender Ablauf gewahlt (siehe importObjects(Component,ImportFactory,XuluModellingPlatform)).
Fehler beim Import werden nicht durch eine Exception verarbeitet, sondern werden ueber eine Meldung dem Anwender mitgeteilt. Das betroffene Objekt wird in diesem Fall ignoriert und nicht in den Datenpool eingefuegt.

Parameters:
parent - aufrufende Komponente (kann null sein)
fac - fuer den Import zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Throws:
java.lang.XuluDataException - falls die Factory keine Objekte erzeugt, die im Datenpool verwaltet werden koennen
Exception
See Also:
importObjectsFromFiles(Component,ImportFactory,XuluModellingPlatform), insertObjectsToDataPool(Component,Object[],DataPool)

importObjectsFromFileToDataPool

public static void importObjectsFromFileToDataPool(Component parent,
                                                   ImportFactory fac,
                                                   XuluModellingPlatform appl)
                                            throws Exception
Importiert ein oder mehrere Objekte ueber eine ImportFactory und fuegt sie in den Xulu-Datenpool ein. Quelle fuer den Import bilden Dateien, die ueber einen Anwender-Dialog abgefragt werden. Fehler beim Import werden nicht durch eine Exception verarbeitet, sondern werden ueber eine Meldung dem Anwender mitgeteilt. Das betroffene Objekt wird in diesem Fall ignoriert und nicht in den Datenpool eingefuegt.

Parameters:
parent - aufrufende Komponente (kann null sein)
fac - fuer den Import zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Throws:
java.lang.XuluDataException - falls die Factory keine Objekte erzeugt, die im Datenpool verwaltet werden koennen
Exception
See Also:
importObjectsFromFiles(Component,ImportFactory,XuluModellingPlatform), insertObjectsToDataPool(Component,Object[],DataPool)

exportObjects

public static void exportObjects(Component parent,
                                 Object object,
                                 ExportFactory fac,
                                 XuluModellingPlatform appl)
                          throws Exception
Exportiert ein Objekt ueber eine ExportFactory. Je nachdem welches Ausgabe-Ziel die Factory benoetigt, wird dieses ueber einen passenden Anwender Dialog ermittelt. Zur Zeit werden folgende Verfahren unterstuetzt:

Artbenoetigtes ZielAblauf
Export in Datei(en) File
File[]
OutputStream
OutputStream[]
FileOutputStream
FileOutputStream[]
Es wird ein Dateiauswahl-Dialog angezeigt, ueber den der Anwender eine Datei (bzw. mehrere, falls von der Factory gefordert) fuer den Datenexport bestimmt. Ggf. werden die ausgewaehlten Files noch in FileOutputStream-Instanzen umgewandelt. (siehe exportObjectsToFiles(Component,Object,ExportFactory,XuluModellingPlatform))

Parameters:
parent - aufrufende Komponente (kann null sein)
object - zu exportierendes Objekt
fac - fuer den Export zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Throws:
UnsupportedOperationException - falls fuer die von der Factory benoetigte Quelle (noch) kein Ablauf implementiert ist
IllegalArgumentException - falls die Factory das angegebene Objekt nicht exportieren kann
Exception - falls ein unerwarteter Fehler beim Export auftritt

exportObjectsToFiles

public static void exportObjectsToFiles(Component parent,
                                        Object object,
                                        ExportFactory fac,
                                        XuluModellingPlatform appl)
                                 throws Exception
Exportiert ein Objekt ueber eine ExportFactory. Hierzu werden vom Anwender ueber einen Auswahl-Dialog Dateien als Export-Ziel ausgewahlt. Je nach von der Factory benoetigtem Ausgabe-Ziel, werden diese in FileOutputStreams umgewandelt.

Parameters:
parent - aufrufende Komponente (kann null sein)
fac - fuer den Export zu verwendende Factory
appl - Instanz der Xulu-Anwendung
Throws:
UnsupportedOperationException - falls fuer das von der Factory benoetigte Ziel kein File, File[], OutputStream oder OutputStream[] ist.
Exception - falls ein unerwarteter Fehler beim Export auftritt

createNewModel

public static void createNewModel(Component parent,
                                  XuluModellingPlatform appl)
Ermittelt alle registrierten Modelle aus der Xulu-Registry und gibt sie dem Anwender zur Auswahl. Von dem ausgewaehlten Modell-Typ wird eine neue Instanz erzeugt und ein entsprechender ModelControlFrame_Basic dem ModelControlManager hinzugefuegt.

Parameters:
parent - aufrufende Komponente (kann null sein)
appl - Instanz der Xulu-Anwendung

createNewModel

public static void createNewModel(Component parent,
                                  Class modelClass,
                                  String modelName,
                                  XuluModellingPlatform appl)
Erzeugt ein neues Model aus einem übergebenen Modellklassennamen und einer Modelbezeichnung

Parameters:
modelClass - Modellklasse
modelName - Modellbezeichnung

createNewDynamicModel

public static void createNewDynamicModel(Component parent,
                                         XuluModellingPlatform appl)
Ermittelt alle geladenen Modelle aus dem Xulu-Datenpool und gibt sie dem Anwender zur Auswahl. Von dem ausgewaehlten Modell wird ein entsprechender ModelControlFrame_Basic dem ModelControlManager hinzugefuegt.

Parameters:
parent - aufrufende Komponente (kann null sein)
appl - Instanz der Xulu-Anwendung

reloadModelClass

public static void reloadModelClass(XuluModellingPlatform appl)
Ermittelt alle Modell-Klassen aus der Xulu-Registry und stellt sie dem Anwender zur Auswahl. Die ausgewaehlte Klasse wird neu geladen, so dass fuer alle folgenden Instanzen dieser Klasse die aktualisierte Version verwendet wird.

Parameters:
appl - Xulu-Instanz

performScriptInThread

public static void performScriptInThread(XuluModellingPlatform appl,
                                         ScriptInterpreter interpreter)
Fuehrt ein Skript innerhalb der Xulu-Modelling-Platform aus. Hierzu wird das Skript ueber einen Datei-Eingabe-Dialog abgefragt und in einem eigenen Thread ausgefuehrt.
Waehrend der Ausfuehrung wird ein Status-Dialog angezeigt. Wird dieser durch den Anwender abgebrochen, wird die Skript-Ausfuehrung unmittelbar gestoppt.

Parameters:
appl - Applikation innerhalb der das Skript ausgefuehrt wird
interpreter - Interpreter, der das Skript ausfuehrt
See Also:
SwingWorker, StatusDialog

performScriptInThread

public static void performScriptInThread(XuluModellingPlatform appl,
                                         ScriptInterpreter.ScriptExecutionDefinition scriptDef)
Fuehrt ein Skript innerhalb der Xulu-Modelling-Platform aus. Hierbei wird das Skript in einem eigenen Thread ausgefuehrt.
Waehrend der Ausfuehrung wird ein Status-Dialog angezeigt. Wird dieser durch den Anwender abgebrochen, wird die Skript-Ausfuehrung unmittelbar gestoppt.

Parameters:
appl - Applikation innerhalb der das Skript ausgefuehrt wird
scriptDef - Script-Definition
See Also:
SwingWorker, StatusDialog

determineObjectsFromDataPool

public static Object[][] determineObjectsFromDataPool(Object type,
                                                      DataPool dataPool)
Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus dem Xulu-Datenpool, die zu einer Klasse (oder Ressource) passen.

Parameters:
type - Objekt-Type (spezifiert durch ein Class-Objekt oder ein ModelResource-Objekt)
dataPool - Datenpool, in dem gesucht wird
Returns:
2-dimensionan Array obj[][], wobei obj[0] die ermittelten Objekte enthaelt und obj[1] deren Objektnamen.
Throws:
IllegalArgumentException - falls type keine Class- oder ModelResource-Instanz ist

determineObjectsFromDataPool

public static void determineObjectsFromDataPool(Object type,
                                                DataPool dataPool,
                                                Vector objects,
                                                Vector<String> names)
Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus dem Xulu-Datenpool, die zu einer Klasse (oder Ressource) passen.

Parameters:
type - Objekt-Type (spezifiert durch ein Class-Objekt oder ein ModelResource-Objekt)
dataPool - Liste von Objekten, in denen gesucht wird
objects - wird mit den gefundenen (passenden) Objekten gefuellt
names - wird mit den Bezeichnungen zu den objects-Elementen befuellt
Throws:
IllegalArgumentException - falls type keine Class- oder ModelResource-Instanz ist

determineObjectsFromList

public static void determineObjectsFromList(Object type,
                                            Enumeration objList,
                                            Vector objects,
                                            Vector<String> names,
                                            String namePrefix)
Ermittelt (rekursiv) alle Xulu-Objekte und Eigenschaften aus einer Liste, die zu einer Klasse (oder Ressource) passen.

Parameters:
type - Objekt-Type (spezifiert durch ein Class-Objekt oder ein ModelResource-Objekt)
objList - Liste von Objekten, in denen gesucht wird
objects - wird mit den gefundenen (passenden) Objekten gefuellt
names - wird mit den Bezeichnungen zu den objects-Elementen befuellt
namePrefix - Praefix, die den Bezeichnungen vorangestellt wird, bevor sie in names eingefuegt werden (wird fuer Rekursion benoetigt, sollte beim Aufruf "" oder null sein)
Throws:
IllegalArgumentException - falls type keine Class- oder ModelResource-Instanz ist