vips.model
Class ForAnweisung

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

public class ForAnweisung
extends SchleifenAnweisung

Diese Klasse implementiert eine For-Schleife (Zählschleife)

Events:
-Wenn sich die Zählrichtung ändert
-Wenn sich der Name der Zählvariable ändert
-Wenn sich was am Start- oder Endausdruck ändert
-Wenn sich was an der Schrittweite ändert


Field Summary
static int HOCH
          Schleifenrichtung: Hoch-Zählen (1, 2, 3, ...)
static int RUNTER
          Schleifenrichtung: Runter-Zählen (10, 9, 8, ...)
 
Fields inherited from class vips.model.Anweisung
listeners, weiterleitung
 
Fields inherited from class vips.model.UIElement
RAND
 
Constructor Summary
ForAnweisung(AnweisungsContainer vater, int index, java.lang.String zaehlVar, Ausdruck startAusdruck, int richtung, Ausdruck endAusdruck, Ausdruck schrittWeite)
          Erzeugt eine neue For-Schleife mit den gegebenen Werten.
ForAnweisung(org.jdom.Element e)
          Erzeugt Anweisung ausm XML-Element
 
Method Summary
(package private)  void ausfuehren(java.lang.Object einzelschrittLock)
          Führt die Schleife aus.
(package private)  org.eclipse.swt.graphics.Point berechneBevorzugteGroesse(org.eclipse.swt.graphics.GC gc)
          Berechnet beste Größe.
 Ausdruck getEndAusdruck()
          gibt den Endausdruck zurück
 int getRichtung()
          Gibt die Zählrichtung zurück, entweder HOCH oder RUNTER
 Ausdruck getSchrittweite()
          Gibt Schrittweite der Zählschleife zurück, oder null, wenn der Standardwert verwendet werden soll
 Ausdruck getStartAusdruck()
          Gibt den Startausdruck zurück
static java.lang.String getXMLTagName()
          Gibt "for_anweisung" zurück.
 java.lang.String getZaehlVarName()
          Gibt den Namen der Variable zurück
(package private)  void pruefen(java.util.Collection fehler, BenamterWertSammlung variablen)
          Prüft diese Anweisung.
 void setEndAusdruck(Ausdruck neuerEndAusdruck)
          Setzt den Ausdruck, bis zu dem die Schleife zählt.
 void setRichtung(int neueRichtung)
          Setzt die Zählrichtung, entweder HOCH oder RUNTER
 void setSchrittweite(Ausdruck neueSchrittweite)
          Setzt die Schrittweite der Schleife auf den gegebenen Wert.
 void setStartAusdruck(Ausdruck neuerStartAusdruck)
          Setzt den Ausdruck, von dem angefangen wird zu zählen.
 void setZaehlVarName(java.lang.String name)
          Setzt den Namen der Zählvariable.
 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.
 
Methods inherited from class vips.model.SchleifenAnweisung
getAnweisungAnPos, getRumpf, hintergrundZuruecksetzen
 
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
 

Field Detail

HOCH

public static final int HOCH
Schleifenrichtung: Hoch-Zählen (1, 2, 3, ...)

See Also:
Constant Field Values

RUNTER

public static final int RUNTER
Schleifenrichtung: Runter-Zählen (10, 9, 8, ...)

See Also:
Constant Field Values
Constructor Detail

ForAnweisung

public ForAnweisung(AnweisungsContainer vater,
                    int index,
                    java.lang.String zaehlVar,
                    Ausdruck startAusdruck,
                    int richtung,
                    Ausdruck endAusdruck,
                    Ausdruck schrittWeite)
Erzeugt eine neue For-Schleife mit den gegebenen Werten.
Exceptions etc siehe entsprechende set-Methoden.


ForAnweisung

public ForAnweisung(org.jdom.Element e)
             throws FalschesDateiFormatException
Erzeugt Anweisung ausm XML-Element

Throws:
FalschesDateiFormatException
Method Detail

ausfuehren

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

Overrides:
ausfuehren in class Anweisung
Parameters:
einzelschrittLock - Wenn ungleich null, ruft die Anweisung am Anfang auf dieses Objekt einzelschrittLock.wait auf.
Throws:
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.
LaufzeitException - Bei einem Laufzeitfehler
TerminateException - Wenn der Ausführungsthread unterbrochen wurde.

pruefen

void pruefen(java.util.Collection fehler,
             BenamterWertSammlung variablen)
Prüft diese Anweisung.
Folgende Punkte werden geprüft:
  1. Existiert die Variable?
  2. Ist sie vom Typ Integer?
  3. Sind Start- und Endausdruck korrekt?
  4. Sind sie vom selben Typ wie die Variable?
  5. Ist die Schrittweite auswertbar und ist sie vom Typ Integer?

Overrides:
pruefen in class SchleifenAnweisung

setRichtung

public void setRichtung(int neueRichtung)
Setzt die Zählrichtung, entweder HOCH oder RUNTER

Throws:
java.lang.IllegalArgumentException - Wenn neueRichtung ungültig ist

getRichtung

public int getRichtung()
Gibt die Zählrichtung zurück, entweder HOCH oder RUNTER


setZaehlVarName

public void setZaehlVarName(java.lang.String name)
Setzt den Namen der Zählvariable. Die Variable darf keine Konstante sein und muss vom Typ Integer sein

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

getZaehlVarName

public java.lang.String getZaehlVarName()
Gibt den Namen der Variable zurück


setStartAusdruck

public void setStartAusdruck(Ausdruck neuerStartAusdruck)
Setzt den Ausdruck, von dem angefangen wird zu zählen.
Der Ausdruck muss vom selben Typ sein wie die Zählvariable, also Integer.

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

getStartAusdruck

public Ausdruck getStartAusdruck()
Gibt den Startausdruck zurück


setEndAusdruck

public void setEndAusdruck(Ausdruck neuerEndAusdruck)
Setzt den Ausdruck, bis zu dem die Schleife zählt.
Der Ausdruck muss vom selben Typ sein wie die Zählvariable, also Integer.

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

getEndAusdruck

public Ausdruck getEndAusdruck()
gibt den Endausdruck zurück


setSchrittweite

public void setSchrittweite(Ausdruck neueSchrittweite)
Setzt die Schrittweite der Schleife auf den gegebenen Wert.
Der Wert kann auch null sein, dann wird die Standardweite (1) verwendet.
Die Schrittweite muss eine Ganzzahl größer Null sein.


getSchrittweite

public Ausdruck getSchrittweite()
Gibt Schrittweite der Zählschleife zurück, oder null, wenn der Standardwert verwendet werden soll


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 "for_anweisung" zurück.


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