vips.model
Class Struktogramm

java.lang.Object
  extended by vips.model.UIElement
      extended by vips.model.Struktogramm
All Implemented Interfaces:
java.lang.Comparable, Beobachtbar, Operation

public class Struktogramm
extends UIElement
implements Beobachtbar, Operation, java.lang.Comparable

Diese Klasse stellt ein Struktogramm dar.
Ein Struktogramm besitzt einen AnweisungsContainer, in dem die Anweisungen drin sind, die ausgeführt werden sollen. Ein Struktogramm kann Parameter und einen Rückgabewert haben.
Ein Struktogramm ist in einem Projekt enthalten.

Events:
-Wenn sich der Name des Struktogramms ändert
-Wenn sich die Dokumentation ändert
-Wenn sich was in den Anweisungen des Struktos ändert
-Wenn ein Parameter hinzugefügt oder entfernt wird
-Wenn sich der Rückgabetyp ändert


Field Summary
 
Fields inherited from class vips.model.UIElement
RAND
 
Constructor Summary
Struktogramm(org.jdom.Element e)
          Erzeugt das Struktogramm mit den Werten aus dem XML-Element e.
Struktogramm(Projekt vater, java.lang.String name)
          Erzeugt ein neues Struktogramm.
 
Method Summary
 void alleParameterEntfernen()
          Löscht alle Parameter und löst Event aus.
 Wert aufrufen(java.util.Map argumente, java.lang.Object einzelschrittLock)
          Ruft dieses Struktogramm auf.
 org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
          Gibt die Lieblingsgröße von diesem Struktogramm zurück
 void changeListenerEntfernen(ChangeListener l)
          Entfernt den Listener l aus der Liste der Listener dieses Objektes.
 void changeListenerHinzufuegen(ChangeListener l)
          Fügt den Listener l der Sammlung der Listener dieses Objekts hinzu.
 int compareTo(java.lang.Object o1)
          Vorgabe aus Comparable, basiert auf Namen der Struktogramme.
 Anweisung getAnweisungAnPos(org.eclipse.swt.graphics.Point pos)
          Gibt die Anweisung zurück, die sich an der Position pos befindet (relativ zur oberen linken Ecke des Struktogamms)
 AnweisungsContainer getAnweisungsContainer()
          Gibt den AnweisungsContainer, der die Anweisungen dieses Struktogramms hält zurück.
 BenamterWertSammlung getDeklarierteVariablen()
          Gibt die deklarierten Variablen und Konstanten dieses Struktogramms zurück.
 java.lang.String getDokumentation()
          Gibt die Dokumentation dieses Struktogramms zurück, wenn diese nicht gesetzt ist, einen Leer-String
 java.lang.String getHTMLDokumentation()
          Formattiert die Dokumentation im HTML-Format zur Anzeige in zB einer DocShell.
 BenamterWertSammlung getLokaleVariablen()
          Gibt die lokalen Variablen des gerade laufenen Struktogramms zurück.
 java.lang.String getName()
          Gibt den Namen dieses Struktogramms zurück.
 ParamInfo[] getParameter()
          Gibt ein Array mit allen ParamInfo-Objekten zurück
 ParamInfo getParameter(java.lang.String name)
          Gibt das ParamInfo-Objekt zu dem Parameter dieses Struktogramms mit dem gegebenen Namen zurück oder null, wenn ein solcher Parameter nicht existiert.
 Projekt getProjekt()
          Gibt das Projekt, in dem dieses Struktogramm enthalten ist, zurück, kann auch null sein.
 java.lang.Class getRueckgabeTyp()
          Gibt den Typ des Rückgabewertes dieses Struktogramms zurück, evtl auch null.
 void hintergrundZuruecksetzen()
          Setzt den Hintergrund aller Anweisungen in diesem Struktogramm auf null.
 void parameterEntfernen(ParamInfo pi)
          Entfert einen Parameter von der Parameter-Liste dieses Struktogramms.
 void parameterHinzufuegen(ParamInfo pi)
          Fügt einen Parameter dazu.
 java.util.Iterator parameterIterator()
          Gibt einen Iterator über alle ParamInfo-Objekte dieses Struktogramms zurück.
 void pruefen(java.util.Collection fehler)
          Prüft dieses Struktogramm und alle Unteranweisungen.
 void setDokumentation(java.lang.String doc)
          Setzt den Dokumentations-Kommentar dieses Struktogramms neu.
 void setName(java.lang.String n)
          Setzt den Namen dieses Struktogramms.
 void setPos(org.eclipse.swt.graphics.Point pos)
          Setzt die Position des Elements.
 void setProjekt(Projekt p)
          Setzt das Projekt, in dem dieses Struktogramm enthalten ist.
 void setRueckgabeTyp(java.lang.Class typ)
          Setzt den Typ des Wertes, den dieses Struktogramm zurück gibt.
 org.jdom.Element toXMLElement()
          Gibt ein org.jdom.Element zurück, welches dieses Struktogramm repräsentiert
 void zeichne(org.eclipse.swt.graphics.GC gc)
          Zeichnet diese Struktogramm auf den GC .
 
Methods inherited from class vips.model.UIElement
getBreite, getGroesse, getHintergrund, getHoehe, getPos, getX, getY, hoeheAnpassen, setBreite, setGroesse, setHintergrund, setHoehe
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Struktogramm

public Struktogramm(Projekt vater,
                    java.lang.String name)
Erzeugt ein neues Struktogramm.
Das Vater-Projekt kann auch null sein, dann kann das Struktogramm aber nicht ausgeführt werden.

Throws:
java.lang.IllegalArgumentException - Wenn name null ist oder kein gültiger Bezeichner
java.lang.RuntimeException - Wenn in vater bereits ein Struktogramm mit dem gegebenen Namen drin ist

Struktogramm

public Struktogramm(org.jdom.Element e)
             throws FalschesDateiFormatException
Erzeugt das Struktogramm mit den Werten aus dem XML-Element e.
Das Element muss den Namen "struktogramm" haben.
Das Struktogramm ist in keinem Projekt enthalten

Throws:
FalschesDateiFormatException
Method Detail

aufrufen

public Wert aufrufen(java.util.Map argumente,
                     java.lang.Object einzelschrittLock)
              throws LaufzeitException,
                     TerminateException
Ruft dieses Struktogramm auf.
Es wird NICHT geprüft, ob für jeden Parameter ein Argument vorhanden ist und ob die Typen passen. Dies ist Aufgabe des Aufrufers dieser Methode.

Specified by:
aufrufen in interface Operation
Parameters:
argumente - Eine Map mit den Parameter-Namen als Keys und den konkreten Argumenten als Values vom Typ Wert
Returns:
Ein Wert-Objekt vom Typ des Rückgabewerts der null, wenn dieses Struktogramm keinen Wert zurückgibt.
Throws:
java.lang.IllegalArgumentException - Wenn argumente null ist
java.lang.RuntimeException - Wenn dieses Struktogramm in keinem Projekt enthalten ist
LaufzeitException - Wenn ein Laufzeitfehler auftritt oder ein Parameter eine lokale Variable verdeckt
TerminateException - Wenn während der Ausführung einer der Anweisungen der Ausführungsthread unterbrochen wird

pruefen

public void pruefen(java.util.Collection fehler)
Prüft dieses Struktogramm und alle Unteranweisungen.
Dazu erstellt sie zunächst eine Variablensammlung, die genauso aussieht wie die lokalen Variablen bei der Ausführung, d.h. sie beinhaltet auch die Parameter- und Rückgabevariablen.
Ein Fehler, der direkt hier auftritt, hat als Quelle null.
Folgende Prüfungen werden durchgeführt:
  1. Verdeckt ein Parameter eine lokale Variable?
  2. Verdeckt der Rückgabewert eine lokale Variable?

Throws:
java.lang.IllegalArgumentException - Wenn fehler null ist
java.lang.RuntimeException - Wenn das Struktogramm zu keinem Projekt gehört

setDokumentation

public void setDokumentation(java.lang.String doc)
Setzt den Dokumentations-Kommentar dieses Struktogramms neu. Löst ein ChangeEvent aus.

Throws:
java.lang.IllegalArgumentException - Wenn doc null ist

getDokumentation

public java.lang.String getDokumentation()
Gibt die Dokumentation dieses Struktogramms zurück, wenn diese nicht gesetzt ist, einen Leer-String


getHTMLDokumentation

public java.lang.String getHTMLDokumentation()
Formattiert die Dokumentation im HTML-Format zur Anzeige in zB einer DocShell.


getDeklarierteVariablen

public BenamterWertSammlung getDeklarierteVariablen()
Gibt die deklarierten Variablen und Konstanten dieses Struktogramms zurück.


getLokaleVariablen

public BenamterWertSammlung getLokaleVariablen()
Gibt die lokalen Variablen des gerade laufenen Struktogramms zurück.

Throws:
java.lang.RuntimeException - Wenn diese Methode nicht innerhalt von aufrufen verwendet wird.

getAnweisungsContainer

public AnweisungsContainer getAnweisungsContainer()
Gibt den AnweisungsContainer, der die Anweisungen dieses Struktogramms hält zurück.
Um dem Struktogramm eine Anweisung hinzuzufügen, kann der zurückgegebene Container verändert werden.


setProjekt

public void setProjekt(Projekt p)
Setzt das Projekt, in dem dieses Struktogramm enthalten ist.
Wenn das Struktogramm vorher bereits in einem Projekt war, wird es dort abgemeldet und dann bei dem neuen hinzugefügt. Des weiteren werden die globalen Variablen des neuen Projekts als Vater-Sammlung der Variablen dieses Struktogramms gesetzt.

Parameters:
p - Das neue Projekt, kann auch null sein
Throws:
java.lang.RuntimeException - Wenn in Projekt p bereits ein Struktogramm mit diesem Namen ist

getProjekt

public Projekt getProjekt()
Gibt das Projekt, in dem dieses Struktogramm enthalten ist, zurück, kann auch null sein.


setName

public void setName(java.lang.String n)
Setzt den Namen dieses Struktogramms.
Zuerst wird das Struktogramm vaterlos gemacht, dann der interne Name geändert und wieder bei dem alten Projekt angemeldet (unter neuem Namen).

Throws:
java.lang.IllegalArgumentException - Wenn n null ist oder kein gültiger Bezeichner
java.lang.RuntimeException - Wenn in dem Projekt, in dem dieses Struktogramm enthalten ist, der neue Name bereits vergegen ist.

getName

public java.lang.String getName()
Gibt den Namen dieses Struktogramms zurück.

Specified by:
getName in interface Operation

setRueckgabeTyp

public void setRueckgabeTyp(java.lang.Class typ)
Setzt den Typ des Wertes, den dieses Struktogramm zurück gibt.
Es kann auch null übergeben werden, dann ist dieses Struktogramm eine Prozedur.

Throws:
java.lang.IllegalArgumentException - Wenn typ kein unterstützter Datentyp ist

getRueckgabeTyp

public java.lang.Class getRueckgabeTyp()
Gibt den Typ des Rückgabewertes dieses Struktogramms zurück, evtl auch null.

Specified by:
getRueckgabeTyp in interface Operation

getParameter

public ParamInfo getParameter(java.lang.String name)
Gibt das ParamInfo-Objekt zu dem Parameter dieses Struktogramms mit dem gegebenen Namen zurück oder null, wenn ein solcher Parameter nicht existiert.

Specified by:
getParameter in interface Operation
Throws:
java.lang.IllegalArgumentException - Wenn name null ist

parameterIterator

public java.util.Iterator parameterIterator()
Gibt einen Iterator über alle ParamInfo-Objekte dieses Struktogramms zurück.

Specified by:
parameterIterator in interface Operation

getParameter

public ParamInfo[] getParameter()
Gibt ein Array mit allen ParamInfo-Objekten zurück


parameterHinzufuegen

public void parameterHinzufuegen(ParamInfo pi)
Fügt einen Parameter dazu.

Throws:
java.lang.IllegalArgumentException - Wenn pi null ist
java.lang.RuntimeException - Wenn ein Parameter mit dem Namen von pi bereits existiert

parameterEntfernen

public void parameterEntfernen(ParamInfo pi)
Entfert einen Parameter von der Parameter-Liste dieses Struktogramms.

Throws:
java.lang.IllegalArgumentException - Wenn pi null ist
java.lang.RuntimeException - Wenn kein Parameter mit dem Namen von pi existiert

alleParameterEntfernen

public void alleParameterEntfernen()
Löscht alle Parameter und löst Event aus.


changeListenerHinzufuegen

public void changeListenerHinzufuegen(ChangeListener l)
Fügt den Listener l der Sammlung der Listener dieses Objekts hinzu.

Specified by:
changeListenerHinzufuegen in interface Beobachtbar
Throws:
java.lang.IllegalArgumentException - Wenn l null ist

changeListenerEntfernen

public void changeListenerEntfernen(ChangeListener l)
Entfernt den Listener l aus der Liste der Listener dieses Objektes.
Wenn l nicht in der Sammlung drin ist, passiert nix.

Specified by:
changeListenerEntfernen in interface Beobachtbar
Throws:
java.lang.IllegalArgumentException - Wenn l null ist

compareTo

public int compareTo(java.lang.Object o1)
Vorgabe aus Comparable, basiert auf Namen der Struktogramme.

Specified by:
compareTo in interface java.lang.Comparable

toXMLElement

public org.jdom.Element toXMLElement()
Gibt ein org.jdom.Element zurück, welches dieses Struktogramm repräsentiert


hintergrundZuruecksetzen

public void hintergrundZuruecksetzen()
Setzt den Hintergrund aller Anweisungen in diesem Struktogramm auf null.

Overrides:
hintergrundZuruecksetzen in class UIElement

getAnweisungAnPos

public Anweisung getAnweisungAnPos(org.eclipse.swt.graphics.Point pos)
Gibt die Anweisung zurück, die sich an der Position pos befindet (relativ zur oberen linken Ecke des Struktogamms)

Specified by:
getAnweisungAnPos in class UIElement
Returns:
Die Anweisung an dieser Stelle oder null, wenn pos nicht im Client-Bereich des Elements liegt.

berechneBevorzugteGroesse

public org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
Gibt die Lieblingsgröße von diesem Struktogramm zurück

Specified by:
berechneBevorzugteGroesse in class UIElement
Parameters:
gc - Der GC, auf den das Element gezeichnet werden würde

setPos

public void setPos(org.eclipse.swt.graphics.Point pos)
Description copied from class: UIElement
Setzt die Position des Elements.
Die Koordinaten beziehen sich auf die linke obere Ecke des Struktogramms.

Overrides:
setPos in class UIElement

zeichne

public void zeichne(org.eclipse.swt.graphics.GC gc)
Zeichnet diese Struktogramm auf den GC .
Vorder- und Hintergrundfarbe und Schriftart könne auf die gewünschten Werte gesetzt werden, die Hintergrundfarbe wird allerdigns überschrieben, wenn getHintergrund nicht null ist.

Specified by:
zeichne in class UIElement