import java.awt.*;
import java.awt.event.*;

public class GUI extends Frame{

/*
*	text - String zur Aufnahme des Programmnamens
* 	titel - Titel des Emulators
*	eingabefeld - Textarea zur Eingabe des Quellcodes
*/

static String text="";
static String titel="KC-Basic Interpreter";
static TextArea eingabefeld = new TextArea();


	public GUI(Emulator anwendung) 
	{

/*
*
* 	Layout erstellen
*
*/
	GridBagLayout design = new GridBagLayout();
	GridBagConstraints regel = new GridBagConstraints();
	setLayout(design);
	regel.insets = new Insets(0,0,2,2);
	
/*
*
* 	Buttons erzeugen und anordnen
*
*/

	Button loadb 		= new Button("Laden");
	Button saveb 		= new Button("Speichern");
	Button runb 		= new Button("Run");
	Button clsb 		= new Button("Cls");
	Button neuesfileb 	= new Button("Neu");

	regel.anchor 		= GridBagConstraints.WEST;
	regel.gridx 		=0;
	regel.gridy 		=0;
	regel.weightx		=0;
	design.setConstraints(neuesfileb, regel);
	add(neuesfileb);
	
	regel.anchor 		= GridBagConstraints.WEST;
	regel.gridx 		=1;
	regel.gridy 		=0;
	regel.weightx		=0;
	design.setConstraints(loadb, regel);
	add(loadb);
	
	regel.anchor 		= GridBagConstraints.WEST;
	regel.gridx 		=2;
	regel.gridy 		=0;
	regel.weightx		=0;
	design.setConstraints(saveb, regel);
	add(saveb);
	
	regel.anchor 		= GridBagConstraints.EAST;
	regel.gridx 		=3;
	regel.gridy 		=0;
	regel.weightx		=0;
	design.setConstraints(runb, regel);
	add(runb);
	
	regel.anchor 		= GridBagConstraints.WEST;
	regel.gridx 		=4;
	regel.gridy 		=0;
	regel.weightx		=0;
	regel.gridwidth = GridBagConstraints.REMAINDER;
	design.setConstraints(clsb, regel);
	add(clsb);

/*
*
* Eingabefeld anordnen
*
*/
	regel.gridx 		=0;
	regel.gridy 		=1;
	regel.weightx		=1;
	regel.weighty		=1;
	regel.fill = GridBagConstraints.BOTH;
	design.setConstraints(eingabefeld,regel);
	eingabefeld.setEditable(true);
	add(eingabefeld);
	
	
/*
*
* Menue erstellen
*
*/
	
	MenuBar mb  		= new MenuBar();
	
	Menu 	datei 		= new Menu("Datei");
	Menu 	programm	= new Menu("Programm");
	Menu 	info 		= new Menu("Info");
	
	MenuItem neu 		= new MenuItem("Neu");
	MenuItem laden  	= new MenuItem("Laden");
	MenuItem save 		= new MenuItem("Speichern");
	MenuItem exit 		= new MenuItem("Exit");
	
	MenuItem run 		= new MenuItem("Run");
	MenuItem cls 		= new MenuItem("Cls");
		
	MenuItem about  	= new MenuItem("About");
		
	setMenuBar(mb);
	
	mb.add(datei);
	mb.add(programm);
	mb.add(info);
		
	datei.add(neu);
	datei.addSeparator();
	datei.add(laden);
	datei.add(save);
	datei.addSeparator();
	datei.addSeparator();
	datei.add(exit);
		
	programm.add(run);
	programm.addSeparator();
	programm.addSeparator();
	programm.add(cls);
		
	info.add(about);

/*
*
* Listener 
*
*/

	neu.addActionListener(new Steuerung(this, anwendung));
	laden.addActionListener(new Steuerung(this, anwendung));
	run.addActionListener(new Steuerung(this, anwendung));
	save.addActionListener(new Steuerung(this, anwendung));
	cls.addActionListener(new Steuerung(this, anwendung));
	exit.addActionListener(new Steuerung(this, anwendung));
	about.addActionListener(new Steuerung(this, anwendung));
	
	loadb.addActionListener(new Steuerung(this, anwendung));
	saveb.addActionListener(new Steuerung(this, anwendung));
	runb.addActionListener(new Steuerung(this, anwendung));
	neuesfileb.addActionListener(new Steuerung(this, anwendung));
	clsb.addActionListener(new Steuerung(this, anwendung));
	
	addWindowListener(new WindowAdapter() {
	
    	public void windowClosing(WindowEvent event){
         
		     System.exit(0);
         
		 } // ende windowClosing
		 
    }); // ende WindowListener
	
/*
*
* Groesse festlegen und anzeigen
*
*/
	setSize(520,600);
	show();
	} // ende GUI
	
	public void paint(Graphics g) 
	{
	setTitle(titel + text); // Titel festlegen: Emulator ... und Name
							// des geladenen Programms
	super.paint(g);
	
	} // ende paint

} // ende class GUI

