import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


/** Diese Klasse ist unser neues Hauptprogramm.
  * Sie ermoeglicht uns, die SwingAnzeige in einen Frame
  * einzupacken und grafisch darzustellen.
  **/
public class JavaUhr extends JFrame {

  /** Die von uns verwendete SwingAnzeige */
  private SwingUhr anzeige;
  
  /** Konstruktor */
  public JavaUhr()
  {
    // Erzeuge und verwende ein SwingUhr-Objekt
    anzeige = new SwingUhr();
    setContentPane(anzeige);
    // Erzeuge ein Menue mit den verschiedenen Optionen
    JMenuBar bar = new JMenuBar();
    JMenu system = new JMenu("System");
    JMenuItem beenden = new JMenuItem("Beenden");
    bar.add(system);
    system.add(beenden);
    setJMenuBar(bar);
    // Erzeuge einen Listener fuer das Beenden-Menue    
    beenden.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        beenden();
      }
    });
    // Verwende dieselbe Aktion auch, wenn wir das Fenster
    // schliessen wollen
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        beenden();
      }
    });
  }
  
  /** Ueberschreibt die setVisible-Methode, um unsere Uhr zu aktivieren
    * oder zu deaktivieren.
    **/
  public void setVisible(boolean value) {
    if (value != isVisible()) {
      super.setVisible(value);
      if (value) 
        anzeige.aktivieren();
      else
        anzeige.beenden();
    }
  }
  
  /** Diese Methode wird aufgerufen, wenn das Programm beendet
    * werden soll.
    **/
  private void beenden() {
    // Frage den Benutzer, ob er das Ernst meint!
    int bistDuSicher = JOptionPane.showConfirmDialog(this,
      "Programm wirklich beenden?");
    // Falls ja, beende das Programm
    if (bistDuSicher == JOptionPane.YES_OPTION) {
      setVisible(false);
      System.exit(0);
    }
  }
  
  /** Main-Methode */
  public static void main(String[] args) {
    // Erzeuge unseren JavaUhr-Frame
    JavaUhr uhr = new JavaUhr();
    uhr.setTitle("Java Uhr");
    uhr.pack();
    uhr.setVisible(true);
  }
 
}
