import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Compose
 extends WindowAdapter
 implements ActionListener
 {

//  +--------+
//  | Fields |-----------------------------------------------------
//  +--------+

  /** GUI fields */
  protected Frame frame;
  protected GridBagLayout grid;
  protected Label Gmail;
  protected TextField GUIto;
  protected TextField GUIcc;
  protected TextField GUIbcc;
  protected TextField GUIsubject;
  protected TextArea GUIBody;
  protected Button send;
  protected Button clear;
  protected Button quit;
  protected Container gui;
  protected Compose comp;
  protected Checkbox html;

  public Compose(Container gui){
    GridBagConstraints c = new GridBagConstraints();
    GridBagLayout grid = new GridBagLayout();
    gui.setLayout(grid);
    Gmail = new Label("GMail Compose Window");
    Label lTo = new Label("To:      ");
    Label lCc = new Label("CC:      ");
    Label lBcc = new Label("BCC:     ");
    Label lSubject = new Label("Subject: ");
    html = new Checkbox("Use HTML tags", false);
    GUIto = new TextField(50);
    GUIcc = new TextField(50);
    GUIbcc = new TextField(50);
    GUIsubject = new TextField();
    GUIBody = new TextArea();
    send = new Button("Send");
    clear = new Button("Clear");
    quit = new Button("Quit");
    send.addActionListener(this);
    clear.addActionListener(this);
    quit.addActionListener(this);
    c.anchor=GridBagConstraints.NORTH;
    c.gridx = 0;
    c.gridy = 0;
    c.fill=GridBagConstraints.BOTH;
    c.gridwidth=GridBagConstraints.REMAINDER;
    grid.setConstraints(Gmail, c);
    gui.add(Gmail);
    c.gridy = 1;
    c.gridwidth=1;
    grid.setConstraints(lTo, c);
    gui.add(lTo);
    c.gridx=1;
    c.weightx=1.0;
    c.gridwidth=GridBagConstraints.REMAINDER;
    grid.setConstraints(GUIto, c);
    gui.add(GUIto);
    c.gridy=2;
    c.gridx=0;
    c.gridwidth=1;
    c.weightx=0;
    grid.setConstraints(lCc, c);
    gui.add(lCc);
    c.gridx=1;
    c.weightx=1.0;
    c.gridwidth=GridBagConstraints.REMAINDER;
    grid.setConstraints(GUIcc, c);
    gui.add(GUIcc);
    c.gridy=3;
    c.gridx=0;
    c.gridwidth=1;
    c.weightx=0;
    grid.setConstraints(lBcc, c);
    gui.add(lBcc);
    c.gridx=1;
    c.weightx=1.0;
    c.gridwidth=GridBagConstraints.REMAINDER;
    grid.setConstraints(GUIbcc, c);
    gui.add(GUIbcc);
    c.gridy=4;
    c.gridx=0;
    c.gridwidth=1;
    c.weightx=0;
    grid.setConstraints(lSubject, c);
    gui.add(lSubject);
    c.gridx=1;
    c.weightx=1.0;
    c.gridwidth=GridBagConstraints.REMAINDER;
    grid.setConstraints(GUIsubject, c);
    gui.add(GUIsubject);
    c.gridy=5;
    c.gridx=0;
    grid.setConstraints(html, c);
    gui.add(html);
    c.gridy=6;
    c.weighty=1.0;
    c.gridwidth = GridBagConstraints.REMAINDER;
    grid.setConstraints(GUIBody, c);
    gui.add(GUIBody);
    Panel gui2 = new Panel();
    GridLayout grid2 = new GridLayout(1,3, 2, 2);
    gui2.setLayout(grid2);
/**    c.gridy=0;
    c.gridx=0;
    c.weighty=0;
    c.fill=GridBagConstraints.NONE;
    c.anchor=GridBagConstraints.SOUTH;
    grid2.setConstraints(clear,c);
   */
    gui2.add(clear);
    /** c.gridx=1;
    grid2.setConstraints(quit, c);*/
    gui2.add(quit);
   /** c.gridx=2;
    grid2.setConstraints(send, c);*/
    gui2.add(send);

    c.gridy=7;
    c.gridx=1;
    c.weighty=0;
    c.weightx=0;
    c.anchor=GridBagConstraints.SOUTHEAST;
    grid.setConstraints(gui2, c);
    gui.add(gui2);
  }

//  +----------------+
//  | Event Handlers |-------------------------------------------------
//  +----------------+
  public void windowClosing(WindowEvent event){
    frame.dispose();
    System.exit(0);
  }

  public void actionPerformed(ActionEvent evt){
    String command = evt.getActionCommand();
    if (command.equals("Quit")) {
      frame.dispose();
      System.exit(0);
    }
    else if (command.equals("Clear")){
      //Stub
      }
    else if (command.equals("Send")){
      frame.dispose();
      System.exit(0);

    }
  }
  

  public static void main(String[] args){
   Frame frame = new Frame("Test");
   Panel gui = new Panel();
   new Compose(gui);
   frame.add(gui);
   frame.pack();
   frame.show();
 }
}
