import java.awt.Frame;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Button;
import java.awt.TextField;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

/**
 * A simple illustration of how to make GUIs using panels and
 * the basic layouts.
 *
 * @author Samuel A. Rebelsky
 * @version 1.0 of October 2000
 */
public class Fooey {
  Frame mainFrame;
  TextField mainData;
  Panel stuff;
  Panel numbers;
  Panel controls;

  /** Build everything */
  public Fooey() {
    mainFrame = new Frame("A Simple GUI");
    mainFrame.setSize(300,500);
    mainFrame.setLayout(new FlowLayout());

    mainData = new TextField("0000000") {
      public Dimension getPreferredSize() {
        return new Dimension(300,150);
      }
    };
    mainData.setSize(300,150);
    mainFrame.add(mainData);

    stuff = new Panel();
    stuff.setSize(300,350);
    stuff.setLayout(new FlowLayout());
    mainFrame.add(stuff);

    numbers = new Panel() {
      public Dimension getPreferredSize() {
        return new Dimension(200,200);
      }
    };
    numbers.setSize(200,200);
    numbers.setLayout(new GridLayout(3,3));
    stuff.add(numbers);

    for (int i = 1; i <= 9; i++) {
      Button b = new Button(Integer.toString(i));
      b.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
         mainData.setText(mainData.getText() + "X");
        }
      });
      numbers.add(b);
    }

    controls = new Panel();
    controls.setSize(100,200);
    controls.setLayout(new GridLayout(3,1));
    stuff.add(controls);

    controls.add(new Button("X"));
    controls.add(new Button("Y"));
    controls.add(new Button("Z"));

    mainFrame.show();
  } // Fooey()

  /** Go for it! */
  public static void main(String[] args) {
    new Fooey();
  } // main(String[])

} // class Fooey

