/*
 * "Grundkurs Programmieren in Java (7. Auflage, 2014)"
 * 2003-2014, Carl Hanser Verlag
 * Loesungsvorschlag zu Aufgabe 13.1 (Version 2.0)
 * (c) 2003-2014 D. Ratz, J. Scheffler, D. Seese, J. Wiesenberger
 *
 */

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;

public class DatumFrame2 extends JFrame {
  private Container c;
  private JLabel             beschriftung, datumsAnzeige;
  private JMenuBar           menuBar;
  private JMenu              menu;
  private JMenuItem          menuItem;
  private Date               datum;
  private static final SimpleDateFormat   
    lang = new SimpleDateFormat("EEEE', 'd'. 'MMMM yyyy"),
    mittel = new SimpleDateFormat("EEEE', 'd'. 'MMMM"),
    kurz = new SimpleDateFormat("d '. ' MMMM");
  
  public DatumFrame2() {
    setFont( new Font( "Helvetica", Font.BOLD, 28) );
    beschriftung = new JLabel("Heutiges Datum:",JLabel.CENTER);
   
    datum = new Date();
    datumsAnzeige = new JLabel(lang.format(datum), JLabel.CENTER);
    
    MenuListener mL = new MenuListener();

    menuBar = new JMenuBar();
    menu = new JMenu("Darstellung");
    menu.setMnemonic(KeyEvent.VK_D);
    menuItem = new JMenuItem("Alles anzeigen");
    menuItem.setMnemonic(java.awt.event.KeyEvent.VK_A);
    menuItem.addActionListener(mL);
    menuItem.setActionCommand("lang");
    menu.add(menuItem);
    menuItem = new JMenuItem("Wochentag, Tag und Monat");
    menuItem.setMnemonic(java.awt.event.KeyEvent.VK_W);
    menuItem.addActionListener(mL);
    menuItem.setActionCommand("mittel");
    menu.add(menuItem);
    menuItem = new JMenuItem("Tag und Monat");
    menuItem.setMnemonic(java.awt.event.KeyEvent.VK_T);
    menuItem.addActionListener(mL);
    menuItem.setActionCommand("kurz");
    menu.add(menuItem);
    // Fuege das Menue der Menueleiste hinzu
    menuBar.add(menu);
    // Fuegt das Menue dem Frame hinzu
    setJMenuBar(menuBar);
    
    c = getContentPane();
    c.add(beschriftung,BorderLayout.NORTH);
    c.add(datumsAnzeige,BorderLayout.CENTER);
  }
  
  // innere Klasse
  class MenuListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      datum = new Date();
      if (e.getActionCommand().equals("lang"))
        datumsAnzeige.setText(lang.format(datum));
      else if (e.getActionCommand().equals("mittel"))
        datumsAnzeige.setText(mittel.format(datum));
      else
        datumsAnzeige.setText(kurz.format(datum));
    }    
  }
  
  // main-Methode
  public static void main(String[] args) {
    DatumFrame2 Datumfenster = new DatumFrame2();
    Datumfenster.setTitle("DatumFrame2");
    Datumfenster.setSize(190,100);
    Datumfenster.setVisible(true);
    Datumfenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}
