package javacodebook.gui.menu;

import java.awt.*;
import java.awt.event.*;

/**
 * @author Benjamin Rusch
 * 
 * In diesem Beispiel wird das Frame mit einer Menuleiste 
 * ausgestattet.  
 * 
 */

public class MenuFrame  extends Frame {
	
	/**
	 * Menuleiste des Frames
	 */
	private MenuBar mb 		= new MenuBar();
	
	/**
	 * Hauptmenupunkte in Leiste, können Untermenus besitzen
	 */
	private Menu file = new Menu("Datei");
	private Menu edit = new Menu("Bearbeiten");
	private Menu help = new Menu("Hilfe");
	
	/**
	 * Menupunkt eines Menus, falls vom Typ "Menu", wie bei newGeneral,
	 * und nicht MenuItem können weitere Untermenus hinzugefügt werden
	 */
	private Menu newGeneral	= new Menu("Neu");
	private MenuItem newProject= new MenuItem("Project");
	private MenuItem newFile = new MenuItem("File");
	private MenuItem save = new MenuItem("Speichern");
	private MenuItem print = new MenuItem("Drucken");
	private MenuItem exit = new MenuItem("Exit");
	
	private MenuItem undo = new MenuItem("Rückgängig");
	private MenuItem copy = new MenuItem("Kopieren");
	private MenuItem paste = new MenuItem("Einfügen");
	
	private MenuItem helpItem = new MenuItem("Hilfe");
	private MenuItem info = new MenuItem("Info");
	
	
	/**
 	*	Konstruktor von MenuFrame  
 	*/	
	public MenuFrame(String title) {
		super(title);		
		
		// Beim Klicken des Schließen-Buttons vom HauptFenster
		// wird das Programm beendet.
		this.addWindowListener(new WindowAdapter() {
		    public void windowClosing(WindowEvent we) {
				System.exit(0);
		    }
		});
		
		
		// Die (noch leere) Menuleiste wird eingebaut
		this.setMenuBar(mb);
		
		// Menuleiste wird mit Hauptmenupunkten bestückt
		mb.add(file);
		mb.add(edit);
	
		// setHelpmenu() fügt das HelMenu in der MenuLeiste ein. 
		// Existiert schon eins wird dieses überschrieben.
		mb.setHelpMenu(help);
		
		
		// Hauptmenupunkte können von Hauptmenupunkten besetzt 
		// werden. Dadurch entsteht ein ausfahrbares Untermenu, 
		// welches anschließend belegt werden kann.   
		file.add(newGeneral);
		newGeneral.add(newProject);
		newGeneral.add(newFile);
	
		// hier wird der Menupunkt direkt ins oberste Hauptmenu
		// gelegt, es entsteht kein ausfahrbares Untermenu.
		file.add(save);
		file.add(print);
		// ein Seperator ist ein Trennstrich im ausgejklapptem Menu
		file.addSeparator();
		file.add(exit);
		
		edit.add(undo);
		edit.add(copy);
		edit.add(paste);
		
		help.add(helpItem);
		help.add(info);
	}
}