package javacodebook.gui.menu;

import javax.swing.*;
import java.awt.*;

/**
 * @author Benjamin Rusch
 * 
 * In diesem Beispiel wird ein JFrame mit einer MenuLeiste ausgestattet
 */


public class MenuJFrame  extends JFrame {
	
	private Container content 		= null;
	/**
	 * Menuleiste
	 */
	private JMenuBar mb 			= new JMenuBar();
	
	
	/**
	 * Hauptmenupunkte in Leiste, können Untermenus besitzen
	 */
	private JMenu file          = new JMenu("Datei");
	private JMenu edit          = new JMenu("Bearbeiten");
	private JMenu help          = new JMenu("Hilfe");
	
	/**
	 * Menupunkt eines Menus, falls vom Typ "JMenu", wie bei newGeneral,
	 * und nicht JMenuItem können weitere Untermenus hinzugefügt werden.
	 */
	private JMenu newGeneral		= new JMenu("Neu");
	private JMenuItem newProject	= new JMenuItem("Project");
	private JMenuItem newFile		= new JMenuItem("File");
	private JMenuItem save 		= new JMenuItem("Speichern");
	private JMenuItem print 		= new JMenuItem("Drucken");
	private JMenuItem exit			= new JMenuItem("Exit");
	
	private JMenuItem undo 		= new JMenuItem("Rückgängig");
	private JMenuItem copy 		= new JMenuItem("Kopieren");
	private JMenuItem paste		= new JMenuItem("Einfügen");
	
	private JMenuItem helpItem		= new JMenuItem("Hilfe");
	private JMenuItem info			= new JMenuItem("Info");
	
	/**
 	*	Konstruktor von MenuJFrame.  
 	*/	
	public MenuJFrame(String title) {
		
		super(title);		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		content = this.getContentPane();

		// Die (noch leere) Menuleiste wird eingebaut
		this.setJMenuBar(mb);
		
		// Menuleiste wird mit Hauptmenupunkten bestückt
		mb.add(file);
		mb.add(edit);
		mb.add(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 ausgeklapptem Menu
		file.addSeparator();
		file.add(exit);
		
		edit.add(undo);
		edit.add(copy);
		edit.add(paste);
		
		help.add(helpItem);
		help.add(info);
	}
}
