package javacodebook.gui.dialog;

import java.awt.*;
import java.awt.event.*;

/**
 * @author Benjamin Rusch
 *
 * Der Dialog erscheint wenn versucht wird, über den Schließen-Button vom Fenster
 * die Anwendung zu beenden.
 * Da der Dialog modal ist, ist der Frame gesperrt solange der Dialog erscheint.
 */

public class DialogFrame  extends Frame {

    private Dialog dialog  = null;
    private Label dLabel = new Label("Wollen Sie wirklich die Anwendung beenden?");
    private Button yesButton = new Button("Ja");
    private Button noButton = new Button("Nein");
    private Button cancelButton = new Button("Abbrechen");

    /**
     * Konstruktor von DialogFrame.
     */
    public DialogFrame(String title) {
	super(title);

	//Dialog wird gebaut
	this.buildDialog();

	// Beim Klicken des Schließen-Buttons vom HauptFenster
	// wird der Dialog aufgerufen!
	this.addWindowListener(new WindowAdapter() {
	    public void windowClosing(WindowEvent we) {
			dialog.setVisible(true);
	    }
	});
    }

    /**
     * Hier wird der Dialog gebaut, und sämtliche ActionListener werden
     * an den Buttons registriert
     */
    private void buildDialog() {
	dialog = new Dialog(this, "Dialog", false);
	dialog.setLayout(new FlowLayout());
	dialog.add(dLabel);
	dialog.add(yesButton);
	dialog.add(noButton);
	dialog.add(cancelButton);
	dialog.setSize(280,100);

	// Wird "Yes" geklickt, wird das Programm beendet
	yesButton.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent ae) {
			System.exit(0);
	    }

	});

	// Wird "No" geklickt verschwindet der Dilaog, und das Frame ist wieder
	// focusierbar.
	noButton.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent ae) {
			dialog.dispose();
	    }
	});

	// Wird "Abbrechen" geklickt verschwindet der Dilaog auch, und das Frame 
	// ist wieder focusierbar.
	cancelButton.addActionListener(new ActionListener() {
	    public void actionPerformed(ActionEvent ae) {
			dialog.dispose();
	    }
	});
    }
}