vips.model
Class SwitchAnweisung

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

public class SwitchAnweisung
extends Anweisung

Diese Anweisung implementiert eine Fallunterscheidung, dh eine switch-case Anweisung.

Events:
-Wenn sich was an dem Ausdruck tut
-Wenn sich was in einem der Zweige ändert


Field Summary
 
Fields inherited from class vips.model.Anweisung
listeners, weiterleitung
 
Fields inherited from class vips.model.UIElement
RAND
 
Constructor Summary
SwitchAnweisung(AnweisungsContainer vater, int index, Ausdruck ausdruck, boolean mitElse)
          Erzeugt eine neue Switch-Anweisung mit dem gegebenen Ausdruck
SwitchAnweisung(org.jdom.Element e)
           
 
Method Summary
(package private)  void ausfuehren(java.lang.Object einzelschrittLock)
          Führt einen der Zweige, in Abhängigkeit vom Ausdruck aus.
(package private)  org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
          Berechnet beste Größe.
(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)
 Ausdruck getAusdruck()
          Gibt den Hauptausdruck zurück
static java.lang.String getXMLTagName()
          Gibt "switch_anweisung" zurück.
 AnweisungsContainer getZweig(Ausdruck seinAusdruck)
          Gibt den Zweig für den Ausdruck seinAusdruck zurück oder null, wenns keinen gibt.
(package private)  void hintergrundZuruecksetzen()
          Setzt die Hintergrundfarbe von sich und allen Zweigen auf null.
 boolean istMitElse()
          Gibt zurück, ob die Switch-Anweisung auch einen Else-Zweig hat.
 java.util.Iterator iterator()
          Gibt einen Iterator über die Ausdrücke aller Zweige zurück
(package private)  void pruefen(java.util.Collection fehler, BenamterWertSammlung variablen)
          Prüft diese Anweisung inklusive alle Zweige Folgendes wird geprüft: Kann der Hauptausdruck ausgewertet werden?
 void setAusdruck(Ausdruck neuerAusdruck)
          Setzt den Hauptausdruck neu.
 void setMitElse(boolean b)
          Setzt neu, ob die Anweisung einen Else-Zweig hat.
 org.jdom.Element toXMLElement()
          Wandelt diese Anweisung in ein entsprechendes XML-Tag um.
(package private)  void zeichne(org.eclipse.swt.graphics.GC gc)
          Zeichnet die Anweisung auf den übergebenen GC.
 void zweigEntfernen(Ausdruck seinAusdruck)
          Entfernt den ersten Zweig mit dem Ausdruck neuerAusdruck.
 void zweigHinzufuegen(Ausdruck seinAusdruck)
          Fügt der Anweisung einen neuen Zweig mit dem gegebenen Ausdruck hinzu.
 
Methods inherited from class vips.model.Anweisung
changeListenerEntfernen, changeListenerHinzufuegen, createFromXMLElement, getContainer, getProjekt, getStruktogramm, setContainer
 
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
 

Constructor Detail

SwitchAnweisung

public SwitchAnweisung(AnweisungsContainer vater,
                       int index,
                       Ausdruck ausdruck,
                       boolean mitElse)
Erzeugt eine neue Switch-Anweisung mit dem gegebenen Ausdruck

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

SwitchAnweisung

public SwitchAnweisung(org.jdom.Element e)
                throws FalschesDateiFormatException
Throws:
FalschesDateiFormatException
Method Detail

ausfuehren

void ausfuehren(java.lang.Object einzelschrittLock)
          throws BreakException,
                 ContinueException,
                 LaufzeitException,
                 TerminateException
Führt einen der Zweige, in Abhängigkeit vom Ausdruck aus.

Overrides:
ausfuehren in class Anweisung
Parameters:
einzelschrittLock - Wenn ungleich null, ruft die Anweisung am Anfang auf dieses Objekt einzelschrittLock.wait auf.
Throws:
LaufzeitException - Wenn der Ausdruck fehlerhaft oder einer der Ausdrücke eines Falls nicht vom selben Typ ist wie der Hauptausdruck
BreakException - Wird von einer BreakAnweisung geworfen, um die umgebende Schleife zu beenden.
ContinueException - Wird von einer ContinueAnweisung geworfen, um zum Anfang eines Schleifenrumpfs zu springen.
TerminateException - Wenn der Ausführungsthread unterbrochen wurde.

pruefen

void pruefen(java.util.Collection fehler,
             BenamterWertSammlung variablen)
Prüft diese Anweisung inklusive alle Zweige

Folgendes wird geprüft:

  1. Kann der Hauptausdruck ausgewertet werden?
  2. Können die Ausdrücke aller Zweige ausgewertet werden?
  3. Stimmen alle Zweigausdruckstypen mit dem Typ des Hauptausdrucks überein?

Overrides:
pruefen in class Anweisung

setAusdruck

public void setAusdruck(Ausdruck neuerAusdruck)
Setzt den Hauptausdruck neu.
Alle Ausdrücke der einzelnen Fälle müssen vom selben Typ sein wie dieser.

Throws:
java.lang.IllegalArgumentException - wenn neuerAusdruck null ist

getAusdruck

public Ausdruck getAusdruck()
Gibt den Hauptausdruck zurück


setMitElse

public void setMitElse(boolean b)
Setzt neu, ob die Anweisung einen Else-Zweig hat.


istMitElse

public boolean istMitElse()
Gibt zurück, ob die Switch-Anweisung auch einen Else-Zweig hat.


zweigHinzufuegen

public void zweigHinzufuegen(Ausdruck seinAusdruck)
Fügt der Anweisung einen neuen Zweig mit dem gegebenen Ausdruck hinzu.
Es ist erlaubt, dass mehrere Zweige mit dem selben Ausdruck existieren, es wird dann allerdings immer nur der erste ausgeführt.

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

zweigEntfernen

public void zweigEntfernen(Ausdruck seinAusdruck)
Entfernt den ersten Zweig mit dem Ausdruck neuerAusdruck.

Throws:
java.lang.IllegalArgumentException - Wenn seinAusdruck null ist oder es keinen Zweig mit diesem Ausdruck gibt

getZweig

public AnweisungsContainer getZweig(Ausdruck seinAusdruck)
Gibt den Zweig für den Ausdruck seinAusdruck zurück oder null, wenns keinen gibt.

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

iterator

public java.util.Iterator iterator()
Gibt einen Iterator über die Ausdrücke aller Zweige zurück


toXMLElement

public org.jdom.Element toXMLElement()
Description copied from class: Anweisung
Wandelt diese Anweisung in ein entsprechendes XML-Tag um.
Implementierende Klassen dürfen auch null zurückgeben, damit zeigen sie an, dass sie nicht geschrieben werden sollen/brauchen, z.B. die LeereAnweisung.

Specified by:
toXMLElement in class Anweisung

getXMLTagName

public static java.lang.String getXMLTagName()
Gibt "switch_anweisung" zurück.


hintergrundZuruecksetzen

void hintergrundZuruecksetzen()
Setzt die Hintergrundfarbe von sich und allen Zweigen 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)

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

berechneBevorzugteGroesse

org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
Berechnet beste 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 die Anweisung auf den übergebenen GC.

Specified by:
zeichne in class UIElement