/**
 * Schalter stellt eine boolsche Variable zur Verfügung,
 * die über folgende Methoden manipuliert werden kann:
 * Einschalten: setzt den Wert auf true
 * Ausschalten: setzt den Wert auf false
 * Schalten:    wechselt den Wert
 * 
 * Neuerungen gegenüber der Version 03:
 * Der Stand des Schalters wird in einem Fenster visualisiert.
 * 
 * @author   Dieter Bergmann 
 * @version  2008-05-24
 */

public class SCHALTER      
{    
    private boolean Schalter_ein;   // Instanzvarable für den Zustand
    private KREIS   Licht;          // Variable zur Visualsierung
    
    /**
     * Konstruktor für Objekte der Klasse Schalter
     * Ausgangszustand: Der Schalter ist aus
     * @param Objekt der Klasse Kreis, dient zur Visualisierung
     */
    public SCHALTER(KREIS k)
    {
        Schalter_ein = false;       // Startzustand setzen
        Licht = k;                  // Speichern des Objektes zur Visualisierung
        Licht.sichtbarMachen();     // sonst erscheint das leere Fenster nicht
        Licht.unsichtbarMachen();   // gewünschter Anfangszustand
    }
   
    /**
     * Einschalten
     * Der Schalter steht unabhängig vom Zustand danach auf ein
    */
    public void Einschalten()
    {
        Schalter_ein = true;
        Protokoll("Einschalten");
    }
    
    /**
     * Ausschalten
     * Der Schalter steht unabhängig vom Zustand danach auf aus
    */
    public void Ausschalten()
    {
        Schalter_ein = false;
        Protokoll("Ausschalten");
    } 
    
    
    public boolean Get_Schalterstellung()
    {
        return Schalter_ein;
    }
    
    /**
     * Umschalten
     * Der Schalter hat ABHÄNGIG vom Zustand danach den jeweils anderen Zustand
    */
    public void Umschalten()
    {
        Protokoll("Umschalten");
        if (Get_Schalterstellung()) {Ausschalten();} else {Einschalten();};
    }
    
    private void Protokoll(String gerufen_von)
    {
        if (Get_Schalterstellung()) {Licht.sichtbarMachen();}
                               else {Licht.unsichtbarMachen();};
     }
                            
    
}