/*
 *  ==============================================================
 *  DemoGridBagLayout.java : Create  ...
 * 
 *  Adapted from : Pantham S., Pure JFC Swing, 1999.
 *  Modified by : Mark Austin                          March, 2001
 *  ==============================================================
 */

import javax.swing.*;
import java.awt.*;

public class DemoGridBagLayout extends JApplet {

    Container container = null;

    public void init() {

        // 1. Get a handle on the applet's content pane.

        container = this.getContentPane();

        // 2. Set the container to the grid bag layout and
        // define a constraint object.

        GridBagLayout gridbag = new GridBagLayout();
        container.setLayout(gridbag);
        GridBagConstraints c = new GridBagConstraints();

        // 3. Common settings for constraint object instant variables.

        c.fill = GridBagConstraints.BOTH;

        // 4. Settings for button B1.

        c.insets = new Insets(5,5,5,5);
        c.gridx     = 0; c.gridy = 0;
        c.gridwidth = 2; c.gridheight = 2;
        c.weightx = 1.0; c.weighty = 1.0;
        makeButton("B1", gridbag, c);

        // 5. Settings for button B2.

        c.insets = new Insets(0,0,0,0);
        c.gridx     = 2; c.gridy = 0;
        c.gridwidth = 1; c.gridheight = 3;
        makeButton("B2", gridbag, c);

        // 6. Settings for button B3.

        c.gridx     = 0; c.gridy = 2;
        c.gridwidth = 1; c.gridheight = 1;
        c.weightx = 1.0; c.weighty=0.5;
        makeButton("B3", gridbag, c);

        // 7. Settings for button B4.

        c.gridx     = 1; c.gridy = 2;
        makeButton("B4", gridbag, c);
    }

    // 8. Define the function to create and add a button
    // according to the constraints.

    public void makeButton(String name,
                           GridBagLayout gridbag,
                           GridBagConstraints c) {
        JButton button = new JButton(name);
        gridbag.setConstraints(button, c);
        container.add(button);
    }
}
