vips.model
Class AnweisungsContainer

java.lang.Object
  extended by vips.model.UIElement
      extended by vips.model.AnweisungsContainer
All Implemented Interfaces:
Beobachtbar

public class AnweisungsContainer
extends UIElement
implements Beobachtbar

Ein AnweisungsContainer ist ein Container für Anweisungen und wird überall dort eingesetzt, wo mehrere Anweisungen stehen sollen/können, beispielsweise im Rumpf einer Schleife.
Ein AnweisungsContainer hat also selber als Vater eine Anweisung. Der AnweisungsContainer im Struktogramm ist eine anonyme Subklasse hiervon und erlaubt null als vater.

Events:
-Wenn eine Anweisung hinzugefügt oder entfernt wird
-Wenn in einer der enthaltenen Anweisungen ein Event auftritt


Field Summary
 Anweisung LEERE_ANWEISUNG
           
 
Fields inherited from class vips.model.UIElement
RAND
 
Constructor Summary
AnweisungsContainer(Anweisung vater)
          Erzeugt einen neuen AnweisungsContainer.
 
Method Summary
(package private)  void anweisungEntfernen(Anweisung a)
          Entfernt die Anweisung intern aus dem Container.
(package private)  void anweisungHinzufuegen(Anweisung a, int index)
          Fügt die Anweisung intern hinzu.
(package private)  void ausfuehren(java.lang.Object einzelschrittLock)
          Führt die enthaltenen Anweisungen sequentiell aus.
(package private)  org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
          Berechnet bevorzugte Größe
 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.
(package private)  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)
 int getIndexVonAnweisung(Anweisung a)
          Gibt die Position der Anweisung a als Nullbasierten Index in diesem Container zurück.
 int getLaenge()
          Gibt die Anzahl der enthaltenen Anweisungen zurück
 Struktogramm getStruktogramm()
          Diese Methode gibt das Struktogramm zurück, zu dem dieser Container gehört.
 Anweisung getVaterAnweisung()
          Gibt die Anweisung zurück, in der dieser Container drin ist bzw verwendet wird.
(package private)  void hintergrundZuruecksetzen()
          Setzt die Hintergrundfarbe alle enthaltenen Anweisungen auf null.
 java.util.Iterator iterator()
          Ein Iterator über alle Anweisungen des Containers.
(package private)  void layout(org.eclipse.swt.graphics.GC gc)
          Macht das Layout dieses Container, d.h. die Anordnung der Unteranweisungen (größe und pos) neu.
(package private)  void pruefen(java.util.Collection fehler, BenamterWertSammlung variablen)
          Prüft alle in diesem Container enthaltenen Anweisungen
protected  void setVaterAnweisung(Anweisung vater)
          Diese Methode setzt die Vater-Anweisung.
(package private)  void zeichne(org.eclipse.swt.graphics.GC gc)
          Zeichnet den Container auf den übergebenen GC.
 
Methods inherited from class vips.model.UIElement
getBreite, getGroesse, getHintergrund, getHoehe, getPos, getX, getY, hoeheAnpassen, setBreite, setGroesse, setHintergrund, setHoehe, setPos
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LEERE_ANWEISUNG

public final Anweisung LEERE_ANWEISUNG
Constructor Detail

AnweisungsContainer

public AnweisungsContainer(Anweisung vater)
Erzeugt einen neuen AnweisungsContainer.

Parameters:
vater - Die Anweisung, in der dieser Container verwendet wird
Throws:
java.lang.IllegalArgumentException - Wenn vater null ist
Method Detail

ausfuehren

void ausfuehren(java.lang.Object einzelschrittLock)
          throws BreakException,
                 ContinueException,
                 LaufzeitException,
                 TerminateException
Führt die enthaltenen Anweisungen sequentiell aus.

Throws:
LaufzeitException - Wenn bei einer der Anweisungen ein Laufzeitfehler auftritt.
BreakException
ContinueException
TerminateException

pruefen

void pruefen(java.util.Collection fehler,
             BenamterWertSammlung variablen)
Prüft alle in diesem Container enthaltenen Anweisungen


setVaterAnweisung

protected void setVaterAnweisung(Anweisung vater)
Diese Methode setzt die Vater-Anweisung.
Diese Methode wird von dem im Struktogramm verwendeten Container überschrieben, um auch null als vater zu erlauben.

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

getVaterAnweisung

public Anweisung getVaterAnweisung()
Gibt die Anweisung zurück, in der dieser Container drin ist bzw verwendet wird.


getStruktogramm

public Struktogramm getStruktogramm()
Diese Methode gibt das Struktogramm zurück, zu dem dieser Container gehört.
Der Container weiß dies allerdings nicht selber, er fragt seine Vater-Anweisung nach ihrem Struktogramm und gibt das zurück. Wenn die Kette irgendwo unterbrochen wird, z.B. durch eine Anweisung, die keinen Vater hat, wird null zurückgegeben.


getLaenge

public int getLaenge()
Gibt die Anzahl der enthaltenen Anweisungen zurück


getIndexVonAnweisung

public int getIndexVonAnweisung(Anweisung a)
Gibt die Position der Anweisung a als Nullbasierten Index in diesem Container zurück.

Throws:
java.lang.IllegalArgumentException - Wenn a null ist oder nicht in diesem Container drin

iterator

public java.util.Iterator iterator()
Ein Iterator über alle Anweisungen des Containers.


anweisungHinzufuegen

void anweisungHinzufuegen(Anweisung a,
                          int index)
Fügt die Anweisung intern hinzu.
index bezeichnet die Stelle, an der die Anweisung eingefügt wird.

Throws:
java.lang.IllegalArgumentException - Wenn a null ist oder index kleiner als 0 oder größer als getLaenge

anweisungEntfernen

void anweisungEntfernen(Anweisung a)
Entfernt die Anweisung intern aus dem Container.

Throws:
java.lang.IllegalArgumentException - Wenn a null ist
java.lang.RuntimeException - Wenn a nicht in diesem Container drin ist

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

hintergrundZuruecksetzen

void hintergrundZuruecksetzen()
Setzt die Hintergrundfarbe alle enthaltenen Anweisungen auf null.

Overrides:
hintergrundZuruecksetzen in class UIElement

getAnweisungAnPos

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.

layout

void layout(org.eclipse.swt.graphics.GC gc)
Macht das Layout dieses Container, d.h. die Anordnung der Unteranweisungen (größe und pos) neu.


berechneBevorzugteGroesse

org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
Berechnet bevorzugte Größe

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

zeichne

void zeichne(org.eclipse.swt.graphics.GC gc)
Zeichnet den Container auf den übergebenen GC.

Specified by:
zeichne in class UIElement