package ohjausrak;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.BoxLayout;
import javax.swing.JRadioButton;
import javax.swing.border.CompoundBorder;
import javax.swing.border.LineBorder;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.Component;
import javax.swing.Box;
import javax.swing.ButtonModel;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.ButtonGroup;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;

/**
 * Pieni esimerkki ��nestys-ohjelmasta switch-lauseen demonstroimiseksi. *  
 * @author Vesa Lappalainen
 * @version 6.2.2011
 */
public class SwingAanestys extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    private final JLabel labelAihe = new JLabel("Onko ohjelmointi kivaa?");
    private final JPanel panelAanestys = new JPanel();
    private final JPanel panelValinta = new JPanel();
    private final JLabel lblValitse = new JLabel("Valitse");
    private final JRadioButton rb0 = new JRadioButton("Kyll\u00E4");
    private final JRadioButton rb1 = new JRadioButton("Ei");
    private final JRadioButton rb2 = new JRadioButton("En osaa sanoa");
    private final JButton buttonAanesta = new JButton("\u00C4\u00E4nest\u00E4");
    private final Component verticalStrut = Box.createVerticalStrut(20);
    private final ButtonGroup groupAanestys = new ButtonGroup();


    /**
     * Launch the application.
     * @param args Ei k�yt�ss�
     */
    public static void main(String[] args) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    SwingAanestys frame = new SwingAanestys();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }


    /**
     * Create the frame.
     */
    public SwingAanestys() {
        setTitle("\u00C4\u00E4nestys");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(100, 100, 251, 271);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        labelAihe.setFont(new Font("Arial", Font.BOLD, 19));
        
        contentPane.add(labelAihe, BorderLayout.NORTH);
        contentPane.add(panelAanestys, BorderLayout.CENTER);
        panelAanestys.setBorder(new EmptyBorder(20, 20, 20, 20));
        panelAanestys.setLayout(new BoxLayout(panelAanestys, BoxLayout.Y_AXIS));
        panelValinta.setToolTipText("Valitse \u00E4\u00E4nestett\u00E4v\u00E4 kohde");
        panelValinta.setFont(new Font("Arial", Font.BOLD, 15));
        panelValinta.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
        
        panelAanestys.add(panelValinta);
        panelValinta.setLayout(new BoxLayout(panelValinta, BoxLayout.Y_AXIS));
        
        panelValinta.add(lblValitse);
        groupAanestys.add(rb0);
        rb0.setHorizontalAlignment(SwingConstants.TRAILING);
        rb0.setSelected(true);
        rb0.setMnemonic('K');
        
        panelValinta.add(rb0);
        groupAanestys.add(rb1);
        rb1.setMnemonic('E');
        
        panelValinta.add(rb1);
        groupAanestys.add(rb2);
        rb2.setMnemonic('O');
        
        panelValinta.add(rb2);
        panelAanestys.add(verticalStrut);
        buttonAanesta.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                aanesta();
            }
        });
        
        panelAanestys.add(buttonAanesta);
        getRootPane().setDefaultButton(buttonAanesta);
    }

    /// Omat aliohjelmat
    
    /**
     * ��nestet��n sen perusteella mit� on valittuna
     */
    protected void aanesta() {
        ButtonModel b = groupAanestys.getSelection();
        char nappain = (char)b.getMnemonic();
        String kohde = "";
        switch (nappain) {
            case 'K': kohde = "Kyll�"; break;
            case 'E': kohde = "Ei"; break;
            case 'O': kohde = "En osaa sanoa"; break;
        }
        JOptionPane.showMessageDialog(null,"��nestit siis: " + kohde);
    }
    
}