// @topic T11708 Swing demo A10 -- GUI window with radio buttons, menus, and dialogs
// @brief class PanelWithTabs extends JPanel, JLabel. JTextField
/**
 * @author ik
 */

package pckg;

import javax.swing.JOptionPane;
import javax.swing.JDialog;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.BoxLayout;
import javax.swing.Box;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextField;
import java.beans.*; //Property change stuff
import java.awt.*;
import java.awt.event.*;

/*
 * PanelWithTabs.java requires these files:
 *   DialogViewOptions.java
 *   images/middle.gif
 */
public class PanelWithTabs
    extends JPanel
{
    JLabel mLabel;
    JButton mButOK;     // OK button
    JButton mButCancel; // Cancel button

    private JTextField textField;

    JFrame mFrame;
    String strTabOneTitle = "Tab One Title";
    String strTabTwoTitle = "Tab Two Title";
    String strTabThreeTitle = "Tab Three Title";
    DialogViewOptions mDialogViewOptions;

    /** Creates the GUI shown inside the mFrame's content pane. */
    public PanelWithTabs(JFrame aFrame, DialogViewOptions aDialogViewOptions)
    {
        super(new BorderLayout());
        mFrame = aFrame;
        mDialogViewOptions = aDialogViewOptions;

        //Create the components.
        JPanel tabOnePanel = new JPanel();
        JPanel tabTwoPanel = new JPanel();
        JPanel tabThreePanel = new JPanel();

        //Lay them out.
        Border padding = BorderFactory.createEmptyBorder(20, 20, 5, 20);
        tabOnePanel.setBorder(padding);
        tabTwoPanel.setBorder(padding);
        tabThreePanel.setBorder(padding);

        //Polpulate tabs
        textField = new JTextField(30);
        tabOnePanel.add(textField);
        //Ensure the text field always gets the first focus.
        addComponentListener(new ComponentAdapter()
        {
            public void componentShown(ComponentEvent ce)
            {
                textField.requestFocusInWindow();
            }
        });

        //Register an event handler for the text field
        textField.addActionListener(aDialogViewOptions);

        JTabbedPane tabbedPane = new JTabbedPane();
        tabbedPane.addTab(strTabOneTitle, null,
                          tabOnePanel,
                          strTabOneTitle); //tooltip text
        tabbedPane.addTab(strTabTwoTitle, null,
                          tabTwoPanel,
                          strTabTwoTitle); //tooltip text
        tabbedPane.addTab(strTabThreeTitle, null,
                          tabThreePanel,
                          strTabThreeTitle); //tooltip text

        add(tabbedPane, BorderLayout.CENTER);

        mLabel = new JLabel("A label", JLabel.CENTER);
        mLabel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        // push buttons
        mButOK = new JButton("OK");
        mButCancel = new JButton("Cancel");
        mButOK.addActionListener(aDialogViewOptions);
        mButCancel.addActionListener(aDialogViewOptions);

        //add(mLabel, BorderLayout.PAGE_END);

        JPanel bottomPanel = new JPanel();

        bottomPanel.add(mLabel);
        bottomPanel.add(mButOK);
        bottomPanel.add(mButCancel);
        add(bottomPanel, BorderLayout.PAGE_END);
    }//constructor PanelWithTabs

    /** Gets the text displayed by the text field. */
    public String getText()
    {
        return textField.getText();
    }

    /** Sets the text of the text field. */
    public void setText(String aText)
    {
        textField.setText(aText);
    }

}//class PanelWithTabs