package javacodebook.gui.radio;

import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeListener;


/**
 * @author Benjamin Rusch
 *
 * Das RadioFrame besitzt zwei Checkboxes und ein paar Radiobuttons.
 * Ein Checkbox wird automatisch zum RadioButton, wenn sie in einer 
 * Checkboxgroup eingebunden ist. Es kann dann nur noch ein Feld ausgewählt 
 * werden.
 * Beim Klick auf den "Print" Button wird der Status auf der Konsole ausgegeben.
 */

public class RadioFrame  extends Frame {


    // Diese Checkboxes bleiben tatsächlich Checkboxes
    private Checkbox milk = null;
    private Checkbox sugar = null;

	// Diese Checkboxes werden später zu RadioButtons
    private CheckboxGroup group = new CheckboxGroup();
    private Checkbox male = null;
    private Checkbox female = null;
    private Button print = new Button("Print");

    /**
     * Konstruktor von RadioFrame.
     */
    public RadioFrame(String title) {
		super(title);
		setLayout(new FlowLayout());
	
		// Beim Klicken des Schließen-Buttons vom HauptFenster
		// wird das Programm beendet
		this.addWindowListener(new WindowAdapter() {
		    public void windowClosing(WindowEvent we) {
				System.exit(0);
		    }
		});
		
		buildCheckbox();
		buildRadiobuttons();
		add(print);
		print.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent ae){
						System.out.println("Auswahl: ");
						
						// Man kann den selektierten RadioButton 
						// über die CheckboxGroup bestimmen
						System.out.println("\t"
								+ group.getSelectedCheckbox().getLabel());
						// Bei Checkboxes fragt man den Status direkt ab.
						if(milk.getState())
							System.out.println("\tMilch");
							
						if(sugar.getState())
							System.out.println("\tZucker");
							
						}
						
					});
    }

    /**
     * Zwei Checkboxen werden gebaut und aufs Frame gelegt
     */
    private void buildCheckbox() {
		// Bei der einfachen Checkbox verhält sich alles sehr einfach!
		milk = new Checkbox("Milch");
		sugar = new Checkbox("Zucker");
		add(milk);
		add(sugar);
    }

    /**
     * Zwei Radiobuttons werden gebaut und aufs Frame gelegt
     */
    private void buildRadiobuttons() {
		// Eine Checkbox wird automatisch zum RadioButton, wenn eine
		// Checkboxgroup im Konstruktor mit übergeben wird.
		// Über den dritten Parameter wird die Vorbelegung festgelegt.
		male = new Checkbox("männlich", group, true);
		female = new Checkbox("weiblich", group, false);
		add(male);
		add(female);
    }
}